
摘要
循环神经网络(RNNs)是神经网络中一类重要的架构,适用于语言建模和序列预测。然而,相比于前馈神经网络,优化RNNs被公认为更加困难。文献中已提出多种技术来解决这一问题。在本文中,我们提出了一种简单的方法,称为兄弟丢弃(fraternal dropout),利用丢弃(dropout)技术来实现这一目标。具体而言,我们建议同时训练两个完全相同的RNN副本(共享参数),但使用不同的丢弃掩码,并最小化它们之间的(预softmax)预测差异。通过这种方式,我们的正则化方法鼓励RNN表示对丢弃掩码具有不变性,从而提高其鲁棒性。我们证明了我们的正则化项被期望线性丢弃目标函数上界所限制,而后者已被证明可以弥合由于训练和推理阶段之间丢弃差异导致的差距。我们在两个基准数据集——Penn Treebank和Wikitext-2上的序列建模任务中评估了我们的模型,并取得了最先进的结果。此外,我们还展示了在图像描述生成(Microsoft COCO)和半监督学习(CIFAR-10)任务中,我们的方法显著提升了性能。
代码仓库
kondiz/fraternal-dropout
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| language-modelling-on-penn-treebank-word | AWD-LSTM 3-layer with Fraternal dropout | Params: 24M Test perplexity: 56.8 Validation perplexity: 58.9 |
| language-modelling-on-wikitext-2 | AWD-LSTM 3-layer with Fraternal dropout | Number of params: 34M Test perplexity: 64.1 Validation perplexity: 66.8 |