CS231 第十讲 循环神经网络

课程视频地址:https://study.163.com/courses-search?keyword=CS231

课程主页:http://cs231n.stanford.edu/2017/

这一讲介绍了循环神经网络(RNN)。

RNN基本概念

RNN用于处理序列数据,根据输入输出的数量,RNN有如下几种形式

一般的RNN架构如下

每一步中,我们使用$t$时刻的输入$x_t$和$t-1$时刻的状态$h_{t-1}$计算$t$时刻的状态$h_t$,然后利用$h_t$计算输出$y_t$,所以$h_t​$的公式如下

常见的形式如下

实际中,一般将第二张图片中的架构展开,这样更便于理解。

多对多

多对一

一对多

例子

来看个生成字母的例子,假设字母为[h,e,l,o],可以利用如下网络生成字母

还有一个例子是Image Captioning,即给图像打标签,处理方法是现将图像喂给CNN,然后将全连接层的输出结果喂给RNN,具体形式如下

LSTM

首先对一般的RNN形式作改写

反向传播的梯度流如下

所以如果$W$的最大奇异值大于$1$,那么会有梯度爆炸的问题;如果最大奇异值小于$1$,就会有梯度消失的问题。解决这个问题的方法是使用LSTM,两者对比如下

更详细的解释如下

由公式不难看出,$c_{t}$到$c_{t-1}$的反向传播不需要乘以矩阵$W$,所以不会有梯度消失或者梯度爆炸的问题,反向传播的梯度流如下

本文标题:CS231 第十讲 循环神经网络

文章作者:Doraemonzzz

发布时间:2019年02月13日 - 11:42:00

最后更新:2019年02月15日 - 11:48:00

原始链接:http://doraemonzzz.com/2019/02/13/CS231 第十讲 循环神经网络/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。