本文是读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和递归神经网络的初学者指南的更多相关文章

  1. 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)

    摘要 这篇文章提供了一个关于递归神经网络中某些概念的指南.与前馈网络不同,RNN可能非常敏感,并且适合于过去的输入(be adapted to past inputs).反向传播学习(backprop ...

  2. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

    递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...

  3. 递归神经网络(RNN)简介(转载)

    在此之前,我们已经学习了前馈网络的两种结构--多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫.但是对于一些有明显的 ...

  4. TensorFlow(十一):递归神经网络(RNN与LSTM)

    RNN RNN(Recurrent Neural Networks,循环神经网络)不仅会学习当前时刻的信息,也会依赖之前的序列信息.由于其特殊的网络模型结构解决了信息保存的问题.所以RNN对处理时间序 ...

  5. 斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...

  6. lecture7-序列模型及递归神经网络RNN

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  7. Java多线程初学者指南系列教程

    转自:http://developer.51cto.com/art/200911/162925.htm 51cto 本系列来自NokiaGuy的“真的有外星人吗”博客,系列名称为<Java多线程 ...

  8. lecture7-序列模型及递归神经网络RNN(转载)

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  9. cs224d 自然语言处理作业 problem set3 (一) 实现Recursive Nerual Net Work 递归神经网络

    1.Recursive Nerual Networks能够更好地体现每个词与词之间语法上的联系这里我们选取的损失函数仍然是交叉熵函数 2.整个网络的结构如下图所示: 每个参数的更新时的梯队值如何计算, ...

随机推荐

  1. 【JavaWeb】防止表单的重复提交

    https://www.cnblogs.com/yfsmooth/p/4516779.html 看了以下别人给的总结: 客户端上防止提交: 1.js控制阻止 2.设置HTTP报头,控制表单缓存,使得所 ...

  2. 【转】异步编程 In .NET

    概述 在之前写的一篇关于async和await的前世今生的文章之后,大家似乎在async和await提高网站处理能力方面还有一些疑问,博客园本身也做了不少的尝试.今天我们再来回答一下这个问题,同时我们 ...

  3. PCL-安装

    1.安装定期更新维护的PCL开发包. 通过PPA支持的Ubuntu系统,安装命令为: sudo add-apt-repository ppa:v-launched-jochen-sprickerhof ...

  4. JavaWeb(一)-Servlet中的Config和Context

    一.ServletConfig对象 1.1获取一个servletConfig对象 1)通过初始化方法获得一个servletconfig 2)通过继承父类(GenericServlet.)得到一个ser ...

  5. linux系统下部署DNS反向解析

    DNS服务概述 DNS(Domain Name System)域名系统,能够提供域名与IP地址的解析服务. 反向解析 反向解析是从IP地址到域名的解析过程.主要作用于服务器的身份验证. 部署反向解析 ...

  6. 软件光栅器实现(四、OBJ文件加载)

    本节介绍软件光栅器的OBJ和MTL文件加载,转载请注明出处. 在管线的应用程序阶段,我们需要设置光栅器所渲染的模型数据.这些模型数据包括模型顶点的坐标.纹理.法线和材质等等,可以由我们手动编写,也可以 ...

  7. java构建树形菜单递归工具类

    1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...

  8. java解析json数据用到的jar包

    百度云连接: https://pan.baidu.com/s/1iuQCc7uBO5XtAsNn6hwCew

  9. 关于 this 关键字的使用

    package com.jsti.guiyang_01; /* 自定义Phone类 this关键字 代表当前正在调用这个方法(访问成员变量)的对象(实例) 1.在setxxx方法中用来区分成员变量和局 ...

  10. Web browse的发展演变

    Web browse 译为中文是网络浏览器或网页浏览器. Web浏览器如今可谓遍地开花,无论你最终选择了什么浏览器,你可能都会举得他们的功能性想当然的,但是你们可能不知道这些Web浏览器是20年发展的 ...