我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:四肖中特 > 反向推理 >

循环神经网络模型与前向反向传播算法

归档日期:05-11       文本归类:反向推理      文章编辑:爱尚语录

  在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。

  而对于这类问题,RNN则比较的擅长。那么RNN是怎么做到的呢?RNN假设我们的样本是基于序列的。比如是从序列索引 1 到序列索引 T 的。对于这其中的任意序列索引号 t,它对应的输入是对应的样本序列中的

  上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。

  代表在序列索引号 t 时训练样本序列的线)U,W,V这三个矩阵是我们的模型的线性关系参数,它在整个RNN网络中是共享的,这点和DNN很不相同。 也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。

  其中 σ 为RNN的激活函数,一般为 tanh, b为线性关系的偏倚。

  通常由于RNN是识别类的分类模型,所以上面这个激活函数一般是softmax。

  有了RNN前向传播算法的基础,就容易推导出RNN反向传播算法的流程了。RNN反向传播算法的思路和DNN是一样的,即通过梯度下降法一轮轮的迭代,得到合适的RNN模型参数 U,W,V,b,c 。由于我们是基于时间反向传播,所以RNN的反向传播有时也叫做BPTT(back-propaga

  on through time)。当然这里的BPTT和DNN也有很大的不同点,即这里所有的 U,W,V,b,c 在序列的各个位置是共享的,反向传播时我们更新的是相同的参数。为了简化描述,这里的损失函数我们为交叉熵损失函数,输出的激活函数为softmax函数,隐藏层的激活函数为tanh函数。

  对于RNN,由于我们在序列的每个位置都有损失函数,因此最终的损失 L 为:

  但是 W,U,b 的梯度计算就比较的复杂了。从RNN的模型可以看出,在反向传播时,在在某一序列位置t的梯度损失由当前位置的输出对应的梯度损失和序列索引位置 t+1 时的梯度损失两部分共同决定。对于 W 在某一序列位置t的梯度损失需要反向传播一步步的计算。我们定义序列索引 t 位置的隐藏状态的梯度为:

  除了梯度表达式不同,RNN的反向传播算法和DNN区别不大,因此这里就不再重复总结了。

  上面总结了通用的RNN模型和前向反向传播算法。当然,有些RNN模型会有些不同,自然前向反向传播的公式会有些不一样,但是原理基本类似。

  RNN虽然理论上可以很漂亮的解决序列数据的训练,但是它也像DNN一样有梯度消失时的问题,当序列很长的时候问题尤其严重。因此,上面的RNN模型一般不能直接用于应用领域。在语音识别,手写书别以及机器翻译等NLP领域实际应用比较广泛的是基于RNN模型的一个特例LSTM,下一篇我们就来讨论LSTM模型。

  文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

  AI对话的未来已经取得了第一个重大突破,这一切都要感谢语言建模的发电厂,循环神经网络。

  循环神经网络(RNN)现已成为国际上神经网络专家研究的重要对象之一。它是一种节点定向连接成环的人工神....

  循环神经网络(RNN)是用于自然语言建模的主流架构,通常,RNN按顺序读取输入的token,再输出每....

本文链接:http://pebeducation.com/fanxiangtuili/292.html