反向传播(BPTT)与循环神经网络(RNN)文本预测
BPTT 与 RNN文本预测
参考博客:
- http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/
- http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-2-implementing-a-language-model-rnn-with-python-numpy-and-theano/
参考论文:
- A guide to recurrent neural networks and backpropagation
本文介绍简单Recurrent Neural Networks(RNN)的基本训练算法BACKPROPAGATION THROUGH TIME (BPTT),并用 python2.7 实现RNN的文本预测。
1. RNN训练方法:BACKPROPAGATION THROUGH TIME (BPTT)
基本RNN结构如下所示:
st 是 t 时刻的隐藏状态,它表示网络的记忆单元,由前一时刻的隐藏状态和当前时刻的输入来确定, ot 表示 t 时刻的输出,它与隐藏状态有关:
ot=g(Vst) ,假定 g 为
U,W,V 分别是输入与隐藏状态、先前隐藏状态与当前隐藏状态、隐藏状态与输出之间的连接权重,可分别叫做输入权重、循环权重、输出权重。
BPTT与传统的反向传播算法基本相同,包含如下三个步骤:
(1) 前向传播计算输出 o 和隐藏状态
(2) 反向传播计算误差 δ ,表示模型目标函数 E 对加权输入
(3) 求解模型目标函数
(1) 前向计算
利用如下两式从输入层 xt 计算每层的隐藏状态 s 和 输出
st = f(Uxt+Wst−1) ,假定 f