七月算法深度学习笔记7--RNN

这套笔记是跟着七月算法五月深度学习班的学习而记录的,主要记一下我再学习机器学习的时候一些概念比较模糊的地方,具体课程参考七月算法官网:
http://www.julyedu.com/

RNN:利用神经网络处理序列问题

状态和模型

之前,我们处理的模型叫做IID数据;网络用sample A 做一次forward,无论是分类还是回归,接下来用B做一次forward,A和B没有关系。
这类网络学习到的是一个函数,输入x,得到y.
IID:独立同分布。样本与样本之间是独立的。

更多的数据不满足IID
如序列数据:语音,视频,图像,文本等。
序列数据由两种:时间序列:语音,空间序列:图像
序列生成,如语言翻译,自动文本生成
内容提取,如图像描述
七月算法深度学习笔记7--RNN_第1张图片

序列样本

序列问题可以简单分为五种
七月算法深度学习笔记7--RNN_第2张图片

第一种:函数问题(不是序列)
第二种:一到多
第三种: 多到一
第四种:间隔多到多
第五种:多到多
RNN不仅能够处理序列的输入,也能得到序列的输出,这里的序列指的是向量序列。
RNN学习出来的是程序(状态机),不是函数

典型应用

七月算法深度学习笔记7--RNN_第3张图片
https://github.com/karpathy/neuraltalk2
一到多 输入是一张图片,而输出一个文本序列(输入和输出至少由一个是序列)

七月算法深度学习笔记7--RNN_第4张图片
http://vlg.cs.dartmouth.edu/c3d/
多到一: 输入一个文本,对文本分类(文本是变长的);
视屏中event的检测问题:(在一组视屏中找到投篮的视屏)

七月算法深度学习笔记7--RNN_第5张图片
间隔多到多: 语言翻译

七月算法深度学习笔记7--RNN_第6张图片
http://research.microsoft.com/apps/pubs/default.aspx?
id=264836
多到多:视屏的描述,自动给出视屏的解说文字。

序列预测

输入是序列,输出也是序列,output是下一个序列。用于做生成模型。(音乐生成器)
七月算法深度学习笔记7--RNN_第7张图片
f通常很难建模;为了模拟f,设计g模型,也是依赖以前的输入和以前的状态(引入状态变量)
如何来解释这个问题呢?

序列预测模型

RNN不对样本进行结构化的描述,用神经元的规模和乘数拟合。好处:end to end的问题。
七月算法深度学习笔记7--RNN_第8张图片
左图:前向:x输入,经过运算(sigmoid)得到h(x),再经过运算得到输出,把前一次的状态(h(t-1))参与到运算中。
最后的输出根据新的联合的结果,做一次全连接得到y;
也可以表示为右图:
七月算法深度学习笔记7--RNN_第9张图片

h0和x0可以随意定义,预测值可以作为下一次的输入。

RNN训练

七月算法深度学习笔记7--RNN_第10张图片

七月算法深度学习笔记7--RNN_第11张图片
每一步定义的损失值相加。(不加权)
可以看到,下图中红框里的式子的求导
七月算法深度学习笔记7--RNN_第12张图片

使用链式规则,形成连乘的展开,连乘可能会出现一些问题,如果W小于1,则连乘可能会趋近于0,如果W非常大,连乘的结果可能越来越大。
这就是梯度的消失和爆炸
七月算法深度学习笔记7--RNN_第13张图片
这里的消失和弥散的原因与之前的不同,这里消失和弥散是由与序列展开造成的,而不是因为网络空间上的乘积很多造成的。如果网络由多个隐层,就会加剧消失和弥散。

BPTT算法:解决方案

七月算法深度学习笔记7--RNN_第14张图片
但是实际中用的很少,因为W的连乘是不可避免的。
同常使用RNN的改进形态:
通过输入输入设一些门限:
七月算法深度学习笔记7--RNN_第15张图片
应用最为广泛,成功的RNN
七月算法深度学习笔记7--RNN_第16张图片
一个block由两个输出,加入了新的变量C_cell, cell的state的值有的神经元是长期的,有的是短期的。h是立即用来的到输出的,c一直在step中传递。可能是两步以前的值,也可能是100步以前的值,即c中有的维度是很久以前的状态,有的是很近的状态. 每个A block叫做一层
七月算法深度学习笔记7--RNN_第17张图片

LSTM: forget / input unit
七月算法深度学习笔记7--RNN_第18张图片
h(t-1)和x作为两个输入 【】表示相乘再相加。f控制遗忘多少,

LSTM: update cell
七月算法深度学习笔记7--RNN_第19张图片
ft:控制保留状态的百分比。体现了使用long memory 还是 short memory.
it: 保证Ct可调整。由多少更新。

LSTM: output
七月算法深度学习笔记7--RNN_第20张图片
ht根据ot更新

整体过程
七月算法深度学习笔记7--RNN_第21张图片
加入的节点阻断了求导的路径,使得有一些求导的路径断开。

LSTM其他变形

七月算法深度学习笔记7--RNN_第22张图片

使用LSTM

复杂度高,难以训练
七月算法深度学习笔记7--RNN_第23张图片

参考资料:
七月算法:http://www.julyedu.com/
图片来自于课程PPT

你可能感兴趣的:(DeepLearning)