【循环神经网络RNN第一期】循环神经网络RNN原理概述
目录
- 🧠 什么是循环神经网络(RNN)?
- 🔁 RNN 的结构图
- 🔄 RNN 的“记忆”与问题
- RNN梯度推导
- 🧬 LSTM:解决长期依赖问题
- 🧱 LSTM 的核心结构
- LSTM总结
- 参考
人类在思考的时候,会从上下文、从过去推断出现在的结果。传统的神经网络无法记住过去的历史信息。
循环神经网络是指随着时间推移,重复发生的结构。它可以记住之前发生的事情,并且推断出后面发生的事情。用于处理时间序列很好。所有的神经元共享权值。如下图所示。
🧠 什么是循环神经网络(RNN)?
循环神经网络(Recurrent Neural Network, RNN) 是一类用于处理序列数据的神经网络结构,具有“记忆”能力,适用于自然语言处理、时间序列预测、语音识别等任务。
与传统的前馈神经网络(如全连接网络、卷积神经网络)不同,RNN 的每一个时刻的输出不仅依赖于当前的输入,还依赖于前一个时刻的隐藏状态(即“记忆”)。
🔁 RNN 的结构图
RNN 的基本结构可以展开为一个链式结构:
xt → ht → Ot↑ht-1
其中:
- xt 是时间步 t 的输入
- ht 是时间步 t 的隐藏状态(记忆)
- Ot 是时间步 t 的输出
- ht-1 是前一时间步的隐藏状态
公式如下:
ht = tanh(Wxh * xt + Whh * ht-1 + bh)
Ot = Why * ht + by
可以看到,隐藏状态 ht 是由当前输入 xt 和前一个隐藏状态 ht-1 一起决定的。
🔄 RNN 的“记忆”与问题
RNN 虽然可以捕捉序列的上下文信息,但在实践中存在两个主要问题:
❗ 梯度消失 / 梯度爆炸
在长序列训练中,反向传播时的梯度会因为不断地链式相乘而:
- 趋近于零(梯度消失),导致网络无法学习长期依赖;
- 迅速变大(梯度爆炸),导致模型不稳定。
这使得 RNN 在处理长期依赖问题时效果不佳。
记住短期信息:比如预测“天空中有__”,如果过去的信息“鸟”离当前位置比较近,则RNN可以利用这个信息预测出下一个词为“鸟”
不能长期依赖:如果需要的历史信息距离当前位置很远,则RNN无法学习到过去的信息。这就是不能长期依赖的问题。
所有的RNN有着重复的结构,如下图,比如内部是一个简单的tanh 层。
RNN梯度推导
🧬 LSTM:解决长期依赖问题
为解决上述问题,LSTM(Long Short-Term Memory) 网络被提出,是一种特殊的 RNN 结构,能够更好地捕捉长期依赖信息。
LSTM 通过引入 “门控机制” 控制信息的保留与遗忘:
🧱 LSTM 的核心结构
单元状态:单元状态像一个传送带,通过整个链向下运行,只有一些小的线性作用。信息就沿着箭头方向流动。
LSTM的门结构 可以添加或者删除单元状态的信息,去有选择地让信息通过。它由sigmoid网络层 和 点乘操作组成。输出属于[0,1]之间,代表着信息通过的比例。
LSTM 的每个单元由以下几个部分组成:
1、遗忘门(Forget Gate),控制哪些信息要丢弃(忘记):
ft = σ(Wf · [ht-1, xt] + bf)
2、输入门(Input Gate),决定哪些新信息被存入记忆:
it = σ(Wi · [ht-1, xt] + bi)
Ct~ = tanh(WC · [ht-1, xt] + bC)
3、更新记忆单元(Cell State)
Ct = ft * Ct-1 + it * Ct~
4、输出门(Output Gate),决定最终输出:
ot = σ(Wo · [ht-1, xt] + bo)
ht = ot * tanh(Ct)
其中:
- σ 是 sigmoid 激活函数
- tanh 是双曲正切函数
- ht 是输出
- Ct 是单元状态
LSTM总结
核心结构如下图所示:
参考
1、循环神经网络