李宏毅《Deep Learning》学习笔记 - RNN

RNN

视频:https://www.youtube.com/watch?v=xCGidAeyS4M
课件:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf

背景问题

在这里插入图片描述

Simple-RNN

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用RNN如何解决问题

在这里插入图片描述
注意:这里不是有3个Network,而是,同一个Network在不同的时间被使用了3次,这里,同样的weight使用相同的颜色表示。

在这里插入图片描述

Network可以更加复杂

在这里插入图片描述

在这里插入图片描述
传说Jordan Network相对而言,会有较好的performance。

在这里插入图片描述

LSTM

上面介绍的RNN是最简单的版本,目前,使用比较多的是下面这种LSTM。
在这里插入图片描述
在LSTM中,有3个gate,用于控制input,output,和forget。
每一个LSTM block有4个Input,1个output。
下面是block的详细信息:
在这里插入图片描述
原先存在memory里面的是c,输入是Z。

LSTM举例说明

下面是LSTM的一个简单例子,输入是3维的,输出是一维的。
下面的when是用于控制3个gate的条件,蓝色方框中的数字是memory的中间结果,下面红色框框中的是最终的输出。
在这里插入图片描述
下面以第一个[3,1,0]为例,看看经过block的输出是什么。其中,各自的权重,都标注在连线上。
在这里插入图片描述
下面是SimpleRNN的简化版本,将其中的neurons替换成LSTM block,就成了LSTM。
在这里插入图片描述
如下面这样的。由于有额外3个gate,所以,参数也会增加为原先的4倍。
在这里插入图片描述
那么,这种有LSTM block的网络,与RNN又有什么关系呢?
我们用下面这幅图来理解。
在t时刻,输入是xtx^t,经过四个不同的变换,转换为z,zi,zo,zfz,z^i,z^o,z^fzz的第i维度的值作为第i个block的输入,其他3种zz分别作为三个gate的输入。此时,memory中的值组成的vector为ct1c^{t-1}
在这里插入图片描述
多个cell是可以同时运算的,用vector直接运行,下面的乘是element-wise的乘。
在这里插入图片描述
上面的计算过程,就是对一个输入的处理过程,然后,将后续的输入继续喂入。
在这里插入图片描述

在这里插入图片描述

训练LSTM

上面介绍的内容是LSTM的使用,后面介绍如何训练LSTM。
在这里插入图片描述
更新weight的时候,使用的方法也是gradient decent,与传统的BP算法稍微有些差异,使用的是BPTT。
在这里插入图片描述

RNN的问题

在这里插入图片描述
RNN的error surface会出现下面的病态的状态,很陡峭。为了解决这个问题,通过clipping,控制增加的幅度。
在这里插入图片描述
为什么在RNN中会出现这种问题呢?
在这里插入图片描述

如何解决

RNN的问题是出在weights在不同的时间点,被反复地使用。从而,导致问题放大。
如何解决这个问题呢?现在常用的方法,就是LSTM。
为什么现在用LSTM代替RNN呢?主要是因为LSTM可以解决Gradient Vanishing的问题。
LSTM是如何解决Gradient Vanishing的呢?在RNN中,每一个时间点,memory里的信息都会被覆盖掉。而在RNN中,memory里的值是会和Input相加,一旦对memory造成影响,那个影响会一直留着,一直到forget gate将memory洗掉。
在这里插入图片描述
GRU中只有两个gate,是将input gate和forget gate联动处理。当input gate打开,forget gate就要启动,负责将memory洗掉。当input gate关闭的时候,forget gate就不覆盖memory中的值。
相较于LSTM,weights更少一些,训练过程会更稳定一些。

还有一些其他的方法,解决Gradient Vanishing
在这里插入图片描述
Hinton提出的方法:Identity Matrix+ReLU效果会很好,可以超过LSTM。

RNN的应用

在这里插入图片描述
分类问题

预测文章的关键词汇
在这里插入图片描述
上面生成的OTO_T作为attention,下面生成vector,再喂给forword network。。。

语音识别
在这里插入图片描述
output比Input短的场景,可以使用RNN。
在这里插入图片描述
不确定input和output谁长的情况,如翻译场景。
在这里插入图片描述
在这里插入图片描述

seq2seq auto-encoder

在文本领域,传统的bag-of-word,对下面的两句话提取的特征是一样的,但是,实际上它们的意思是完全不同的。为了抽取这两句话的特征,可以使用seq2seq auto-encoder的方法。
在这里插入图片描述
在这里插入图片描述
在语音领域,可以将语音片段转成固定长度的特征向量。
在这里插入图片描述
一种应用场景是做语音搜索
在这里插入图片描述
在这里插入图片描述
最后,在RNN Encoder的memory中存放的vector,就是audio segment的representation。
那么,如何训练RNN Encoder呢?
如下图,将RNN Encoder和RNN Decoder一起训练。
在这里插入图片描述

Attention-based Model

在这里插入图片描述

Neural Turing Machine

在这里插入图片描述

应用

Reading Comprehansion
在这里插入图片描述
在这里插入图片描述

Deep & Structured

对比RNN和Structured Learning
在这里插入图片描述
将两种结合起来,可以做的更好。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章