RNN循环神经网络公式总结

RNN网络

RNN模型计算分为两步,第一步,计算第t个时间步的隐藏层a;第二步,计算t步的预测值y。

其中Wax和Waa两组参数分别与前一层的激活a和当前数据x结合,也可将其合二为一,并与x和a的连接计算。

在RNN网络中最常用激活函数是tanh,有时也用ReLU,一般只在最后一层使用sigmoid或softmax。

LSTM网络

RNN循环神经网络公式总结_第1张图片

相对于基础的RNN,LSTM增加了c(Cell)状态单元,可将其看做在计算激活a的过程中保存的当前状态。它与a都在工作过程中一直向下一步传递。

公式中的Γ表示门控gate,门控使用sigmoid函数计算得出0-1之间的值,用于过滤(保留或去掉)数据。LSTM中增加的门控分别是:遗忘门f,输入门i和输出门o,它们分别控制在更新当前cell内容时,之前的cell占比,当前的cell占比,以及如何用cell生成a。

举个简单的例子:用LSTM生成文字,当输入“回车”时,说明本段已结束,之前的内容被遗忘门丢弃;当前输入是“笑脸”时,输入本身没太大意义,被输入门丢弃;如果之前输入了“本段没”,当前时间步又输入了“用”,加在一起是“本段没用”,则输出门将其丢弃。(请领会精神)。

一般RNN的层数不会特别多(三层就差不多了),除了层数以外,还需要按时间步向后传播,计算量也很大。门控值由前一激活层a和当前时间步的数据x计算得出,每一门控分别对应一组参数w和b,因此,参数比RNN大三倍。这与Attention注意力机制非常相似,用当前输入和当前状态计算权值,给数据流加权。

GRU网络

RNN循环神经网络公式总结_第2张图片

GRU可视为LSTM的变体,它使用了两个门控,更新门u控制当前状态和之前状态的占比(LSTM使用输入门和遗忘门实现);去掉了输出门,用状态值作为激活值,简化算法结构;另外加入了重置门r,用于控制当状状态对前一状态的依赖程度。

深度神经网络一般都面临梯度爆炸和梯度消失的问题,梯度爆炸问题可以通过加入归一化层或梯度修剪的方式解决,LSTM和GRU主要用于缓解梯度消失问题,如GRU中当更新门趋近0时,当前状态与之前状态相等,类似于用残差网络解决梯度消失问题。它使RNN网络能在更长的时间步中工作,并支持更深层次的网络。

双向网络

双向网络在求y时,需要计算向前的激活层和向后的激活层,常用解决类似于完型填空的问题,需要考虑上下文的场景。

你可能感兴趣的:(深度学习)