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.整个网络的结构如下图所示: 每个参数的更新时的梯队值如何计算, ...
随机推荐
- java之路 数据类型-常量
class Demo1{ public static void main(String[] args){ //数据类型 类名 = 初始值 int age = 10; int age1 = 20; Sy ...
- canvas简易画板。
在学canvas的时候,想到可以做一个自己用来画画的简易画板,加上canvas的基础都已经学完,便尝试做了一个画板.如图 1.获取标签. var c=document.getElementById(' ...
- PID25 / 合并果子 ☆
这里用到了STL里面的priority_queue,我也不是很精通基本上属于现学现卖阶段,http://www.cnblogs.com/flyoung2008/articles/2136485.htm ...
- Eclipse neon 4.6 安装tomcat
问题: Eclipse neon 4.6并没有内置Tomcat,所以当我产生想要导入.war,并部署到服务器时,会看到创建服务处是下面的情况: 也就是说,没有tomcat服务可以选择:为此我需配置To ...
- final,static,abstract
一.final 1.可以修饰属性,表示常量,其值在运行期间不允许改变.常量必须赋初始值,初始值可以在声明出,构造方法的任意一个地方赋 优点:增强程序的可读性,可维护性 2.可以修饰方法,表示该方法不能 ...
- arduino 引脚作为输入时的不稳定 解决方案
问题描述: arduino引脚作为输入状态时,高低电平不稳定 出现的原因: arduino 引脚为输入时,引脚电平处于悬空状态,容易受外部电荷信号等干扰 解决的方案: 再程序配置为输入状态后 使用下拉 ...
- web安全系列1:入侵的途径
大家好,接下来的很长一段时间我都会介绍和web安全有关的知识,欢迎大家关注和转发. 话不多说,我们首先来看看今天的主题----入侵的途径.当然,今天介绍的都是针对web网站的常用手法和技巧. 不可否认 ...
- windows 子系统 linux wsl 开启ssh 服务
原因 windows自带的终端操作丑陋,习惯xshell的操作 步骤 1.关闭windows自带的ssh服务,这个占用了22端口 2.wsl 安装ssh服务(使用的是ubuntu) sudo apt ...
- python PyInstaller 库
https://www.cnblogs.com/gopythoner/p/6337543.html https://www.cnblogs.com/duan-qs/p/6548875.html htt ...
- nmap 介绍
原文地址:http://drops.wooyun.org/tips/2002 原文地址:http://infotechbits.wordpress.com/2014/05/04/introductio ...