循环序列模型总结之RNN

本文深入探讨了循环神经网络(RNN)及其在自然语言处理中的应用,包括不同类型RNN的工作原理和应用场景,如命名实体识别、机器翻译等。同时,文章还分析了RNN的前向传播和反向传播过程,并指出了其存在的问题,如梯度消失和梯度爆炸。

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

学完了吴恩达的序列模型第一周的课,之前也用过各种库,但是对模型内部了解不深,宏观认识也不够,就总结一下以加深印象。

循环序列模型及应用场景分类

传统的神经网络模型往往需要相同维度的输出和输入,而在自然语言处理中,句子或词语的构成往往长短不一;此外由于语言的先后顺序对于语义的理解十分重要,所以采用循环序列模型能够更好的捕捉词语先后顺序的联系。

不同的RNN类型

在下面的命名实体识别例子中,Tx = Ty。但是在很多RNN模型中,Tx是不等于Ty的。根据Tx与Ty的关系,RNN模型包含以下几个类型:

  • Many to many: Tx=Ty 人名识别,实体识别
  • Many to many: Tx≠Ty 机器翻译
  • Many to one: Tx>1,Ty=1 文本分类,情感分类
  • One to many: Tx=1,Ty>1 语音生成,文本生成
  • One to one: Tx=1,Ty=1

这里写图片描述
下面命名实体识别为例总结RNN基础模型

循环序列模型

本文主要对循环序列模型进行总结,并对应用场景进行分类
1. RNN
2. LSTM
3. GRU

RNN模型的前项传播

循环神经网络(RNN)是专门用来解决序列模型问题的。RNN模型结构如下:
image

序列模型从左到右,依次传递,此例中,Tx=Ty。 x<t> x < t > y<t> y < t > 之间是隐藏神经元。 a<t> a < t > 会传入到第t+1个元素中,作为输入。其中, a<0> a < 0 > 作为初始向量,一般为零向量。对于每个t时刻的的输出 y<t> y < t > ,总是和上一时刻的激活值 a<t1> a < t − 1 > 和当前时刻的输入值 x<t> x < t > 有关。

RNN模型包含三类权重系数由下图所示:分别是Wax,Waa,Wya。且不同元素之间同一位置共享同一权重系数。

在命名实体识别中,对于t时刻的激活值 at a t RNN内部的运算采用公式如下图:
这里写图片描述
a<t>=tanh(WaxXt+Waaat1+ba) a < t > = t a n h ( W a x ∗ X t + W a a ∗ a t − 1 + b a ) 进行计算。
对于当前时刻的输入是否是一个实体,通常进行softmax计算概率分布得出。

对于一般问题,RNN的正向传播(Forward Propagation)过程为:
a<t>=g(Waaa<t1>+Waxx<t>+ba) a < t > = g ( W a a ⋅ a < t − 1 > + W a x ⋅ x < t > + b a )
y<t>=g(Wyaa<t>+by) y < t > = g ( W y a ⋅ a < t > + b y )
其中,g(⋅)表示激活函数,不同的问题需要使用不同的激活函数。

RNN模型的反向传播

针对上面识别人名的例子,经过RNN正向传播,单个元素的Loss function为:
L<t>(y^<t>,y<t>)=y<t>log y^<t>(1y<t>)log (1y^<t>) L < t > ( y ^ < t > , y < t > ) = − y < t > l o g   y ^ < t > − ( 1 − y < t > ) l o g   ( 1 − y ^ < t > )
则该所有元素的Loss function为:
L(y^,y)=Tyt=1L<t>(y^<t>,y<t>) L ( y ^ , y ) = ∑ t = 1 T y L < t > ( y ^ < t > , y < t > )
对于Waa,Wax,ba求偏导数来进行更新
这里写图片描述

存在的缺陷

缺陷1

得一提的是,以上所述的RNN为单向RNN,即按照从左到右顺序,单向进行,y^只与左边的元素有关。但是,有时候y^也可能与右边元素有关。例如下面两个句子中,单凭前三个单词,无法确定“Teddy”是否为人名,必须根据右边单词进行判断。

He said, “Teddy Roosevelt was a great President.”

He said, “Teddy bears are on sale!”
为了解决上述问题,有一种更为复杂的结构叫做Bi-RNN(双向RNN)我们在未来会加以讨论和总结。

缺陷2
  • 梯度爆炸
  • 梯度消失
    对于梯度爆炸,可以简单的将所计算的梯度进行区间限制。
    梯度消失,指的是在反向传播过程中,梯度计算为0无法更新参数的情况。在rnn中,如果序列较长,计算的梯度又接近于0,就会出现这种情况。
    对于梯度消失,RNN没有什么好的办法,因此有大神创造了LSTM模型来解决梯度消失的问题,下一篇将对LSTM进行总结。

参考:https://blog.youkuaiyun.com/red_stone1/article/details/79446105

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值