RNN循环神经网络学习——概述
循环神经网络(Recurrent Neural NetWork,RNN)是一种将节点定向连接成环的人工神经网络,其内部状态可以展示动态时序行为。
循环神经网络的主要用途是处理和预测序列数据。循环神经网络最初就是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上来看,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出。也就是说,循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包含输入层的输出,还包括上一时刻隐藏层的输出。
如图为典型的RNN结构示意图。RNN主体结构的输入,除了来自输入层的xt 还有一个循环的边来提供上一时刻的隐层状态St。在每一时刻,RNN的模块在读取了Xt和St-1之后会产生新的隐藏状态St,并产生本时刻的输出Ot。RNN当前的状态是由上一时刻的状态St-1和当前的输入Xt共同决定的。对于一个序列数据,可以将这个序列上不同时刻的数据依次传入循环神经网络的输入层;而输出既可以是对序列下一时刻的预测,也可以是对当前时刻信息的处理结果。循环神经网络要求每一时刻都有一个输入,但是不一定每个时刻都有输出。
网络在t时刻接收到输入Xt之后,隐藏层的值是St,输出值是Ot。St的值不仅仅取决于St,还取决于St-1。可以用下面的公式来表示。
Ot=g(V*St) 式1
St=f(U*Xt+W*St-1) 式2
式1是输出层的计算公式,输出层是一个全连接层,它的每个节点都和隐藏层的每个节点相连。其中V是输出层的权重矩阵,g是激活函数。
式2是隐藏层的计算公式,它是循环层。其中U是输入x的权重矩阵,W是上一次的值St-1作为这一次输入的权重矩阵,f是激活函数。
由上面两个式子可以得出,循环层和全连接层的区别就是循环层多了一个权重矩阵W。
循环神经网络的训练算法:
如果将RNN进行网络展开,那么参数W、U、V是共享的,并且在使用梯度下降算法时,每一步的输出不仅仅依赖于当前步网络的状态,还依赖于前面若干步网络的状态。采用BPTT(Back Propagation Trough Time)沿时间反向传播算法进行训练,步骤如下:
(1)前向计算每个神经元的输入值
(2)反向计算每个神经元的误差值,包括两个方向:一个是沿时间爱你的反向传播,计算每个时刻的误差项;另一个是将误差项向上一层传播。
(3)计算每个权重的梯度。
(4)用梯度下降的误差后向传播算法更新权重。
需要注意:理论上,RNN可以支持任意长度的序列。然而,在实际训练过程中,如果序列过长,一方面会导致训练时出现梯度消失和梯度爆炸的问题;另一方面,展开后的循环神经网络会占用过大的内存。所以,实际中会规定一个最大长度,当序列长度超过规定长度后会对序列进行截断。
循环神经网络的变种
(1)双向循环神经网络(BRNN)
双向循环神经网络的基本思想是每一个训练序列向前和向后分别是两个循环神经网络,而且两个网络都连接着一个输出层。这个结构给输出层提供输入序列中每一个点的完整的过去和未来的上下文信息。
双向循环神经网络由两个独立的循环神经网络叠加在一起组成的,其输出也是由这两个循环神经网络的输出拼接而成。下图为一个双向RNN结构。
在任一时刻,输入会同时提供给这两个方向相反的循环神经网络,两个独立的网络独立进行计算,各自产生该时刻的新状态和输出;而双向循环神经网络的最终输出是这两个单向循环神经网络输出的简单拼接。两个循环神经网络除方向不同外,其余结构完全对称。每一个网络中的循环体可以自由选用任意机构,如RNN或LSTM网络。
(2)深层循环神将网络
深层循环神将网络是指为了增强模型的表达能力,在网络中设置多个循环层,将每层循环神经网络的输出传给下一层进行处理。
RNN循环神经网络学习——概述的更多相关文章
- TensorFlow框架(6)之RNN循环神经网络详解
1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- Recurrent Neural Networks(RNN) 循环神经网络初探
1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
- Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例
CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...
- 关于 RNN 循环神经网络的反向传播求导
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...
- 4.5 RNN循环神经网络(recurrent neural network)
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1 RNN循环神经网络 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- 神经网络6_CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId ...
随机推荐
- bootstrap如何去除自带的样式----导航栏中的菜单实现平滑的过渡到对应的菜单区域-------动态跟换模态框中的内容
问题1:如何去除bootstap中css中自带的overflow:hidden这个样式 今天遇见在bootstap中轮播图上的 附带图 片不能够显示出来,图片始终有一部分的高度 被隐藏了 后来通 ...
- C# 深入分析 GC 处理机制
引用地址:https://www.cnblogs.com/nele/p/5673215.html GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年 ...
- 攻防世界pwn之新手区
涉及的工具有 Ubuntu 16.04 pwntools IDA gdb-peda 1.get_shell 连接就给flag,可以直接用nc连接,然后输入ls查看里面的目录,发现有名字叫flag文件, ...
- luoguP3975 [TJOI2015]弦论
题意 第一问有一个经典做法:学习笔记 对于第二问,其实就是对于一个状态的所有串,第一问看成一个,第二问看成多个. code: #include<bits/stdc++.h> using n ...
- 获取Kafka每个分区最新Offset的几种方法
目录 脚本方法 Java 程序 参考资料 脚本方法 ./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhos ...
- python3 消耗CPU的性能,使CPU满载(可以设置进程名称)
需要安装库:setproctitle 1.1.10,设置进程名称,测试操作系统centos 7.0 # -*- coding: utf-8 -*- from multiprocessing im ...
- python Condition
import threading # 必须要使用condition的例子 # class XiaoAi(threading.Thread):# def __init__(self, lock):# s ...
- div+css画一个小猪佩奇
用DIV+CSS画一个小猪佩奇,挺可爱的,嘻嘻. HTML部分(全是DIV) <!-- 小猪佩奇整体容器 --> <div class="pig_container&quo ...
- Visual Studio 2019 (VS2019)正式版安装 VisualSVN Server 插件
VS2019 正式版最近刚刚推出来,目前 Ankhsvn 还不支持,它最高只支持 VS2017,全网搜索了一下,也没有找到.在 Stackoverflow 上看了一下,找到这篇问答: 自己按照这种方法 ...
- k8s修改pod的hosts文件
1.在1.7版本后使用HostAliases修改pod的hosts文件.该文件由kubelet管理 在deployment的yaml文件中添加在pod template 的spec里面即可: apiV ...