LSTMs和递归神经网络的初学者指南
本文是读A Beginner's Guide to LSTMs and Recurrent Neural Networks的个人摘要。
递归网络 Recurrent nets
递归网络是一种人工神经网络,用于识别数据序列中的模式,如文本、基因组、手写、口语或来自传感器、股票市场和政府机构的数字时间序列数据。这些算法考虑了时间和序列,它们都有时间维度。
引申阅读: attention mechanism, memory networks
RNN
前馈网络
在RNN前,已经有前馈神经网络了:通过有监督的学习,输出将是一个标签,一个应用于输入的名称。也就是说,他们将原始数据映射到类别,识别可能会发出信号的模式,例如,输入图像应该被标记为“猫”或“大象”。

训练过的前馈网络可以接受任意随机的数据集,但是没有时间顺序的概念,比如数据集第一张照片为猫,并不会影响它对第二张照片的分类结果。
递归网络
在早些时候由Elman提出的simple recurrentmoxing, BTSXVPE为输入,context units则代表了前一时刻的输出。hidden units则用来储存这种跨越多个时间步骤的时间序列信息。 下面的过程可以用公式表为:
\[
h_{t} = \varnothing (W_{X_{t}} + Uh_{t-1})
\]
时间步长t处的隐藏状态是h_t。它是输入在同一时间步骤的函数。x_t,由权矩阵修改W(就像我们使用的前馈网)添加到前一个时间步骤的隐藏状态。h_t-1乘以它自己的隐藏状态到隐藏状态矩阵。U,也称为转移矩阵,类似于马尔可夫链。权重矩阵是一种滤波器,它决定了对当前输入和过去隐藏状态的重视程度。它们产生的错误将通过反向传播返回,并用于调整其权重,直到误差不能降低。

BPTT
记住,递归网的目的是准确地分类顺序输入。我们依靠误差和梯度下降的反向传播来做到这一点。
前向网络中的反向传播通过每个隐层的输出、权值和输入从最终误差向后移动,通过计算它们的偏导数,为误差的一部分分配权重责任-∂E/∂w或它们之间的变化率之间的关系。这些导数然后被我们的学习规则,梯度下降,调整权向上或向下,任何方向减少误差。
递归网络依赖于反向传播的扩展,称为逆传时间,或BPTT.在这种情况下,时间只是简单地用一个定义明确的、有序的计算序列来表示,这些计算将一个时间步骤连接到另一个时间步骤,这是所有反向传播都需要工作的。
神经网络,无论是递归的还是非递归的,都是简单的嵌套复合函数,如f(g(h(x)))。添加时间元素只扩展了用链式规则计算导数的函数序列。
truncated BPTT
截断BPTT是完全BPTT的近似,这是长序列的首选,因为完整BPTT的每个参数更新的前向/后向代价在许多时间步骤中变得非常高。缺点是,由于截断,梯度只能返回到目前为止,因此网络无法学习与完整BPTT一样长的依赖关系
LSTMS 和 GRUS
梯度消失和梯度爆炸
由于深层神经网络的层数和时间步长通过乘法相互关联,导数容易消失或爆炸。梯度爆炸通过截断(truncated BPTT ?)或压缩可以解决。梯度消失则比较困难了,因此LSTM应运而生。
LSTM
LSTM 引入了门控单元,信息可以存储在单元格中、写入单元格或从单元格中读取,就像计算机内存中的数据一样。单元格通过打开和关闭的门来决定存储什么,以及何时允许读取、写入和擦除。

从底部开始,三重箭头显示信息在多个点流入单元格的位置。现在的输入和过去的单元状态的组合不仅提供给单元本身,还提供给它的三个门中的每一个,这将决定如何处理输入。
黑点是门本身,它们分别决定是否让新的输入进入,擦除当前的单元状态,以及/或让该状态在当前的时间步骤中影响网络的输出。S_c是内存单元格的当前状态,并且g_y_in是它的当前输入。请记住,每个门都可以打开或关闭,它们将在每一步重新组合它们的开放和关闭状态。单元格可以忘记其状态,也可以不;可以被写入,也可以不;可以在每个时间步骤中读取,也可以在每个时间步骤中读取,这些流在这里表示。
simple rnn 与 LSTM处理流程的对比

GRUS
门控递归单元(GRU)基本上是没有输出门的LSTM,因此,在每个时间步骤中,它都会将内容从其存储单元完全写入到较大的网中。

LSTMs和递归神经网络的初学者指南的更多相关文章
- 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)
摘要 这篇文章提供了一个关于递归神经网络中某些概念的指南.与前馈网络不同,RNN可能非常敏感,并且适合于过去的输入(be adapted to past inputs).反向传播学习(backprop ...
- 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)
递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...
- 递归神经网络(RNN)简介(转载)
在此之前,我们已经学习了前馈网络的两种结构--多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫.但是对于一些有明显的 ...
- TensorFlow(十一):递归神经网络(RNN与LSTM)
RNN RNN(Recurrent Neural Networks,循环神经网络)不仅会学习当前时刻的信息,也会依赖之前的序列信息.由于其特殊的网络模型结构解决了信息保存的问题.所以RNN对处理时间序 ...
- 斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- lecture7-序列模型及递归神经网络RNN
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- Java多线程初学者指南系列教程
转自:http://developer.51cto.com/art/200911/162925.htm 51cto 本系列来自NokiaGuy的“真的有外星人吗”博客,系列名称为<Java多线程 ...
- lecture7-序列模型及递归神经网络RNN(转载)
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- cs224d 自然语言处理作业 problem set3 (一) 实现Recursive Nerual Net Work 递归神经网络
1.Recursive Nerual Networks能够更好地体现每个词与词之间语法上的联系这里我们选取的损失函数仍然是交叉熵函数 2.整个网络的结构如下图所示: 每个参数的更新时的梯队值如何计算, ...
随机推荐
- git 提交代码操作
1.修改1分支后 git add git commint2.切换到本地分支git checkout local-5.0git remote update 更新远程仓库3.git pull origin ...
- tp3
入口文件:index.php目录结构:核心,Thinkphp 公共资源,public jq 上传的图片等 应用目录,application 房模块 common:基于模块的公共目录,公共函数命名:类: ...
- session随笔
·由于cookie中不能保存很多信息,于是Session出现来完成这个功能. ·Session的作用就是在服务器保存一些保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie, ...
- 批处理-Java JDK环境变量配置
setx /M JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131" setx /M CLASSPATH ".;%%JAVA_HO ...
- ubuntu18.04静态ip设置
1.配置文件 vi /etc/netplan/-cloud-init.yaml network: ethernets: enp129s0f0: addresses: [] dhcp4: true op ...
- fortran语言调用fortran写的dll
环境:vs2013+IVF 2011 有时候想把fortran写的常用的函数编译为DLL,以供不同的fortran exe调用,这时候应该怎样做呢?[参考 彭国伦老师 fortran95 程序设计 书 ...
- CNN算法解决MNIST数据集识别问题
网络实现程序如下 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 用于设置将记 ...
- Timer of STM32
下面是STM32得定时器程序,分两个文件Timer.c和Timer.h /*************************************************************** ...
- docker容器下mysql更改WordPress的site address和home(URL)------局域网
先简单介绍下,用docker安装的WordPress,mysql是在docker容器中的,并未在Ubuntu(我把WordPress是安装Ubuntu系统上),即WordPress和Ubuntu是独立 ...
- lua-01
ctrl + shift + L 多行编辑 ctrl + D 继续向下选中下一个相同的文本 Alt + F3 选中所有相同所选中德文本 =>Lua的快捷键 回调代码: function fact ...