【机器学习】循环神经网络(一)

本文详细介绍了循环神经网络的工作原理,包括网络结构如何处理输入序列,BPTT算法的应用以及面临的梯度消失问题。重点讨论了LSTM和GRU的改进,以及双向网络和注意力机制在增强RNN性能中的作用。

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

4015fd70e78b9fa4efbc236dd29db506.png

一、网络结构

2533b4a5523d724de9d8d997b2040b72.png

f2badd71c8f86c485c07af322b504249.png

2ab3e1ebd8edfaa13a0ba26f94da5448.png

efb6106a2f373ff6058eefd3a67719b7.png

RNN 处理输入序列时的信息流。 粗体箭头为各时间点信息流的活跃路径,虚线箭头显示当时不活动的连接。

一个简单RNN例子

RNN 不是一类网络,而是适用于不同问题的拓扑结构的集合。循环网络的一个有趣的方面是,有了足够的层和节点,它们是图灵完备的,这意味着它们可以实现任何可计算函数。

深层循环神经网络

64444c397feb8e482e7747aa4b22259f.png

da0b4fb2c2b6a5594cdaba201d872da8.png

三种构建深层循环网络的方案

402b3a0e9aae12a14c34921497f08ea9.png

d7f0cd2fb19d21cfc6b6118aecb928f5.png

二、网络的训练

ecea51de8b1f1ba74149ae08f6ca6971.png

循环神经网络的每个训练样本一般是一个序列,也就是一个有序的元素列表。例如,一个文本序列可以是一个单词列表,一个音频序列可以是一个声音信号的采样点列表,一个视频序列可以是一个图像帧的列表,等等。每个序列的长度可以不同,但是每个元素的维度必须相同。每个序列也可以有一个对应的标签,用于监督学习的目的。例如,一个文本序列的标签可以是一个类别,一个音频序列的标签可以是一个语音识别的结果,一个视频序列的标签可以是一个动作识别的结果,等等。

BPTT(Back Propagation Through Time)算法

96d36223c3b4051a8139b4467528cbd1.png

RNN 网络在处理输入序列 [X1, X2,…, Xt ] 时随时间展开。

尽管循环神经网络(RNN)能够处理输入序列,但它们面临梯度消失的问题。这是因为训练RNN处理输入序列需要通过整个序列的长度进行误差反向传播。例如,在图5.3中的网络中,必须通过整个网络将在输出Yt上计算的误差进行反向传播,以便用于更新从h0和X1到h1的连接上的权重。这涉及通过所有隐藏层进行误差反向传播,进而涉及通过连接从一个隐藏层向下一个隐藏层传递激活的权重重复相乘。这个过程的一个特定问题是,同一组权重在所有隐藏层之间的所有连接上都被使用每个水平箭头表示内存缓冲区和隐藏层之间的同一组连接,这些连接上的权重随时间保持不变(即,在处理给定输入序列期间,它们在一个时间步到下一个时间步不改变)。因此,通过k个时间步进行误差反向传播涉及(除其他乘法之外)将误差梯度与相同的权重集合相乘k次这相当于将每个误差梯度乘以一个被提高到k次方的权重。如果这个权重小于1,那么当它被提高到某个次方时,它以指数速率减小,因此,相对于序列长度,误差梯度也倾向于以指数速率减小并最终消失

时间反向传播 (BPTT) 是一种基于梯度的技术,用于训练特定类型循环神经网络。它可用于训练 Elman 网络。该算法由多名研究人员独立推导出来。

6fd8c5e6cb0648986577bb719709156d.png

f04511a4bb90dd1a250fb2f2353c9d89.png

Back_Propagation_Through_Time(a, y)   # a[t] 是时间 t 的输入,y[t] 是输出
    Unfold the network to contain k instances of f  # 将网络展开,包含 k 个 f 的实例
    do until stopping criterion is met:  # 循环直到满足停止条件
        x := the zero-magnitude vector   # x 是当前的上下文
        for t from 0 to n − k do         # t 是时间,n 是训练序列的长度
            Set the network inputs to x, a[t], a[t+1], ..., a[t+k−1]  # 设置网络的输入为 x, a[t], a[t+1], ..., a[t+k−1]
            p := forward-propagate the inputs over the whole unfolded network  # 对整个展开的网络进行前向传播,得到输出 p
            e := y[t+k] − p;           # e 是误差,等于目标值 y[t+k] 减去预测值 p
            Back-propagate the error, e, back across the whole unfolded network  # 对整个展开的网络进行反向传播,计算误差 e 对权重的梯度
            Sum the weight changes in the k instances of f together.  # 将 k 个 f 的实例中的权重变化求和
            Update all the weights in f and g.  # 更新 f 和 g 中的所有权重
            x := f(x, a[t]);           # 计算下一个时间步的上下文 x

循环神经网络输出层激活函数与损失函数配合使用情况

4b6805f4cc6df3489902c306b7d905a3.png

三、挑战与改进措施

3.1 RNN模型的梯度消失和梯度爆炸问题

e17f3a02fa7ae9e1594084e74cb9678d.png

3.2 长短期记忆模型(Long Short-Term Memory,LSTM)

1a8152504d20d1e1d14895078ce102f5.png

8249ae7bd497b803987c798e2bda07d6.png

与传统的RNN网络不同,LSTM不仅可以从当前状态获取信息,还可以从先前的状态获取信息。

6a1783a23c60e94a8852131855d1c30f.png

02b5804d1fcdbe98e28879217adf7815.png

df6d44b9fa25f92f2b877190f643629b.png

7befd495c979d0e50d949b075084b01d.png

3b563222b8d6fd5a0f313a8a8e78e529.png

3.3 门控循环单元(Gated Recurrent Units)

6666da5f86be600a0d6f7251368ddb82.png

7ba9789658c6c8d4be23ba0e9f743984.png

门控循环单元,完全门控版本

ffc41d50407a1cc23086e3ef0c0a125d.png

edbb4b13c6e3b218c516adcb788ac10e.png

be10ec3a541ae695699b0b773925d825.png

类型1

bd06da50d08a9027b65a155bd35beee6.png

类型2

f8afdec6261e7dc1398850870f48daf4.png

类型3

f97bb5a618b4e00de17021abe3c19631.png

67566ca5b43ef76658ff266bef852b67.png

3.4 双向网络

9b18faada2d55fc36dd6c922a1545512.png

58a666f191f6e88f89b151619f744042.png

双向神经网络的原理是将标准循环神经网络的神经元分成正时间方向(前向)和负时间方向(后向)。这两种状态的输出仅与同样方向状态的输入相连。循环神经网络和双向循环神经网络的一般结构如图所示。通过使用两个时间方向,双向循环神经网络可以使用当前、过去和未来时间下的输入信息,而不像标准的循环神经网络需要通过延迟来使用将来时间的信息。

3.5 注意力与增强型循环神经网络

da5e9bd55c40e263ba89f21f15ebc37a.png

参考网址:

https://developer.ibm.com/articles/cc-cognitive-recurrent-neural-networks/ 循环神经网络深入探究 - IBM Developer

https://en.wikipedia.org/wiki/Backpropagation_through_time 随时间反向传播 - 维基百科 --- Backpropagation through time - Wikipedia

https://www.math.ucla.edu/~minchen/doc/BPTTTutorial.pdf BPTTTutorial.pdf (ucla.edu)

https://colah.github.io/

https://en.wikipedia.org/wiki/Gated_recurrent_unit Gated recurrent unit - Wikipedia

https://distill.pub/2016/augmented-rnns/ 注意力与增强型循环神经网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值