Korean, Edit

第 17 章 RNN 算法

推荐帖子:【算法】【算法索引】(https://jb243.github.io/pages/1278)


1. 概述

2. 注意事项

3. 类型1. RNN之前的回归模型

4. 类型 2. LSTM

5. 类型 3. GRU



1.概述

⑴ 定义

① RNN(循环神经网络):在由输入层、隐藏层和输出层组成的多层感知器内,隐藏层包含循环神经网络结构的算法。

② 可表示为:ht = tanh(Wxxt + Whht-1 + b)

③ 优势

○ 模型比较简单,网络结构无论序列长度如何都可以接受输入和输出。

○ 结构可根据需要进行多种灵活设计。

④ 缺点

○ 计算速度较慢

○ 长期依赖问题

○ 梯度消失问题

⑵ 结构


图片

图 1. RNN 算法的结构


3 应用领域

① 自然语言:使用文本中的前后单词

② 语音信号

③ 时间序列数据:使用过去和未来值以及当前值

通过观察数据随时间的变化来预测未来虽然具有挑战性,但非常重要。此类问题也可以使用深度学习算法来解决。通过提供多个训练数据集,其中 x(t), x(t - τ), …, x(t - kτ) 为输入值,x(t + τ) 为目标值,预测值 y 可以表示为 y = f(x(t), x(t - τ), …, x(t - kτ))。通过深度学习算法,可以创建表示该函数 f 的网络。不仅可以输出单个预测值,还可以生成多个预测值。在这种情况下, y = F(x(t), x(t - τ), …, x(t - kτ)) = (x1, … xm) 是预测值,G(t + τ) = (x1, …, xm) 是目标值。



2.注意事项

长期依赖问题

① 随着数据点从当前时刻回溯到更远的时间,处理上下文变得更加困难。

梯度消失(GV)

① 随着层数的增加,反向传播过程中,梯度值越靠近输入层越趋于零,导致参数无法有效更新。

② 由于多层网络性能有限、计算机速度缓慢,神经网络研究陷入停滞。

解决方案: 使用ReLU等激活函数代替sigmoid。

○ S 型函数:sig(t) = 1 / (1 + exp(-t))

○ t=0 时其导数最大,但最大值为 0.25,小于 1。

○ 因此,通过跨层的重复计算,梯度会趋于缩小并收敛于0。

○ ReLU: ReLU(t) = max(0, t)

○ 有助于解决梯度消失问题

○ 计算速度更快

○ 因为它不输出负值,所以可能导致神经元失活(“dying ReLU”问题)

○ 深度学习中常用的首选激活函数

梯度爆炸(GE)

① 梯度越来越大,导致权重更新到异常大值的问题。

梯度裁剪: 一种对梯度值设置上限以防止梯度爆炸的技术。

○ 【为什么梯度裁剪可以加速模型训练】(https://openreview.net/pdf?id=BJgnXpVYwS)



3。类型 1. RNN 之前的回归模型⑴ 移动平均模型


스크린샷 2025-02-12 오후 12 21 30


⑵自回归模型


스크린샷 2025-02-12 오후 12 21 47


⑶ ARMA(自回归移动平均线)


스크린샷 2025-02-12 오후 12 22 01


⑷ ARMAX(带有外部输入的自回归移动平均线):关于外部变量x,


스크린샷 2025-02-12 오후 12 22 15


⑸ 问题:线性假设,缺乏应使用多少过去数据的标准。



4。类型 2.LSTM

⑴ LSTM(长短期记忆):一种神经网络算法,旨在解决RNN的长期依赖问题。

⑵结构:LSTM由输入门、遗忘门、输出门组成。

状态 1. 单元状态:信息不变地传递。

状态2.遗忘门:如果sigmoid输出为1,则信息被保留;如果为0,则被丢弃。

状态3. 输入门:决定哪些新信息将存储在单元状态中。

状态 4. 单元状态更新:更新单元。

状态 5. 输出门:决定输出。



5。类型 3.GRU

⑴ GRU(Gated Recurrent Unit):与LSTM类似,但结构更简单。

⑵ 结构


图片

图2. GRU的结构

스크린샷 2025-02-12 오후 12 23 15


① 当rt接近0时,中间存储单元忽略ht-1

② 当 zt 接近 1 时,ht 忽略 xt 并尝试维持 ht-1 值。

③ 输入(文本)- 输出(情绪:正面、负面、中性)之间有隐藏层,模型的性能取决于这些隐藏层的结构。



输入:2023.06.27 00:35

results matching ""

    No results matching ""