深度学习--递归神经网络--LSTM/GRU算法理论

目录

一 递归神经网络基础

1 递归神经网络与前馈神经网络的联系与区别

1)网络结构

2)输入角度

3)输出角度

2 递归神经网络的架构类别

第一种架构类别:从输入和输出的序列长度角度

1)N:N(最为常见的架构)

2)N:M(Seq2Seq或者Encoder-Decoder模型)

3)1:N(处理如图片标注问题,x是图像特征,y是一个句子)

4)N:1(处理如序列分类问题(情感倾向分析))

第二种架构类别:从隐层的传输方向角度

1)单向递归神经网络(以N:N为例)

2)双向递归神经网络(以N:N为例)

3 递归神经网络的正向与反向传播(以N:N为例)

1)正向传播(同FP过程)

2)反向传播(同BP过程,这里称为BPTT)

4 递归神经网络的梯度消失与梯度爆炸问题

1)梯度消失问题(长时依赖造成记忆消失)

2)梯度爆炸问题(长时依赖造成记忆紊乱)

二 递归神经网络隐层结构

1 LSTM(Long Short Term Memory,长短时序记忆)

1)三个门(信息遗忘门、增加门、输出门)

2)正向传播

2  LSTM变种

1)peephole connections(窥视孔连接)

2)耦合信息遗忘门与增加门

3 GRU(Gated Recurretn Unit,门内循环单元)

1)两个门(信息更新门、输出门)

2)正向传播


一 递归神经网络基础

1 递归神经网络与前馈神经网络的联系与区别

1)网络结构

BP、CNN等是前馈神经网络,递归神经网络是反馈神经网络

2)输入角度

BP、CNN等前馈神经网络中输入是独立的没有上下联系的,递归神经网络中是有上下联系的序列化输入

3)输出角度

BP、CNN等前馈神经网络中输出是依赖当前输入,递归神经网络中输出依赖当前输入以及过去的输入,从而赋予神经网络记忆能力

注意:递归神经网络分为时间递归和结构递归,我们这里是指时间递归的递归神经网络

2 递归神经网络的架构类别

第一种架构类别:从输入和输出的序列长度角度

1)N:N(最为常见的架构)

深度学习--递归神经网络--LSTM/GRU算法理论_第1张图片

第一点:节点的理解

  • x:表示整个输入序列(x=[x_{1},x_{2},...,x_{t},..]),其中x_{t}表示时间t的输入(向量)
  • h:表示隐层的输出序列(h=[h_{1},h_{2},...,h_{t},..]),其中h_{t}表示时间t的隐层输出(向量)

             注意:h_{t}=f(s_{t}) ,s_{t}=Ux_{t}+Wh_{t-1}+b_{h_t}

  • o:表示整个输出序列(o=[o_{1},o_{2},...,o_{t},...]),其中o_{t}表示时间t的输出(向量)

            注意:o_{t}=g(Vh_{t})

第二点:连接权重的理解

  • U:表示输出层和隐层的连接权重(方阵),将输入层的输入进行抽象来作为隐层的输入
  • W:表示隐层和隐层的连接权重(方阵),是记忆的控制者(负责记忆调度)
  • V:表示隐层和输出层的连接权重(方阵),将隐层的输出进行抽象来作为输出层的输入

2)N:M(Seq2Seq或者Encoder-Decoder模型)

深度学习--递归神经网络--LSTM/GRU算法理论_第2张图片

  • 第一步:将输入编码为词向量c
  • 第二步:将词向量c解码为预测序列

注意:实际问题中,输入和输出几乎不等长

3)1:N(处理如图片标注问题,x是图像特征,y是一个句子)

第一种:在序列开始进行输入x的计算

深度学习--递归神经网络--LSTM/GRU算法理论_第3张图片

第二种:在序列的各个阶段,都进行同一个输入x的计算

深度学习--递归神经网络--LSTM/GRU算法理论_第4张图片

4)N:1(处理如序列分类问题(情感倾向分析))

深度学习--递归神经网络--LSTM/GRU算法理论_第5张图片

第二种架构类别:从隐层的传输方向角度

1)单向递归神经网络(以N:N为例)

深度学习--递归神经网络--LSTM/GRU算法理论_第6张图片

2)双向递归神经网络(以N:N为例)

深度学习--递归神经网络--LSTM/GRU算法理论_第7张图片

  • x:表示整个输入序列(x=[x_{1},x_{2},...,x_{t},..]),其中x_{t}表示时间t的输入(向量)
  • \overrightarrow{h}:表示隐层正向的输出序列(\vec{h}=[\overrightarrow{h}_{1},\overrightarrow{h}_{2},...,\overrightarrow{h}_{t},..]),其中h_{t}表示时间t的隐层输出(向量)

             注意:\overrightarrow{h}_{t}=f(s_{t}) ,s_{t}=Ux_{t}+W\overrightarrow{h}_{t-1}+b_{\overrightarrow{h}_t}

  • \overleftarrow{h}:表示隐层反向的输出序列(\overleftarrow{h}=[\overleftarrow{h}_{1},\overleftarrow{h}_{2},...,\overleftarrow{h}_{t},..]),其中h_{t}表示时间t的隐层输出(向量)

             注意:\overleftarrow{h}_{t}=f(s_{t}) ,s_{t}=Ux_{t}+W\overleftarrow{h}_{t-1}+b_{\overleftarrow{h}_t}

  • o:表示整个输出序列(o=[o_{1},o_{2},...,o_{t},...]),其中o_{t}表示时间t的输出(向量)

            注意:o_{t}=g(V[\overrightarrow{h}_{t},\overleftarrow{h}_{t}])

3 递归神经网络的正向与反向传播(以N:N为例)

1)正向传播(同FP过程)

第一步:t=0

初始化h_{0},U,W,V

第二步:递归进行,t=1,2,..

s_{t}=Ux_{t}+Wh_{t-1}+b_{h_{t}}

h_{t}=f(s_{t})

o_{t}=g(Vh_{t})

2)反向传播(同BP过程,这里称为BPTT)

第一步:损失函数(凸函数)

E=\sum e_{t}

第二步:计算梯度

\left\{\begin{matrix} \bigtriangledown _{U}E=\frac{\partial E}{\partial U}=\sum\frac{\partial e_{t}}{\partial U}\\ \bigtriangledown _{W}E=\frac{\partial E}{\partial W}=\sum\frac{\partial e_{t}}{\partial W}\\ \bigtriangledown _{V}E=\frac{\partial E}{\partial V}=\sum\frac{\partial e_{t}}{\partial V} \end{matrix}\right.

注意:使用链式法则(注意考虑W,U依赖问题)

\frac{\partial e_{t}}{\partial U}=\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial U}\Rightarrow \frac{\partial E}{\partial U}= \sum_{t}\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial U}

\frac{\partial e_{t}}{\partial W}=\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial W}\Rightarrow \frac{\partial E}{\partial W}=\sum_{t}\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial W}

\frac{\partial e_{t}}{\partial V}=\frac{\partial e_{t}}{\partial o_{t}}\frac{\partial o_{t}}{\partial V}\Rightarrow \frac{\partial E}{\partial V}=\sum_{t} \frac{\partial e_{t}}{\partial o_{t}}\frac{\partial o_{t}}{\partial V}

第三步:使用梯度下降算法(SGD)

U=U-\alpha_{U} \bigtriangledown _{U}E

W=W-\alpha_{W} \bigtriangledown _{W}E

V=V-\alpha_{V} \bigtriangledown _{V}E

4 递归神经网络的梯度消失与梯度爆炸问题

\frac{\partial e_{t}}{\partial U}=\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial U}\Rightarrow \frac{\partial E}{\partial U}= \sum_{t}\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial U}

\frac{\partial e_{t}}{\partial W}=\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial W}\Rightarrow \frac{\partial E}{\partial W}=\sum_{t}\sum_{1\leq k\leq t} \frac{\partial e_{t}}{\partial h_{t}}\left ( \prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}} \right )\frac{\partial h_{k}}{\partial W}

\Rightarrow ||\prod _{k<i\leq t}\frac{\partial h_{i}}{\partial h_{i-1}}||\leq \eta ^{t-k}

1)梯度消失问题(长时依赖造成记忆消失)

\eta < 1

注意:LSTM/GRU可以克服梯度消失问题(可以解决记忆消失问题)

2)梯度爆炸问题(长时依赖造成记忆紊乱)

\eta > 1

注意:Gradient-clipping将梯度限制在阈值c的范围内,可以克服梯度爆炸问题(可以解决记忆紊乱问题)

二 递归神经网络隐层结构

1 LSTM(Long Short Term Memory,长短时序记忆)

深度学习--递归神经网络--LSTM/GRU算法理论_第8张图片

1)三个门(信息遗忘门、增加门、输出门)

  • 信息遗忘门:f_{t}=\sigma (W_{f}[x_{t},h_{t-1}]+b_{f})
  • 信息增加门:i_{t}=\sigma (w_{i}[x_{t},h_{t-1}]+b_{i})
  • 信息输出门:o_{t}=\sigma (w_{o}[x_{t},h_{t-1}]+b_{o})

2)正向传播

第一步:计算\tilde{c}_{t}

\tilde{c}_{t}=tanh(w_{c}[x_{t},h_{t-1}]+b_{c})

第二步:计算c_{t}

c_{t}=f_{t}*c_{t-1}+i_{t}*\tilde{c}_{t}

第三步:计算h_{t}

h_{t}=o_{t}*tanh(c_{t})

2  LSTM变种

1)peephole connections(窥视孔连接)

深度学习--递归神经网络--LSTM/GRU算法理论_第9张图片

第一点:三个门(信息遗忘门、增加门、输出门)

  • 信息遗忘门:f_{t}=\sigma (W_{f}[x_{t},h_{t-1},c_{t-1}]+b_{f})
  • 信息增加门:i_{t}=\sigma (w_{i}[x_{t},h_{t-1},c_{t-1}]+b_{i})
  • 信息输出门:o_{t}=\sigma (w_{o}[x_{t},h_{t-1},c_{t}]+b_{o})

第二点:正向传播

  • 第一步:计算\tilde{c}_{t}

\tilde{c}_{t}=tanh(w_{c}[x_{t},h_{t-1}]+b_{c})

  • 第二步:计算c_{t}

c_{t}=f_{t}*c_{t-1}+i_{t}*\tilde{c}_{t}

  • 第三步:计算h_{t}

h_{t}=o_{t}*tanh(c_{t})

2)耦合信息遗忘门与增加门

深度学习--递归神经网络--LSTM/GRU算法理论_第10张图片

第一点:三个门(信息遗忘门、增加门、输出门)

  • 信息遗忘门:f_{t}=\sigma (W_{f}[x_{t},h_{t-1}]+b_{f})
  • 信息增加门:i_{t}=1-f_{t}(遗忘门与增加门的耦合)
  • 信息输出门:o_{t}=\sigma (w_{o}[x_{t},h_{t-1}]+b_{o})

第二点:正向传播

  • 第一步:计算\tilde{c}_{t}

\tilde{c}_{t}=tanh(w_{c}[x_{t},h_{t-1}]+b_{c})

  • 第二步:计算c_{t}

c_{t}=f_{t}*c_{t-1}+i_{t}*\tilde{c}_{t}=f_{t}*c_{t-1}+(1-f_{t})*\tilde{c}_{t}

  • 第三步:计算h_{t}

h_{t}=o_{t}*tanh(c_{t})

3 GRU(Gated Recurretn Unit,门内循环单元)

深度学习--递归神经网络--LSTM/GRU算法理论_第11张图片

1)两个门(信息更新门、输出门)

  • 信息更新门:r_{t}=\sigma (w_{r}[x_{t},h_{t-1}]+b_{r})
  • 信息输出门:z_{t}=\sigma (w_{z}[x_{t},h_{t-1}]+b_{z})

注意:信息更新门=信息遗忘门+信息增加门

2)正向传播

第一步:计算\tilde{h}_{t}

\tilde{h}_{t}=tanh(w_{h}[r_{t}*h_{t-1},x_{t}]+b_{h})

第二步:计算h_{t}

h_{t}=(1-z_{t})*h_{t-1}+z_{t}*\tilde{h}_{t}

你可能感兴趣的:(rnn,lstm,神经网络,深度学习,人工智能)