深度学习算法——循环神经网络RNN
传统的RNN模型、RNN前向传播算法、RNN反向传播算法
RNN(Recurrent Neural Network)是一组用于处理序列数据的神经网络。序列数据的特点是后面的数据跟前面的数据有关系,是一种按照先后顺序排列的数据。一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。
RNN对序列特性的数据非常有效,它能够挖掘数据中的时序信息以及语义信息,大多应用于语音识别、语言模型、机器翻译以及时序分析等NLP领域。
RNN的结构为:

具体含义如下:
代表在序列索引号t时训练样本的输入,同样的,
和
代表在序列索引号t-1和t+1时训练样本的输入;
代表在序列索引号t时模型的隐藏状态,
由
和
共同决定。
代表在序列索引号t时模型的输出。
只由模型当前的隐藏状态
决定。
代表在序列索引号t时模型的损失函数。
代表在序列索引号t时训练样本序列的真实输出。
U,W,V这三个矩阵是模型的线性关系参数,在整个RNN网络中是共享的。
基于上面的模型,得出RNN前向传播算法。
对于任意一个序列索引号t,隐藏状态由
和
得到:
其中,为RNN的激活函数,一般为tanh,b为线性关系的偏倚。
序列索引号t时模型的输出的表达式为:
最终序列索引号t时我们的预测输出为:
通常RNN是识别类的分类模型,所以上面的激活函数一般是softmax
RNN的反向传播也叫做BPTT(Back-propagation through time),反向传播的思路是通过梯度下降法一轮轮的迭代,得到合适的RNN模型参数U,W,V,b,c。
为了简化描述,这里的损失函数用交叉熵损失函数,公式为:
对于RNN,由于在序列的每个位置都有损失函数,因此最终的损失L为:
其中,求解V,c的式子为:
同理,上面有个转置的原因是标量对矩阵求导缘故。
对于W,U,b的梯度计算比较复杂,若有感兴趣的可参考RNN的反向传播推导与numpy实现 - 知乎
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)