"Deep Learning" By Ian Goodfellow, Yoshua Bengio, Aaron Courville
赵申剑、黎彧君、符天凡、李凯 译,张志华等 审校
同时参考http://colah.github.io/posts/2015-08-Understanding-LSTMs/
第10章 序列建模:循环和递归网络
循环神经网络(Recurrent Neural Network, RNN)是一类用于处理序列数据的神经网络。动态系统下一时刻的状态是由前一时刻状态、外部输入及系统结构共同决定的,当前状态包含了整个过去序列的信息。假设函数f将t处的状态映射到t+1处的状态,f中包含系统参数,所有的时间步都采用相同的参数。循环神经网络可以很好的诠释这种动态系统。循环神经网络的状态是隐藏变量,用h表示,对应的动态系统为,
但是学习神经网络的过程中,存在长期依赖的数学挑战,根本问题是,经过许多阶段传播后的梯度倾向于小时或爆炸。处理长期依赖的一种方法是设计工作在多个时间尺度的模型,使模型的某些部分在细粒度时间尺度上操作并能处理小细节,而其他部分在粗时间尺度上操作并能把遥远过去的信息更有效地传递过来。“渗漏单元”(线性自连接单元)在时间轴增加跳跃连接,使用不同时间常数整合信号。
像渗漏单元一样,门控RNN也是急于声称通过时间的路径,在每个时间步采用可改变的连接权重,神经网络可学会决定何时清除状态(遗忘旧状态)。门控RNN包括基于长短期记忆(long short-term memory, LSTM)和基于门控循环单元(gated recurrent unit)的网络。LSTM、GRU细胞单元用于替换传统RNN的h自循环结构。其中各种控制门均为sigmoid单元,将权重设置为0和1之间的值(是x和前一状态h/C的函数,将实数转换到[0,1]区间)。
LSTM细胞单元引入内部隐藏状态s或C,像传送带一样,将序列过去的信息可以传送下去。通过三种门来控制信息流动,遗忘门ft控制隐藏状态C线性内环的权重,决定到底要从单元隐藏状态中清除什么信息。输入门g控制当前输入向量信息x是否会包含进单元隐藏状态C中。输出门q控制最终哪些内部状态C会对LSTM细胞输出h有影响。
GRU的单个门控单元同时控制遗忘因子和更新状态单元的决定。有两个门来控制,更新门(1-z)可先行门控任意维度,选择将它(状态h)复制,或完全由新的“目标状态”值替换并完全忽略它。遗忘门r控制当前状态中哪些部分用于计算下一个目标状态,在过去状态和未来状态之间引入了附加的非线性效应。