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时刻,输入是,经过四个不同的变换,转换为。的第i维度的值作为第i个block的输入,其他3种分别作为三个gate的输入。此时,memory中的值组成的vector为
多个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的应用
分类问题
预测文章的关键词汇
上面生成的作为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
应用
Deep & Structured
对比RNN和Structured Learning
将两种结合起来,可以做的更好。