cs231n_2018_lecture10_notes_RNN基础

这一章节就是主要围绕RNN(recurrent neural network)的概念和计算机视觉方面的应用了,由于我之前的工作都是为了图像的检测识别分类,知识侧重于经典的图像处理、经典的机器学习算法和卷积神经网络,对RNN的计算原理之类的没那么清晰(留坑,后面补上)。简要概括如下。


Vanilla Neural Network结构分类:

Vanilla是常见的RNN之一,结构相对简单明了,主要分为one to one、one to many、many to one、many to many这几种,如下

cs231n_2018_lecture10_notes_RNN基础

第三个many to one例如可应用于情感分析(Sentiment Classification)(用途是将一串文本语言序列转换成情感),第四个many to many例如可应用于机器翻译(Machine Translation)(用途是将一串文本语言转换成另外一串),第五个many to many例如可应用于基于帧级的视频分类(Video classification on frame level)。可以看出RNN倾向于“序列处理”,所以它在自然语言处理NLP更受欢迎,个人目前也对NLP起了很大兴趣,后面有时间定好好学下。

 

Vanilla Neural Network序列处理:

Vanilla在每一时间步长(time step)使用一个循环公式,

cs231n_2018_lecture10_notes_RNN基础

单层的构造cs231n_2018_lecture10_notes_RNN基础  ,不带输出的计算图cs231n_2018_lecture10_notes_RNN基础

多层堆叠即直接向右扩展,其中many to many展示如下

cs231n_2018_lecture10_notes_RNN基础

 

Vanilla Neural Network前向/后向传播:

【待补充】【准备拜读下"Understanding LSTM Networks"】【看完了,稍微总结下,做个翻译,简单贴点图...】

所谓循环神经网络,“循环”体现在它的执行单元,具有一种重复神经网络的链式形式,它的通用结构如图(可以看出RNN本质是跟序列/列表相关的,所以应用于处理序列和转化成序列的非序列问题

cs231n_2018_lecture10_notes_RNN基础

目前RNN应用在语音识别、语言建模、机器翻译、图像描述等方面,详细的应用介绍看这里。其中比较突出的RNN是LSTM。

RNN相比其他NN它开始关注“过去态”,它的“记忆功能”更符合人类“神经网络”的生物性质,LSTM则是RNN中的佼佼者,得到了广泛的应用。LSTM和常规RNN的结构差别:

cs231n_2018_lecture10_notes_RNN基础        cs231n_2018_lecture10_notes_RNN基础

LSTM的最大特点在于它的cell state ,就是右图上上方贯穿整个运行过程的水平线,它直接在传播过程中运行,只有些少量的线性交互,保证了信息可以很容易地在上面流传能够按需求保持不变,LSTM跟输入和前面状态的交互通过gate来决定。

1.forget gate

cs231n_2018_lecture10_notes_RNN基础

该门会读取 cs231n_2018_lecture10_notes_RNN基础cs231n_2018_lecture10_notes_RNN基础,输出一个在 cs231n_2018_lecture10_notes_RNN基础cs231n_2018_lecture10_notes_RNN基础 之间的数值给每个在细胞状态 cs231n_2018_lecture10_notes_RNN基础 中的数字。cs231n_2018_lecture10_notes_RNN基础 表示“完全保留”,cs231n_2018_lecture10_notes_RNN基础 表示“完全舍弃”。在语言模型的例子即试图基于已经看到的上文预测下一个词中,cell state可能包含当前主语的性别,因此正确的代词可以被选择出来,而当我们看到新的主语,我们希望忘记旧的主语。

2.input gate

cs231n_2018_lecture10_notes_RNN基础

该门用于决定新的输入中什么样的信息记录下来放到cell state中,sigmoid 层称 “input gate layer” 决定什么值我们将要更新,然后,一个 tanh 层创建一个新的"candidate values"cs231n_2018_lecture10_notes_RNN基础,会被加入到状态中。在语言模型的例子中,在增加新的主语的性别到cell state中,来替代旧的需要忘记的主语。

3.update gate

就是前面两个gate的统称,决定完什么信息不要什么信息需要然后更新cell state。

cs231n_2018_lecture10_notes_RNN基础

4.output gate

它通过cell state和x和hidden state决定该输出什么信息,在语言模型的例子中,因为他就看到了一个主语,可能需要输出与一个 动词,例如可能输出主语是否是单数还是负数,仍然就可以知道动词需要作什么样的词形变化。

 

LSTM的几个流行的改进版本:1.由 Gers & Schmidhuber (2000) 提出,使用“peephole connections”,使得gate接收cell state来的信息;2.耦合了forget gate 和 input gate,认为尽在被舍弃的地方加入新信息同时在加入信息的地方舍弃旧信息;3.(目前为止最受欢迎的)GRU(the Gated Recurrent Unit),使得forget gate和input gate设计成一个update gate,使得cell state和hidden state设计成一个hidden state。

 

RNN的一大步成功是LSTMs;另外一大步成功就是attention,思想是让RNN的每一步去从些大信息集中提取信息,例如image captioning,每次选择图像中的一部分来对应地生成每个词汇。

 

应用之image captioning:

image captioning即读取图片信息用自然语言表述出来,有论文“Explain Images with Multimodal Recurrent Neural Networks, Mao et al.” 、 “Deep Visual-Semantic Alignments for Generating Image Descriptions, Karpathy and Fei-Fei”、 “Show and Tell: A Neural Image Caption Generator, Vinyals et al.”、 “Long-term Recurrent Convolutional Networks for Visual Recognition and Description, Donahue et al.”、 “Learning a Recurrent Visual Representation for Image Caption Generation, Chen and Zitnick”。

cs231n_2018_lecture10_notes_RNN基础  即图像使用CNN提取特征而后不送给最后的FC层输出得分/分类结果,而是将特征作为输入送给RNNcs231n_2018_lecture10_notes_RNN基础

而后,有提出“Image Captioning with Attention”,它使用了Long-Short-Term-Memory(LSTM)的RNN,在生成描述的时候关注空间上的不同位置。

cs231n_2018_lecture10_notes_RNN基础

 

应用之Visual Question Answering:

Visual Question Answering即视觉问答系统,也是读取图像信息然后根据信息判断选择。

而后,有提出“Visual Question Answering with Attention”,它使用了LSTM(LSTM划重点,理解一下)(这个跟with Attention是挂钩的?)可以参考文章 “Visual 7W: Grounded Question Answering in Images,Zhu et al”

cs231n_2018_lecture10_notes_RNN基础

 

总结:

1.RNN在架构设计上提供了很大的灵活性

2.Vanilla RNNs结构简单但不好(比如会出现梯度爆炸或梯度消失现象)

3.常用另外两个RNNs,即LSTM和GRU,仍然需要注意反向传播时的梯度爆炸或消失问题

4.趋势:更好、更简单、更易理解

5.不够熟悉是真的有点让人头大啊 , 得加油了 ,好好学习, 天天向上