CS231N Lecture12 RNN

Rongying Liu 课程

Lecture12 RNN

循环神经网络:以某种顺序的过程,处理顺序问题和非顺序的问题

隐藏层的更新

如图,呈递归关系。

注意:在每个时间步中,使用的f函数以及参数都是相同的。即一直使用相同的权重矩阵。其中x_{t}为当前时间步的输入向量。

h_{t}=f_{W}(h_{t-1},x_{t})

image

举例:Vanilla RNN

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

image

用计算图来理解RNN:

1.多对多

y->L 求loss(举例:可以应用交叉熵损失 )再对每个时间步的loss求和得到最终的LOSS

image

2.多对一

例如:视频分类

image

3.一对多

例如:分析图像生成字幕…

输入0或者将前一步输出再输入

image

image

Sequence 2 Sequence:多对一+一对多

类似于编码器+译码器;

image

举例:character-level language model

使用one-hot编码.

image

举例:取样的character-level language model

在测试时,每采样一个字符,反馈给模型,继续进行生成。

image

单热向量 one-hot

单热向量的矩阵乘法只是从权重矩阵中提取一列,没有什么意义。

所以,我们经常在输入层和隐藏层之间放置一个单独的嵌入层,用来进行之后的计算。

image

时间截断反向传播:Truncated Backpropagation through time

取一个初始子集(10-100token),将其前序传递展开,求loss,然后通过初始块反向传播,对权重矩阵进行更新。

永远向前携带隐藏层,但只能反向传播一些较小的步骤

image

使用举例:

Image Captioning

image

迁移学习。首先使用一个在imagenet预训练过的CNN模型,去掉最后两层。

(x:输入,h:隐藏层,v:cnn输入的特征向量,每个对应不同的矩阵)

使用[start]和[end]的token作为一次分析的开始指令与结束指令。

Visual Q uestion Answering(VQA)

image

Visual Dialog: Conversations about images

image

Visual Language Navigation: Go to the living room

image

梯度流

以Vanilla RNN 举例。

image

如果梯度>1,最终会爆炸型增长;<1,最终无限趋于零。

1.Gradient clipping 梯度裁剪 :克服梯度爆炸

在反向传播时,检查梯度的范数,如果过大,将其裁剪,再继续反向传播

image

2.Long Short Term Memory (LSTM):克服梯度消失

在每个时间步使用两个向量:
$$
Cellstate(ct)+Hiddenstate(ht)
$$
image

如何作用的?

使用四个gate(i/f/o/g)来决定下一个LSTM状态。

公式如图。

image

对于LSTM,其四个门来源于h_{t-1}与x_{t}与权重矩阵W相乘,然后输出四个门

而反向梯度传播,只与f gate 进行乘法(如果f接近0,有可能破坏信息,接近1不可能破坏), 解决了梯度消失的问题。

image

多层/深度循环

将隐藏层作为序列输入至另一个RNN….

image

GRU

image

总结:

image

  • 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.
Comments