赞
踩
RNN层通过向过去传递“有意义的梯度”,能够学习时间方向上的依赖关系。此时梯度(理论上)包含了那些应该学到的有意义的信息,通过将这些信息向过去传递,RNN层学习长期的依赖关系。但是,如果这个梯度在中途变弱(甚至没有包含任何信息),则权重参数将不会被更新。也就是说,RNN层无法学习长期的依赖关系。不幸的是,随着时间的回溯,这个简单RNN未能避免梯度变小(梯度消失)或者梯度变大(梯度爆炸)的命运。
梯度爆炸。梯度的大小随时间步长呈指数级增加,如果发生梯度爆炸,最终就会导致溢出,出现NaN之类的值。如此一来,神经网络的学习将无法正确运行。
梯度消失。梯度呈指数级减小,如果发生梯度消失,梯度将迅速变小。一旦梯度变小,权重梯度不能被更新,模型就会无法学习长期的依赖关系。
矩阵的奇异值表示数据的离散程度。根据奇异值(更准确地说是多个奇异值中的最大值)是否大于1,可以预测梯度大小的变化。如果奇异值的最大值大于1,则可以预测梯度很有可能会呈指数级增加;如果奇异值的最大值小于1,则可以判断梯度会呈指数级减小。但是,并不是说奇异值比1大就一定会出现梯度爆炸。
LSTM与RNN的接口的不同之处在于,LSTM还有路径c。这个c称为记忆单元(或者简称为“单元”),相当于LSTM专用的记忆部门。
记忆单元的特点是,仅在LSTM层内部接收和传递数据。也就是说,记忆单元在LSTM层内部结束工作,不向其他层输出。而LSTM的隐藏状态h和RNN层相同,会被(向上)输出到其他层。
在大多数情况下,门使用sigmoid函数作为激活函数,而包含实质信息的数据则使用tanh函数作为激活函数。
在RNN的反向传播中,我们使用相同的权重矩阵重复了多次矩阵乘积计算,由此导致了梯度消失(或梯度爆炸)。而LSTM的反向传播进行的不是矩阵乘积计算,而是对应元素的乘积计算,而且每次都会基于不同的门值进行对应元素的乘积计算。这就是它不会发生梯度消失(或梯度爆炸)的原因。
LSTM是Long Short-Term Memory(长短期记忆)的缩写,意思是可以长(Long)时间维持短期记忆(Short-Term Memory)。
通过叠加LSTM层,可以期待能够学习到时序数据的复杂依赖关系。换句话说,通过加深层,可以创建表现力更强的模型,但是这样的模型往往会发生过拟合。更糟糕的是,RNN比常规的前馈神经网络更容易发生过拟合,因此RNN的过拟合对策非常重要。
过拟合是指过度学习了训练数据的状态,也就是说,过拟合是一种缺乏泛化能力的状态。我们想要的是一个泛化能力强的模型,因此必须基于训练数据和验证数据的评价差异,判断是否发生了过拟合,并据此来进行模型的设计。
本章的主题是Gated RNN,我们指出了上一章的简单RNN中存在的梯度消失(或梯度爆炸)问题,说明了作为替代层的Gated RNN(具体指LSTM和GRU等)的有效性。这些层使用门这一机制,能够更好地控制数据和梯度的流动。
另外,本章使用LSTM层创建了语言模型,并在PTB数据集上进行了学习,评价了困惑度。另外,通过LSTM的多层化、Dropout和权重共享等技巧,成功地大幅度提高了精度。
本章所学的内容
1.在简单RNN的学习中,存在梯度消失和梯度爆炸问题;
2.梯度裁剪对解决梯度爆炸有效,LSTM、GRU等Gated RNN对解决梯度消失有效;
3.LSTM中有3个门:输入门、遗忘门和输出门;
4.门有专门的权重,并使用sigmoid函数输出0.0~1.0的实数;
5.LSTM的多层化、Dropout和权重共享等技巧可以有效改进语言模型;
6.RNN的正则化很重要,人们提出了各种基于Dropout的方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。