LSTM原理

  • CNN卷积神经网络 应用:图像,视频
  • RNN 递归神经网络 应用:NLP

1RNN结构

  • one to one
比如输入一张图片,它会给我们输出是猫还是狗
  • one to many
比如输入一张图片,给出一些列图片描述
  • many to one
比如文本分析,给出文本是积极还是消极的
  • many to many (输出 与 输入 不定长)
比如 聊天机器人
  • many to many (输入 与 输出定长)

2.LSTM原理

  • LSTM是升级版的RNN,LSTM解决了RNN无法解决长期以来问题,输出前面很长一段序列有关的问题。LSTM相比RNN添加了三个门:遗忘门,输入门,输出门。
遗忘门:决定从细胞状态中丢弃什么信息
输入门:决定让多少新的信息加入细胞状态,这一步将输出细胞状态
输出门:确定输出值,该输出值基于细胞状态

lstm 迁移学习介绍 lstm原理_反向传播

  • 门的概念:
我们认为细胞的流动是一个传送带,传送带进行线性交互,我们认为将一些货物放到传送带进行传动,而LSTM内部设计一种结构为门的结构,门可以去除或增加一些细胞状态,它决定哪些货物放到传送带上,哪些货物不放到传送带上。而这些货物可以认为是信息

lstm 迁移学习介绍 lstm原理_lstm 迁移学习介绍_02

如上图,可以看到 σ 它是神经网络的激活层, 粉色X 为 点乘,我们通过 σ 输出0-1数值,它能描述哪些货物可以通过,然后通过点乘汇集到传送带上。

上面三个门都是为了保护,控制细胞状态。为了保证哪些货物要放到传送带,哪些货物不放到传送带。在LSTM第一步中我们要确定往细胞丢弃什么信息,也就是确定哪些货物要放到传送带,哪些货物不放到传送带.
  • 遗忘门:
  • 最开始是一个遗忘门,首先它会读取ht-1时刻向量值和xt时刻的输入,然后通过激活层 σ 输出一个0-1之间数值(激活层函数一般为ReLU),然后进行一个点乘,最终到传送带。1表示完全保留,0表示完全舍弃。
  • 如下公式:
ft 为 σ网络激活层
Wf 为 权重
ht-1,xt 为 输入
bf 为 偏执量
  • 输入门:
  • 这一步要确定什么样信息放到细胞状态中,什么样货物最终放到传送带进行传送。这里包含2个步骤:
1.首先:通过ht-1时刻向量值和xt时刻的输入然后通过 σ 网络激活层 决定哪些信息要更新,最终放入传送带。
2.然后:通过tanh层,通过tanh层生成一个向量,对输入端进行激活,对细胞进行更新将Ct-1更新为Ct
  • 如下公式:
公式1:
	it 输入
	Wi 为 权重
	ht-1,xt 为 输入
	bi 为 偏执
公式2:
	Wc 为 权重
	ht-1,xt 为 输入
	Bc 为 偏执
  • 更新信息的确定详解:
我们首先根据ft(之前经过遗忘门保留的部分)和Ct-1进行点乘,然后结合it(更新的部分)和Ct进行点乘,进入传送带进行传送,最终进行加权输出到Ct。

lstm 迁移学习介绍 lstm原理_权重_03

  • 如下公式
  • 输出门
  • 它决定我们最终输出是什么样子的,我们基于ht最终输出是什么样子输出。
首先我们通过  σ 网络激活层 ,这里输入还是ht-1,xt得到称为ot,然后通过我们之前在传送带传送的货物Ct,经过tanh层 进行点乘 最终输出ht

lstm 迁移学习介绍 lstm原理_点乘_04

  • 公式:
ot 相当于激活层:权重, 输入,偏执得到结果
ht 相当于最终输出

3.LSTM应用场景

  • 语音识别
  • 图像描述
  • 聊天机器人

4.LSTM模型训练过程

  • 从RNN到LSTM
原始RNN只有一个状态h,LSTM加入了长期状态c,而加入长期状态c以后,可以实现长远的记忆。
  • LSTM循环展开
LSTM循环展开后可以看成多个神经元,我们进行多次赋值,在传送带传送h和C(用于传送状态),也就是要传送的货物
  • LSTM核心思想----门
遗忘门处理完 获取到了上一个时期的长期状态,当前时刻的即时状态(我们需要更新状态),我们通过输入门,将货物最终放到要传送带,最终输出门控制那些需要输出,那些不需要输出

5.LSTM训练算法

  • LSTM使用BPTT算法,它随时间反向传播,是一种具有长时记忆能力的神经网络模式,被广泛应用序列标注,因之前通常使用前向传播,会造成梯度消失或梯度爆炸问题。
梯度消失:随着时间增长,权重会越来越小,
梯度爆炸:权重相乘 数值会特别大
  • 而BPTT反向传播的激活函数Tanh术语双曲正切 -1 到1之间。有效解决上述问题。
  • BPTT反向传播推导公式
  • LSTM BPTT算法
  • 前向推导
前向推导假如上一层节点i,j,k...等一些节点与本层的节点w有链接。那么节点w的值如何计算?
	通过上一层的i,j,k等节点以及对应的连接权值(W)进行加权和运算,最终结果再加上一个偏执项,最后通过非线性函数(又称激活函数),若ReLu,sigmoid等函数,最后得到的结果就是本层节点w输出。
	最后不断的通过这种方法一层层运算,得到输出层结果。
  • 如下公式:
    a2=σ(z2)=σ(a1∗W2+b2)
其中,上标代表层数,星号表示卷积,b表示偏置项bias,σ \sigmaσ表示激活函数。
  • 反向推导

前向推导和反向推导

6.LSTM不足

  • 和RNN一样,只是缓解了梯度问题。序列长度过长,还是存在梯度问题。
  • LSTM计算相对费时,LSTM的cell里面都有4个全连接层(MLP)。

7.LSTM模型改进

  • Peephole LSTM
在 LSTM 本体上加上一个Peephole connection,
  • GRU
把遗忘门和传输门进行合并叫更新门,还把偏执省掉了。