https://blog.csdn.net/wangli0519/article/details/75208155
循环神经网络(RNNs)是基于序列的模型,对自然语言理解、语言生成、视频处理和其他许多任务至关重要。模型的输入是一个符号序列,在每个时间点一个简单的神经网络(RNN单元)应用于一个符号,以及此前时间点的网络输出。RNNs是强大的模型,在许多任务中表现出色,但会快速过拟合。RNN模型中缺少正则化使他难以处理小规模数据,为避免这种情况研究者经常使用提早停止,或者小规模的或未充分定义的模型。
Dropout是深度网络中常见的一种正则化技巧,在训练过程中网络单元随机的被隐藏/丢弃。但这种技巧在RNNs中一直未被成功应用。实证结果使很多人相信循环层(RNN单元之间的连接)中加入的噪音在长序列中会被放大,并淹没了信号。因此现存的研究认为这种技巧应仅用于RNN的输入和输出。但这种方式在研究中发现依然会导致过拟合。
最近贝叶斯和深度学习研究的交叉提供了一个从贝叶斯理解常见深度学习技巧的角度。这种深度学习中的贝叶斯观点也引入了一些新的技巧,例如从深度学习网络中获得主要非确定估计。例如Gal和Ghahramani展现了dropout可以被解释为一个贝叶斯神经网络后验的变体近似。它们的变体近似分布是两个小方差高斯的混合,平均数是一个高斯被固定在0。这种近似贝叶斯推论的dropout基础认为理论结果的延伸可为在RNN模型中使用该技巧提供见解。
这里我们主要关注实际中常见的RNN模型(LSTM,GRU)并将其理解为概率模型,即RNNs的网络权重被视作随机表量,并有恰当定义的相似性函数。然后我们对这些概率贝叶斯模型执行近似变分推论(我们将其称为变分RNNs)。使用高斯混合对权重进行后验分布的相似(一个组件固定在0并使用小方差)会使优化目标可追踪。优化这个目标与在相应的RNNs中执行新的变体dropuout相同。
右图是遵循贝叶斯解释的dropout技巧,左图是标准技巧。每个方块代表一个RNN单元,平行箭头代表时间依赖(循环连接)。树直箭头代表每个RNN单元的输入和输出。彩色连接代表被舍弃的输入,不同颜色对应不同舍弃。断点线代表没有任何舍弃的标准连接。左侧的标准技巧在不同时间舍弃不同而在循环层没有舍弃。右侧的技巧在每个时间使用相同的舍弃,包括循环层。
在新的dropout变体,我们在每个时间点重复同样的dropout mask,包括输入、输出和循环层(每个时间点舍去相同的网络单元)。这与现存的默认技巧不同,它在每个时间点仅对输入和输出取样并进行不同的dropout mask,对于循环连接没有dropout因为对这些连接使用不同的mask会导致表现的恶化。当使用离散输入时(例如词)我们放入一个词嵌入的分布。在基于词的模型中dropout对应随机从句子中舍弃词类型,并迫使模型不依赖于单个词来完成任务。
对Penn Treebank语言建模任务单一模型复杂度的实验结果
原文 A Theoretically Grounded Application of Dropout in Recurrent Neural Networks
点击打开链接
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:循环神经网络中Dropout的应用(转) - Python技术站