学习路线参考:
https://blog.51cto.com/u_15298598/3121189
https://github.com/Ailln/nlp-roadmap
https://juejin.cn/post/7113066539053482021
本节学习使用工具&阅读文章:
https://zybuluo.com/hanbingtao/note/541458
https://blog.csdn.net/HiWangWenBing/article/details/121547541
https://easyai.tech/ai-definition/lstm/
https://zhuanlan.zhihu.com/p/518848475
-
RNN-概述
RNN跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。也就是说,RNN有记忆前文的能力。RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息。
RNN结构 -
RNN-隐藏层
从上面的图来看,忽视右边W的部分,左边的部分就是普通的全连接神经网络。此时,隐藏层的输入为
,输出为
。
引入
后,隐藏层输出的值会与
相乘,加入下一次的隐藏层输入。假设本次隐藏层执行的是第
次循环,那么此次的输出会被加入到第
次循环中去。此时,隐藏层的输出变为:
。
反向传播时,
和
的权重都会被更新。
-
RNN-缺陷
容易出现梯度消失和梯度爆炸
由于梯度消失,导致RNN网络的时间序列不能太长,无法支持长序列,只有短期记忆
只利用了上文的信息,而没有利用下文的信息
RNN网络不同词对当前输出的影响效果完全取决于时间,离当前时间越远的隐藏层的输出,对当前隐藏层的输出的影响越小。RNN无法根据不同词本身的重要性来对当前的输出产生影响
卷积层的计算原理是池化核在输入矩阵上进行滑动,按照池化规则进行计算。通常池化核的计算方法一般有最大值池化和平均值池化两种。
-
LSTM-长短期记忆
长短期记忆网络是RNN的一种变体,通过门控制将短期记忆与长期记忆结合起来,且一定程度上解决了梯度消失的问题。
如果把RNN中的S和W看作是同一部分,那么结构图如下所示:
结构图中间循环的模块在RNN中的结构非常简单,只有一个线性层,且只有一种状态。
LSTM对中间的循环部分(隐藏层部分)进行改变,使用了四个线性层,表示三个不同的状态。
LSTM结构 -
LSTM-结构分析
图例黄色:代表线性层
粉色:对位操作。矩阵之间按对应位置进行运算
-
箭头:信息的传递、汇合、复制
层内结构- 黄色:细胞状态,LSTM 的关键。细胞状态有点像传送带。它贯穿整个链条,只有一些次要的线性交互作用。信息很容易以不变的方式流过。
- 紫色:隐层状态,受门控制而选择向细胞状态添加或移除信息。
-
LSTM-门结构
-
遗忘门
遗忘门(Sigmoid函数)的输出在0和1之间,其输出与
对位相乘。因此,当某一位信息为0时,
对应那一位的信息就消失;而值在0到1之间,对应位的信息保留一部分;值为1的时候,对应的信息完整的保留。
- 计算公式:
,
表示两个矩阵进行拼接。
- 计算公式:
-
更新门
更新门左半部分和遗忘门完全相同。右半部分的激活函数是
函数,该函数的输出在[-1,1]之间,可以看作是新的输入带来哪些信息。左右两部分首先对位相乘,表示对新的信息有选择的保留。随后将新信息加入原本的
,完成了对信息的更新。
- 计算公式:
- 计算公式:
-
输出门
输出门首先经过
,表示输出哪些内容,其结果与经过tanh的
对位相乘,作为隐藏层本次的输出。
- 计算公式:
- 计算公式:
-