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时刻,输入是
x
t
x^t
xt,经过四个不同的变换,转换为
z
,
z
i
,
z
o
,
z
f
z,z^i,z^o,z^f
z,zi,zo,zf。
z
z
z的第i维度的值作为第i个block的输入,其他3种
z
z
z分别作为三个gate的输入。此时,memory中的值组成的vector为
c
t
−
1
c^{t-1}
ct−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的应用

分类问题

预测文章的关键词汇

上面生成的
O
T
O_T
OT作为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

将两种结合起来,可以做的更好。

本文是李宏毅《Deep Learning》课程的学习笔记,重点探讨RNN及其变体LSTM。介绍了RNN的基本结构,如何用RNN解决问题,以及LSTM的工作原理和优势。还讨论了RNN的问题,如梯度消失,并提出解决方案。此外,文章还涵盖了RNN在序列到序列任务和注意力模型中的应用,以及神经图灵机的概念。

1046

被折叠的 条评论
为什么被折叠?



