前言
在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系。今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。
4.1
vanilla RNN的前传
先贴一张vanilla(朴素)RNN的前传示意图。
上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。这幅图描述了在序列索引号t附近RNN的模型。其中:
4.1.1 RNN前向传播计算公式
4.2
vanilla RNN的反向传播推导
RNN反向传播算法的思路和DNN是一样的,即通过梯度下降法一轮轮的迭代,得到合适的RNN模型参数U,W,V,b,c。由于我们是基于时间反向传播,所以RNN的反向传播有时也叫做BPTT(back-propagation through time)。当然这里的BPTT和DNN也有很大的不同点,即这里所有的U,W,V,b,c在序列的各个位置是共享的,反向传播时我们更新的是相同的参数。
为了简化描述,这里的损失函数我们为交叉熵损失函数,输出的激活函数为softmax函数,隐藏层的激活函数为tanh函数。
4.3
RNN发生梯度消失与梯度爆炸的原因
参考资料
https://www.cnblogs.com/pinard/p/6519110.html
https://www.cnblogs.com/sumwailiu/p/13614859.html
书籍:2017.09《深度学习(花书)》
深度学习
TO BE CONTINUED
数学
文章作者: 中国电信研究院 | 刘心唯
文章内容系作者个人观点,不代表融智未来公众号的观点或立场。