循环神经网络之前向反向传播算法

本文介绍了循环神经网络(RNN)的基本概念、模型结构和前向传播算法,详细阐述了RNN在处理序列数据时如何通过隐藏状态实现信息传递。同时,探讨了RNN在训练过程中常见的梯度消失和梯度爆炸问题,并预告将通过LSTM算法来解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我们已经介绍了深度神经网络卷积神经网络,这些算法都是前向反馈,模型的输出和模型本身没有关联关系。今天我们学习输出和模型间有反馈的神经网络,循环神经网络(Recurrent Neual Networks),其广泛应用于自然语言处理中的语音识别,书写识别和机器翻译等领域。

1.RNN简介

前面介绍的DNN和CNN之中,训练样本的输入和输出都是确定的。但对于训练样本输入是连续的序列,训练样本长度不同的样本,比如一段连续的语音和手写文字,DNN和CNN是比较难处理的。而对于上述问题,RNN则是比较擅长,那么RNN是怎么做到的呢?

RNN假设输入样本是基于序列的,比如是从序列索引1到序列索引τ,对于其中的任意序列索引号t,输入是对应样本序列的 x ( t ) x^{(t)} x(t)。而模型在序列索引号t位置的隐藏状态 h ( t ) h^{(t)} h(t),则由 x ( t ) x^{(t)} x(t)和t-1时刻的隐藏状态 h ( t − 1 ) h^{(t-1)} h(t1)共同决定。在任意序列索引号t,也有相对应的模型预测输出 o t o^{t} ot。通过预测输出 o ( t ) o^{(t)} o(t)和训练序列的真实输出 y ( t ) y^{(t)} y(t),以及损失函数 L ( t ) L^{(t)} L(t),我们就可以用和DNN类似的方法来训练模型,接着用来预测测试样本的输出,下面我们来看看循环神经网络的模型。

2.RNN模型

01

循环神经网络有多种模型结构,这里我们介绍最主流的模型结构。上图中左边是没有按时间序列展开的图,右边是按照时间序列展开的结构,我们重点看右边的模型结构。这里描述了在序列索引号t附近的RNN模型,下面针对一些参数做具体说明。

  • x ( t ) x^{(t)} x(t)代表在序列索引号t时训练样本的输入,同样 x ( t − 1 ) x^{(t-1)} x(t1) x ( t + 1 ) x^{(t+1)} x(t+1)分别代表t-1时刻和t+1时刻训练样本的输入。
  • h ( t ) h^{(t)} h(t)代表在序列索引号t时模型的隐藏状态, h ( t ) h^{(t)} h(t) x ( t ) x^{(t)} x(t) h ( t − 1 ) h^{(t-1)} h(t1)共同决定。
  • o ( t ) o^{(t)} o(t)代表在序列索引号t时模型的输出, o ( t ) o^{(t)} o(t)由模型当前的隐藏状态 h ( t ) h^{(t)} h(t)决定。
  • L ( t ) L^{(t)} L(t)代表在序列索引号t时模型的损失函数。
  • y ( t ) y^{(t)} y(t)代表在序列索引号t时训练样本序列的真实输出。
  • U , W , V U,W,V U,W,V矩阵是模型的线形关系参数,在整个RNN网络间是共享的,这点和DNN不同。正是因为参数的共享,体现了RNN模型循环反馈的思想。

3.RNN前向传播算法

根据上面介绍的模型,我们来看一下RNN前向传播算法,对于任意时刻序列索引号t,能够得到当前的隐藏状态。其中σ为RNN的激活函数,一般是tanh,b为偏倚系数。
h ( t ) = σ ( z ( t ) ) = σ ( U x ( t ) + W h ( t − 1 ) + b ) h^{(t)} = \sigma(z^{(t)}) = \sigma (Ux^{(t)} + Wh^{(t-1)} + b) h(t)=σ(z(t))=σ(Ux(t)+Wh(t1)+b)
序列索引号t时模型的输出 o ( t ) o^{(t)} o(t)
o ( t ) = V h ( t ) + c o^{(t)} = Vh^{(t)} + c o(t)=Vh(t)+c
最终能够得到模型的预测输出,由于RNN是识别类的分类模型,所以下式激活函数一般是softmax函数。
y ^ ( t ) = σ ( o ( t ) ) \hat{y}^{(t)}= \sigma (o ^{(t)}) y^(t)=σ(o(t))
最后通过损失函数 L ( t ) L^{(t)} L(t),比如对数似然损失函数,我们可以量化模型在当前位置的损失,即 y ^ ( t ) \hat{y}^{(t)} y^(t) y ( t ) y^{(t)} y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值