原文来自知乎专栏NLP进阶之路,作者韦伟。
以下文章是摘录了原文部分内容的学习笔记,侵删。

循环神经网络(Rerrent Neural Network)

RNN是神经网络的一种,RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息。其中,序列特性包括时间顺序,逻辑顺序等其他顺序。
例如:I like eating apple ! / The Apple is a great company !
如果要给apple打Label,那么第一个apple是一种水果,第二个apple是苹果公司,如果单独看apple这个单词,是很难准确地确定它的Label的,这时候我们就需要结合上下文来确定apple的Label,于是就有了循环神经网络。

循环神经网络的结构及原理

如果不看W,只看X,U,S,V,O,这幅图展开以后就变成了
, 这就是全连接神经网络,其中X是一个向量,作为输入层,U是输入层到隐藏层的参数矩阵,S是隐藏层的向量,V是隐藏层到输出层的参数矩阵,O是输出层的向量。
那么右边的W又是什么呢,把第一幅图打开之后,是这样的:
举个例子,有一句话是,I love you,那么在利用RNN做一些事情时,比如命名实体识别,上图中的 |Xt-1| 代表的就是I这个单词的向量, |Xt|代表的是love这个单词的向量, |Xt+1| 代表的是you这个单词的向量,以此类推,我们注意到,上图展开后,W一直没有变,W其实是每个时间点之间的权重矩阵,我们注意到,RNN之所以可以解决序列问题,是因为它可以记住每一时刻的信息,每一时刻的隐藏层不仅由该时刻的输入层决定,还由上一时刻的隐藏层决定,公式如下,其中Ot代表t时刻的输出, |St| 代表t时刻的隐藏层的值:

值得注意的是,在整个训练过程中,每一时刻所用的都是同样的W。

LSTM

以上是最基础版本的RNN,我们可以看到,每一个时刻的隐藏状态都不仅由该时刻的输入决定,还取决于上一时刻的隐藏层的值,如果一个句子很长,到句子末尾时,他将记不住这个句子的开头的详细内容,而LSTM通过他的“门控装置”有效地缓解了这个问题,这也就是为什么我们现在都在使用LSTM而非普通的RNN。打个比喻吧,普通RNN就像一个乞丐,路边捡的,别人丢的,什么东西他都想要,什么东西他都不嫌弃,LSTM就像一个贵族,没有身份的东西他不要,他会精心挑选符合自己身份的物品。
由于LSTM是RNN的一种变体,是更高级的RNN,所以二者的本质是一样的:每个时刻都会把隐藏层的值存下来,到下一时刻的时候再拿出来用,这样就保证了,每一时刻含有上一时刻的信息,如图,我们把存每一时刻信息的地方叫做Memory Cell,即记忆细胞。都是,和RNN只有中间的Memory Cell不同,LSTM的Memory Cell附近多了三个门,控制信息的进出。

依次来解释一下这三个门:

  1. Input Gate:中文是输入门,在每一时刻从输入层输入的信息会首先经过输入门,输入门的开关会决定这一时刻是否会有信息输入到Memory Cell。
  2. Output Gate:中文是输出门,每一时刻是否有信息从Memory Cell输出取决于这一道门。
  3. Forget Gate:中文是遗忘门,每一时刻Memory Cell里的值都会经历一个是否被遗忘的过程,就是由该门控制的,如果打卡,那么将会把Memory Cell里的值清除,也就是遗忘掉。
    按照上图的顺序,信息在传递的顺序,是这样的:
    先经过输入门,看是否有信息输入,再判断遗忘门是否选择遗忘Memory Cell里的信息,最后再经过输出门,判断是否将这一时刻的信息进行输出。

LSTM内部结构

对于LSTM我们着重讨论其中一个时间点的内部结构

其中的代表一个激活函数,LSTM里常用的激活函数有两个,一个是tanh,一个是sigmoid。另外,a是输出,cell是记忆细胞,Z 是最为普通的输入,Z 是通过该时刻的输入 Xt和上一时刻存在memory cell里的隐藏层信息 向量拼接,再与权重参数向量 W点积,得到的值经过激活函数tanh最终会得到一个数值,也就是 Z ,注意只有 Z 的激活函数是tanh,因为 Z是真正作为输入的,其他三个都是门控装置。

再来看 Zi ,input gate的缩写i,所以也就是输入门的门控装置, Zi 同样也是通过该时刻的输入 Xt 和上一时刻隐藏状态,也就是上一时刻存下来的信息 向量拼接,在与权重参数向量 Wi 点积(注意每个门的权重向量都不一样,这里的下标i代表input的意思,也就是输入门)。得到的值经过激活函数sigmoid的最终会得到一个0-1之间的一个数值,用来作为输入门的控制信号,另外两个门控装置都是这个原理。

深度学习笔记——循环神经网络RNN/LSTM相关推荐

  1. 深度学习~循环神经网络RNN, LSTM

    目录 1. 循环神经网络RNN 1.1 RNN出现背景 1.2 RNN概念 2. LSTM 2.1 LSTM出现背景 2.2 LSTM结构 参考 1. 循环神经网络RNN 1.1 RNN出现背景 pr ...

  2. 水很深的深度学习-Task05循环神经网络RNN

    循环神经网络 Recurrent Neural Network 参考资料: Unusual-Deep-Learning 零基础入门深度学习(5) - 循环神经网络 史上最小白之RNN详解_Tink19 ...

  3. NLP学习笔记-循环神经网络RNN、情感分类、LSTM(二)

    循环神经网络和自然语言处理介绍 1. 文本的tokenization 1.1 概念和工具的介绍 tokenization就是通常所说的分词,分出的每一个词语我们把它称为token. 常见的分词工具很多 ...

  4. 深度学习 3 循环神经网络 RNN Recurrent Neural Networks

    RNNs的目的使用来处理序列数据.在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的.但是这种普通的神经网络对于很多问题却无能无力.例如,你要预测句子 ...

  5. 深度学习原理-----循环神经网络(RNN、LSTM)

    系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...

  6. 深度学习之循环神经网络(11-a)LSTM情感分类问题代码

    深度学习之循环神经网络(11-a)LSTM情感分类问题代码 1. Cell方式 代码 运行结果 2. 层方式 代码 运行结果 1. Cell方式 代码 import os import tensorf ...

  7. 深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战

    深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战 1. LSTM模型 2. GRU模型  前面我们介绍了情感分类问题,并利用SimpleRNN模型完成了情感分类问题的实战,在介绍完更为强 ...

  8. 深度学习之循环神经网络(9)LSTM层使用方法

    深度学习之循环神经网络(9)LSTM层使用方法 1. LSTMCell 2. LSTM层  在TensorFlow中,同样有两种方式实现LSTM网络.既可以使用LSTMCell来手动完成时间戳上面的循 ...

  9. 深度学习之循环神经网络(8)长短时记忆网络(LSTM)

    深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结  循环神经网络除了训练困难,还有一个更严重的问 ...

最新文章

  1. 【OpenCV】图像代数运算:平均值去噪,减去背景
  2. python圣诞节快乐_用python让大白对你说圣诞快乐
  3. vue和layui哪个更好用_幕布和Mind+思维导图哪个更好用?
  4. DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案
  5. python爬取小说内容_使用python爬取小说全部内容
  6. 用C#编写的代码经C#编译器后,并非生成本地代码而是生成托管代码
  7. 文本的数据导入到数据库中 mysql
  8. chmod命令详解使用格式和方法
  9. CRF(条件随机场) 学习总结
  10. 谷歌浏览器开发者工具解析
  11. python中逻辑运算_Python 逻辑运算之 'and' 和 'or'
  12. 如何c语言读取文件中的内容,急急急!!!如何读取文件中的相关内容
  13. C语言程序段的定义、实际应用分析
  14. 将p12证书导入java
  15. Tomcat环境配置 以及报错500的问题
  16. 桌面版 Linux 为什么打不过 Window?Linus 现身说法
  17. 【转贴】龙芯生态产品和解决方案巡展(第四篇)——存储
  18. vue3获取当前日期和时间
  19. 南柯服务器压力,性能测试中AIX服务器资源监控与瓶颈分析-2
  20. c语言中a lt b a b是什么意思,C语言中c=ab?a:b是什么意思

热门文章

  1. watir-webdriver使用过程中异常
  2. MANIFEST.MF
  3. minifilter 与用户态的通信
  4. Android 布局管理器 之 TableLayout
  5. httpclient在获取response的entity时报异常
  6. 深入理解BFC和Margin Collapse
  7. VC++6.0中使用GDI+绘图(转载)
  8. Transaction rolled back because it has been marked as rollback-only 原因 和解决方案
  9. Aspose.Words操作Word.PDF,让图片和文本垂直居中,水平居中解决方案
  10. layui table异步调用数据的时候,数据展示不出来现象解决方案