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

本文是李宏毅《Deep Learning》课程的学习笔记,重点探讨RNN及其变体LSTM。介绍了RNN的基本结构,如何用RNN解决问题,以及LSTM的工作原理和优势。还讨论了RNN的问题,如梯度消失,并提出解决方案。此外,文章还涵盖了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时刻,输入是 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} ct1
在这里插入图片描述
多个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

在这里插入图片描述

应用

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

Deep & Structured

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值