部分一:概括
下面将顺序介绍RNN基本原理和常见变种,正向传播和反向传播过程及参数求解,RNN现存问题及原因。
RNN(Recurrent Neural Network,循环神经网络)是一类用于处理序列数据的神经网络。
(深层RNN)
部分二:理论推导
前向传播
对于如下网络:
对于任意序列索引t,
反向传播(BPTT)
BPTT算法是常用于训练RNN的方法,本质还是BP算法,但会导致梯度消失或爆炸问题。利用前向传播得知其中含有参数U、W、b、V、c,其偏导公式分别为:
部分三
指数级梯度伴随的问题:梯度消失和梯度爆炸
解决办法:
RNN的特点本来就是能“追根溯源“利用历史数据,由于梯度消失或梯度爆炸导致可利用的历史数据竟然是有限的,这就令人非常难受,解决“梯度消失“是非常必要的。方法主要有:
1、选取更好的激活函数,可以选取ReLU函数(要设置合适的学习率);
2、改变传播结构,例如LSTM、GRU。
部分四:RNN的标准结构及常见变体
一. 经典的RNN结构(N vs N)
二、(N vs 1)
在面对输入为一个序列,输出为一个值时,一般采用如下结构:
三、(1 vs N)
这里只放结构,原理不变。
适用于:
l 图像生成文字。输入x为图像特征,输出y就是一段话;
四、(N vs M)
下面介绍重要的一个变种:N
vs M,又称作encoder-decoder模型或者Seq2Seq模型。直接先给出常见的两种网络结构:
首先其计算原理不变,只是增添了一个上下文向量c。
c前称作encoder阶段;c后称作decoder阶段;c的计算方式很多,例如将最后隐状态
赋值给c、也可以对最后隐状态
做变换赋值给c、也可以对所有隐状态做变换赋值给c等等。
适用于:
l 机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的;
l 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列;
l 语音识别。输入是语音信号序列,输出是文字序列;
l 阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。
五、Attention机制
在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此,c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。如机器翻译问题,当要翻译的句子较长时,一个c可能存不下那么多信息,就会造成翻译精度的下降。
Attention机制通过在每个时间输入不同的c来解决这个问题,
首先给出其网络结构:
六.双向RNN(B-RNN)
有些情况下,当前的输出不只依赖于之前的序列元素,还可能依赖之后的序列元素; 比如做完形填空,机器翻译等应用。
双向循环网络的缺点是在任意位置输出预测之前,你需要完整的数据序列(比如一个完整句子)。