循环神经网络(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)。并且循环神经网络会产生一种长程依赖问题。(这块不好理解,但理解了就大彻大悟了)

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值