Scalers点评:机器学习小组是成长会的内部小组,这是成长会机器学习小组第19周学习笔记,也是深度学习第8次的复盘笔记
本周学习情况:
本周(20160711—20160717)的学习主要为理论学习。重点介绍了Recurrent Neural Networks在不同情况下的变种、Recursive Neural Networks的基本概念,以及Long Short Term Memory Networks。本周复盘主持是[S290] Ramon。
往期日志:
一、双向循环神经网络:
引入动机:
传统问题对某一时刻预测,只需要正向信息
部分问题对某一时刻预测,同时需要正向和反向的信息 (双向循环网络)
甚至在图像这种2-D数据中,对某一时刻预测,同时需要多个方向的信息
结构表示:
双向循环神经网络与传统循环网络的主要不同在于引入了新的一层隐变量,该层隐变量信息传递的方向与先前隐变量信息传递的方向是相反的,从而使不同方向的时序信息进行互补。
图一,RNN的双向链式结构
同理,在对图片上每个像素进行信息传递的过程中,为了利用不同方向的信息,可以构建4个方向的链式结构,如下图所示
图二,图像处理问题中的四向链式结构
二、编码解码结构:
RNN的不同结构及其处理的应用任务:
将输入序列映射到固定长度的向量(视频分类、语句情感分析等)
将固定长度的特征的向量映射到一个序列(图像描述生成等)
将确定长度的输入序列映射到相同长度的输出序列(词性分析等)
将确定长度的输入序列映射到不同长度的输出序列(机器翻译等)
Encode-Decoder 的基本结构:
编码器RNN(Encode)对输入序列进行处理,生成一个上下文C,通常是一个函数,该函数将隐含层作为输入
解码器RNN(Decode)基于上下文C来生成一个输出序列
图三,编码解码架构,C相当于是一个对输入序列的语义总结
三、深度循环神经网络:
RNN 通常可以分解成三种类型的参数:
从输入状态到隐含状态
从先前的隐含状态带下一个时刻的隐含状态
从隐含状态到输出状态
深度循环网络结构:
可以将以上三种参数看做是一个参数集,表达了一个浅层的网络结构
可以进一步引入更多的层,实现具有更为丰富意义的网络
RNN 在深度上的三种拓展:
隐节点可以分成多层,高层比底层能够表达出更为抽象的信息
增加输入到隐含节点的层数,增加隐含到输出节点的层数,增加了隐含节点的循环路径的长度
在以一条的基础上确定多种循环路径的长度
图四, RNN 在深度上的三种拓展
五、长短期记忆神经网络:
长效的依赖问题:
如公式一所示,在不考虑非线性变换的情况下,t时刻的隐变量相当于0时刻隐变量乘以参数的t次方。如果对参数W进行特征值分解就可以,就会发现t时刻的隐变量依赖于W的特征值
如果特征值大于1,长期迭代容易梯度爆炸
如果特征值小于1,长期迭代容易梯度消失
LSTM模型就是通过引入遗忘门来解决长效依赖问题的
LSTM 的理解一:
从隐节点的角度去理解,隐节点会影响输入门、遗忘门和输出门的状态,从而决定接收数据的程度
图五,LSTM模型的示意图
遗忘门, 用于确定记忆节点中需要记住的信息
输入门,用于确定记忆节点从新数据中获得的信息
记忆节点状态更新,隐节点遗忘后的信息,加上筛选后的输入信息
输出门,用于确定需要输出内容的多少
隐节点输出,通过记忆节点记住的东西和输出们共同确定输出内容
LSTM 的理解二:
从数据流向的角度来理解 LSTM,重点考虑记忆节点的数据流,如下图所示,蓝色就是记忆节点的数据流。其实各个门就是通过作用在这个数据流上,来影响网络记忆的信息的。
图六,从数据流向的角度来理解 LSTM
ScalersTalkID:scalerstalk
本微信公众号作者Scalers,游走在口译世界的IT从业者。微信公众号ScalersTalk,微博@Scalers,网站ScalersTalk.com,口译100小时训练计划群C 456036104
成长会是由Scalers发起的面向成长、实践行动,且凝聚了来自全球各地各行各业从业者的社群。有意入会者请和Scalers直接联系,我和其他会员会和你直接交流关于成长行动等各方面的经验教训。2016年成长会持续招募中,参见做能说会写的持续行动者:ScalersTalk成长会2016年会员计划介绍(2016.3更新)