循环神经网络
RNN模型
RNN基本结构
- 是隐藏层。
输入数据是有顺序的,比如输入一句话,是存在先后关系的。前一层的输出作为下一层的输入,可以保存数据的时间步特征(上下文信息)。
它接受一个输入(比如一个词),并输出一个结果(比如对应的词的预测)。在这个过程中,RNN 会记住之前的输入信息,并将其与当前的输入一起使用来产生输出。这种记忆和信息传递的机制使得 RNN 能够处理序列数据,并且能够考虑到上下文信息。
类比在阅读一本小说,一次读一句。每当你阅读下一句时,你会根据前面句子的内容来理解当前句子的意思。这种理解是基于你之前读过的内容,并且会影响你对后面内容的理解。在这个过程中,你会不断地更新你对故事的理解,并且将之前的信息与新信息结合起来。
RNN与全连接的区别:
RNN数学模型
输出层:
隐藏层:
权重共享:W、V、U参数只有一个(参数过多容易造成过拟合)
RNN案例
前向传播
RNN会导致梯度消失(梯度为0)和梯度爆炸(梯度为∞)的问题 → LSTM
第一个时间步:
第二个时间步:
第三个时间步:
反向传播
时间反向传播算法(BPTT):需要求解所有时间步的梯度之后,利用多变量链式求导法则求导求解梯度。
在RNN中,梯度消失通常是由于网络的时间步数较大,导致梯度在时间上反复相乘并逐渐减小。当RNN尝试学习长期依赖关系时,梯度消失会导致网络难以有效地传播远距离的依赖信息,从而影响网络的性能。
优化 → 长短时记忆网络(LSTM):通过引入门控机制,能够更好地控制梯度的流动,从而缓解了梯度消失的问题,使得网络能够更好地学习长期依赖关系。能学习到更长久时间步的信息。
LSTM模型
LSTM与RNN对比
LSTM基本结构
- x:输入(短期记忆)
- y:输出
- c:细胞状态(长期记忆)
- s:隐藏层
LSTM门结构
遗忘门
决定从细胞状态中丢弃什么信息。遗忘们门会读取上一个输出和当前输入,做一个sigmoid的非线性映射,然后输出一个值域为0~1的向量,这个向量和细胞状态相乘,保留有用的信息。
输入门
输入门决定了要从新的候选值中添加哪些信息到细胞状态中。它通过考虑当前输入和前一个时间步的隐藏状态来输出一个介于0和1之间的值,表示要保留多少新信息。可以学习新的信息并更新细胞状态。
更新细胞状态
输出门
输出门决定了基于当前输入和隐藏状态应该输出什么。它通过综合考虑当前输入和前一个时间步的隐藏状态来输出一个介于0和1之间的向量。
LSTM如何缓解梯度消失
- 遗忘门通过 sigmoid 函数来控制需要遗忘的记忆,输出值在 0 到 1 之间。当遗忘门的输出值接近 0 时,网络可以选择性地忘记一部分记忆,从而限制梯度的传播。
- 输入门通过 sigmoid 函数来控制新信息的输入量,以及一个 tanh 函数来确定要更新的新信息。网络可以控制新信息的量,避免梯度在传播过程中变得过大。
- 输出门通过一个 sigmoid 函数来控制输出的记忆量,以及一个 tanh 函数来确定要输出的记忆。通过输出门的控制,网络可以选择性地输出信息。