CS231n 随堂笔记 - Recurrent Neural Networks 递归神经网络

第九章 Recurrent Neural Networks 递归神经网络

与传统的前馈神经网络(如全连接网络)不同,RNN 具有 循环结构,能够处理和记住序列中的时间依赖性

9.1 Sequential Processing

输入和输出对应关系可以有一对一、一对多、多对一、多对多、不定长对不定长等等等等,有着不同的应用场景。

9.2 Recurrent Neural Network

9.2.1 Internal hidden state 内部隐藏态

内部隐藏态会在 RNN 每次读入新的输入时更新,并且 RNN 生成输出。

9.2.2 RNN 的计算图展开

首先是多对多

多对一、一对多 类似:

Sequence to Sequence(不定长对不定长)

可以当作 多对一 + 一对多。一般语言翻译会涉及到。

9.3 RNN 的训练和测试

9.4 Backpropagation through time 沿时间的反向传播

因为输出时是随着时间推移输出,所以反向传播要“逆着时间往回”。将损失函数的梯度通过每个时间步反向传播到初始时间步。

但是会引起梯度消失 / 爆炸,以及算力不足。

所以就有了 Truncated 的(沿时间截断反向传播算法):

9.5 RNN 的局限性

RNN 主要进行局部模式学习,记忆容量不足,所以只能写出看似连贯的文字,没有全局的语义理解。因为前期的记忆会慢慢被“冲淡”。

改进机制:LSTMGRU

LSTM (长短期记忆网络):通过遗忘门(决定保留多少旧记忆)、输入门(控制新信息注入)和输出门(决定输出的信息量)显示管理信息流。

GRU (门控循环单元):简化版 LSTM,合并部分门控,但仍能有效缓解梯度消失。

9.6 Image Caption 图像标注

输入是图像,输出是语义信息。

将输出的语义信息看作可变长度的字符序列,适配 RNN。

可以采用 监督学习 的方式,也可以 GAN

在训练数据范围内的测试数据可以表现的很好,但是在没有出现过的形象面前表现欠佳(以及无法区分扔球和抓球等)。

9.7 Image Captioning with Attention

9.7.1 Attention 机制

CNN 输出的是一组二维特征图 patch,记作 L × D L \times D L×D,每个 patch 是一个区域(图像块)向量 v i v_i vi

当前隐藏状态 h t h_t ht(RNN)被用作 Query,与所有 v i v_i vi 计算注意力分数 a i = a t t e n t i o n ( h t , v i ) a_i = attention(h_t, v_i) ai=attention(ht,vi)

将所有特征向量 v i v_i vi 按注意力加权求和得到 z t = Σ α i ∗ v i z_t = Σ α_i * v_i zt=Σαivi

z t z_t zt 作为上下文送入 decoder,辅助生成下一个词。

  • Hard attention: 强制模型每一步只选一个位置
  • Soft attention: 加权组合图像位置中的所有特征

9.7.2 视觉问答

比如问图中哪个是濒危动物。这里有两种思考方式,前面用的是一对多的机制,这里也可以把语言序列 + 图像想成多对一的输入,但其实一般还是看成一个向量。

问题向量和视觉向量怎么结合?

一般来说直接连接起来,传入 CNN 即可。也有作乘法啥的。

9.8 Multilayer RNNs 多层递归神经网络

多层意味着多个隐藏状态(hidden state)。一般使用二、三、四层的 RNN,不会太深。低层的作为高层的输入。效果一般会更好。

9.9 Gradient flow in RNN

9.9.1 Vanilla RNN gradient flow (Vanilla 可以理解为“原始的”“传统的”)

多层连续反向传播,每层都乘以权重矩阵的转置之类的:

不是梯度消失就是梯度爆炸(取决于矩阵的最大奇异值)。有一种解决方式是 梯度截断 ,就是发现 L2 范式太大了的时候,直接“剪断”(具体要见代码)。

9.9.2 Long Short Term Memory (LSTM)

设计一种更好的结构控制梯度流动。

LSTM 的反向传播

  1. h t h_t ht 开始到 c t c_t ct 后,经过这第一个 tanh() 函数就再也不经过了,一路畅通
  2. 经过那个逐元素乘法结点时,会将 遗忘门 f 的数值传递。而遗忘门每次都在变,所以不会随意的梯度消失 / 爆炸
  3. 都用的逐元素乘法,开销比矩阵乘法小

其中权重矩阵的反向传播:什么因为 c t c_t ct保存了每一个时间步上的权重的局部梯度就很好,没听懂。

9.9.3 GRU

利用元素乘法门和加法避免梯度消失 / 爆炸。类似 LSTM。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值