CS231n Lecture10


在复习时,老师提到了ResNet的优点:添加了L2范数之后,会使得所有参数趋于0,从而使模型舍弃不需要的层;反向传播时可以通过残差网络使模型更快收敛。

Recurrent Neural Network的基本类别

在这里插入图片描述
one to one模型是一种基本的模型,之前使用的卷积神经网络也可以归到这一类模型上,slides中称其为Vanilla Neural Network。
one to many模型可用在Image captioning,当输入一张图片之后,我们希望输出一个该图片的描述。
many to one模型可用在Sentiment Classification,根据输入的句子,判断作者的感情。
many to many模型(第一个many to many模型)可用在machine translation,输入一种语言翻译成另一只语言。
最后一个many to many模型可用在对输入video按帧分类。

Recurrent Neural Network分析

在这里插入图片描述
对于RNN的状态更新我们可以用一个 recurrence formula来表示
h t = f W ( h t − 1 , x t ) h_t = f_W(h_{t-1}, x_t) ht=fW(ht1,xt)
由式子可知,虽然输入和每次计算的状态不同,但权重 W W W 和计算式子 f f f 都是不变的。
h t = tanh ( W h h h t − 1 + W x h x t ) h_t = \text{tanh}(W_{hh}h_{t-1} + W_{xh}x_t) ht=tanh(Whhht1+Wxhxt)
y t = W h y h t y_t = W_{hy}h_t yt=Whyht
在这里插入图片描述
由图可知,在RNN中,我们对每个状态计算梯度时,都需要对 W W W 进行更新,所以 d W dW dW 为所有状态的梯度之和。
在这里插入图片描述
在这里插入图片描述

根据RNN的流程图,我们可以知道在forewards中,loss function需要计算每一个状态的loss,那么在backwards中,我们也需要计算所有的状态得到梯度,但是这样计算需要极高的损耗,因此在训练时我们针对整个时间序列只计算一个子序列的loss,极大减少了梯度计算的复杂度。
文中给出一个基于numpy实现的rnn网络: https://gist.github.com/karpathy/d4dee566867f8291f086

Image Captioning

在这里插入图片描述
在Image Captioning中,我们将卷积卷积神经网络最后一层全连接层(产生类别数的向量)和soft Max层去除,将剩余层的输出作为RNN网络的输入,即RNN网络的formula 从 h = tanh ( W x h ∗ x + W h h ∗ h ) h=\text{tanh}(W_{xh} * x + W_{hh} * h) h=tanh(Wxhx+Whhh) 变为 h = tanh ( W x h ∗ x + W h h ∗ h + W i h ∗ v ) h = \text{tanh}(W_{xh} *x + W_{hh} * h + W_{ih} * v) h=tanh(Wxhx+Whhh+Wihv)
在这里插入图片描述
取RNN网络的输出作为下一个状态的输入。当RNN网络中输出 &lt;END&gt;  \text{&lt;END&gt; } <END> 标记时,停止采样。因此在训练时需要对每个图片的captioning添加 &lt;ENF&gt; \text{&lt;ENF&gt;} <ENF>
15年提出了Attention机制来进行Image Captioning,这里实际上是说在不同时刻对图片中的不同区域进行识别,从而形成更准确的信息。

梯度消失和梯度爆炸

RNN网络由于backward时,梯度流很长,每次更新时要乘以相同的 W W W,因此在这个过程中很容易发生梯度的消失和爆炸。
对于梯度爆炸,我们可以在梯度超过某个阈值之后,对梯度进行切割,即
grad ∗ = ( threshold / grad _ norm ) \text{grad} *= (\text{threshold} / \text{grad}\_\text{norm}) grad=(threshold/grad_norm)
对于梯度消失问题,可以使用LSTM,在一定程度上缓解。
LSTM的介绍,可以参考:https://blog.csdn.net/qq_33669204/article/details/83986047
视频中提出LSTM的关键在于遗忘门,遗忘门在不同的时间会有不同遗忘位置,而且遗忘门是sigmoid,数值在(0,1)之间,数值性质更好。
在初始遗忘门的参数时,尽量使其在训练的出世时值接近1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值