CS231n 2022笔记- RNN

本文深入探讨RNN在网络中的应用,包括Vanilla RNN的工作原理、反向传播过程以及在Image Captioning等序列任务中的具体应用。RNN因其处理有序数据的能力,被用于从图像生成文本描述、视频动作预测到视频字幕生成等多个场景。尽管存在反向传播时的梯度消失和爆炸问题,但其在序列到序列任务中的潜力不容忽视。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RNN网络就是处理大小可变的有序数据的一类模型

1 Vanilla Neural Networks
2 Image Captioning  image -> sequence of words
3 action prediction    sequence of video frames -> action class
4 Video Captioning   Sequence of video frames -> caption
5 Video classification on frame level
 

Vanilla RNN

RNN有一个隐藏态,在读入输入后更新并返回给模型自己,和下一个tIme step读入的数据输出新的隐藏态。这大概就是RNN中循环recurrent的含义

 

如果想让模型在每一个时间步产生输出,就用全连接层 根据每一步的隐藏态做出决策。注意,在每一时步用的是同一函数f和同一权重w。

 

many to many: 由于使用的是同一个节点,所以在反向传播过程中,每一时步计算出来的权重梯度会累加在w上。L是损失。在每一时步下都有一个和输入序列对应的真实标签,最终的损失值就是所有单独损失之和

 

 many to one: 根据网络最终的隐藏状态做决策

 

 one to many: 接受固定长的输入项,输出不定长的输出项

Sequence to Sequence: 输入不定长,输出不定长

左边把不定长序列编码为单独的向量,右边解码

 例子

训练阶段: 将输入字母变成one ho向量,根据每一个输入的字母,预测下一个字母,可以使用Softmax来度量预测的损失

 预测阶段:输入只是前缀h,之后下一个时间步的输入是上一个时间步的输出。下图中,h输入后并没有选择得分的o,而是选择了e。视频的解释是根据输出结果的概率分布而不是得分,让输出结果多元化。理解:根据一个h来预测整个单词还是太勉强了。这地方可以参考beam search集束搜索的概念,不是输出可能性最大的结果,而是固定记录几个选项,随着时间步的增长,从中挑优

 

反向传播

如果序列很长,那么反向传播要遍历整个序列,时间长,占内存,难收敛

 

 训练的时候向前计算若干步(比如100),然后沿着这个子序列反向传播

 RNN优缺点

 Image Captioning

结构

CNN的输出不是softmax向量,而是直接把4096维的向量输出,作为图片的信息输入RNN。计算隐藏层的时候增加一个矩阵,以便在每一个时间步添加图片信息

 

和前面讲的一样,RNN把上一个时间步得到的结果作为下一个时间步的输入

 

 

 

 

 (实在是要看崩溃了,放弃了)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值