CS231N Lecture12 RNN
Lecture12 RNN
循环神经网络:以某种顺序的过程,处理顺序问题和非顺序的问题
隐藏层的更新
如图,呈递归关系。
注意:在每个时间步中,使用的f函数以及参数都是相同的。即一直使用相同的权重矩阵。其中x_{t}为当前时间步的输入向量。

举例:Vanilla RNN
h_{t-1}乘以矩阵,x_{t}乘以另一个矩阵,然后使用tanh得到新状态,输出y_{t}是h_{t}的线性变换

用计算图来理解RNN:
1.多对多
y->L 求loss(举例:可以应用交叉熵损失 )再对每个时间步的loss求和得到最终的LOSS

2.多对一
例如:视频分类

3.一对多
例如:分析图像生成字幕…
输入0或者将前一步输出再输入


Sequence 2 Sequence:多对一+一对多
类似于编码器+译码器;

举例:character-level language model
使用one-hot编码.

举例:取样的character-level language model
在测试时,每采样一个字符,反馈给模型,继续进行生成。

单热向量 one-hot
单热向量的矩阵乘法只是从权重矩阵中提取一列,没有什么意义。
所以,我们经常在输入层和隐藏层之间放置一个单独的嵌入层,用来进行之后的计算。

时间截断反向传播:Truncated Backpropagation through time
取一个初始子集(10-100token),将其前序传递展开,求loss,然后通过初始块反向传播,对权重矩阵进行更新。
永远向前携带隐藏层,但只能反向传播一些较小的步骤

使用举例:
Image Captioning

迁移学习。首先使用一个在imagenet预训练过的CNN模型,去掉最后两层。
(x:输入,h:隐藏层,v:cnn输入的特征向量,每个对应不同的矩阵)
使用[start]和[end]的token作为一次分析的开始指令与结束指令。
Visual Q uestion Answering(VQA)

Visual Dialog: Conversations about images

Visual Language Navigation: Go to the living room

梯度流
以Vanilla RNN 举例。

如果梯度>1,最终会爆炸型增长;<1,最终无限趋于零。
1.Gradient clipping 梯度裁剪 :克服梯度爆炸
在反向传播时,检查梯度的范数,如果过大,将其裁剪,再继续反向传播

2.Long Short Term Memory (LSTM):克服梯度消失
在每个时间步使用两个向量:
$$
Cellstate(ct)+Hiddenstate(ht)
$$
如何作用的?
使用四个gate(i/f/o/g)来决定下一个LSTM状态。
公式如图。

对于LSTM,其四个门来源于h_{t-1}与x_{t}与权重矩阵W相乘,然后输出四个门。
而反向梯度传播,只与f gate 进行乘法(如果f接近0,有可能破坏信息,接近1不可能破坏), 解决了梯度消失的问题。

多层/深度循环
将隐藏层作为序列输入至另一个RNN….

GRU

总结:

- Title: CS231N Lecture12 RNN
- Author: Rongying Liu
- Created at : 2025-02-24 19:27:29
- Updated at : 2025-02-25 21:05:46
- Link: https://github.com/Roinnnn11/Roinnnn11.github.io/2025/02/24/CS231N/CS231N-Lecture12/
- License: This work is licensed under CC BY-NC-SA 4.0.