当前位置:   article > 正文

循环神经网络(Recurrent Neural Network)

循环神经网络

经验是智慧之父,记忆是智慧之母。

FNN(FCNN、MLP)的弊端:在FNN中,信息的传递是单向的,虽然使网络更容易学习,但在一定程度上减弱了神经网络模型的能力。FNN可以看成是一个复杂的函数,网络的输出只依赖于当前的输入,但是在现实的任务当中,网络的输出不仅和当前时刻的输入有关,还和过去时刻的输出有关,FNN很难处理这样的时序数据(比如视频、文本、语音等),时序数据的长度是不固定的,而FNN要求输入和输出的维度是固定的,所以当处理和时序数据有关的问题时,就需要一种能力更强的模型:循环神经网络。

循环神经网络具有短期记忆能力,简单的循环神经网络只有一个隐藏层,以简单循环网络为例来表达RNN:设时刻t网络的输入为x _{t}h _{t}为隐藏层神经元的活性值,隐藏层神经元净输入z_{t}的计算公式为:z _{t}=Uh_{t-1}+Wx_{t}+b,h _{t}=f(z_{t}),其中函数f是一个非线性激活函数,通常为Sigmoid型函数。循环神经网络可以看作是在时间维度上权值共享的神经网络。

一个完全连接的循环神经网络,其输入为x _{t},输出为y_{t},则h_{t}=f(Uh_{t-1}+Wx_{t}+b)y_{t}=Vh_{t}

RNN应用到机器学习中一般会处理以下三种模式的问题:序列到类别模式、同步的序列到序列模式、异步的序列到序列模式。

序列到类别模式:输入为序列、输出为类别,比如文本分类任务:输入为一个序列

x_{1:T}=(x_{1},x_{2},x_{3}...x_{T}),得到不同时刻的隐藏状态h_{1},h_{2},h_{3}...h_{T},其中h_{T}看作整个序列的最终表示,并输入分类器函数g,则输出y=g(h_{T})

同步的序列到序列模式:输入为序列、输出为序列,且长度相等,比如序列标注任务(词性标注):样本按不同时刻输入到RNN中,并得到不同时刻的隐状态,每个隐状态代表了当前时刻和历史的信息,并输入给了分类器g,得到当前时刻的标签y。

异步的序列到序列模式(也称为编码器-解码器模型,encoder-decoder):输入和输出序列不需要有严格的对应关系,比如机器翻译任务,一般先将输入序列输入到编码器(RNN),得到其编码h_{T},然后送入解码器得到输出序列,为了建立输出序列之间的依赖关系,一般解码器使用自回归模型。另f1,f2分别是编码器和解码器的RNN,则编码器-解码器模型可以表示为:

h_{t}=f_{1}(h_{t-1},x_{t}), h_{T+t}=f_{2}(h_{T+t-1},y_{t-1}),y_{t}=g(h_{T+t})

循环神经网络学习的方法还是梯度下降法,但是计算梯度的方法是随时间反向传播(BPTT)。并且循环神经网络会产生一种长程依赖问题。(这块不好理解,但理解了就大彻大悟了)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/627144
推荐阅读
相关标签
  

闽ICP备14008679号