循环神经网络 (RNN) 是现代序列建模的主力军。从语言翻译、驱动聊天机器人到分析视频流,它们处理随时间展开的信息的能力已经彻底改变了机器学习。然而,尽管 RNN 功能强大,但它有一个众所周知的弱点: 容易出现过拟合,尤其是在数据有限时。
多年来,深度学习从业者一直使用一种简单而有效的技术来应对过拟合,那就是 dropout。在训练过程中,一部分神经元的激活值会被随机“丢弃”——即设置为零。这可以防止神经元之间产生共依赖关系,并迫使模型学习更稳健、可泛化的模式。
然而,一个顽固的传统观念一直存在:
“不能将 dropout 应用于循环连接。”
人们担心,在每个时间步引入随机性会使整个序列的噪声不断放大,从而掩盖有用信号并破坏 RNN 的记忆能力。作为折中方案,dropout 通常只应用在 RNN 的输入和输出层,而循环层——网络真正学习时间动态的核心部分——被完全忽略,因此这些层往往未被正则化,容易过拟合。
Yarin Gal 的论文《循环神经网络中 Dropout 的理论基础与应用》以严谨的数学分析推翻了这一观念。通过贝叶斯推断的视角重新解释 dropout,Gal 不仅揭示了为什么 dropout 应该用于循环层内部,还阐明了如何正确地使用它。最终形成了一种简单且理论上完备的方法——贝叶斯 Dropout,显著提升了 RNN 的稳定性与性能。
快速回顾: RNN 与 Dropout 问题
RNN 逐步处理序列 \(x = [x_1, ..., x_T]\)。在每个时间步 \(t\),网络接收输入 \(x_t\) 以及前一时刻的输出 \(y_{t-1}\),生成新的输出 \(y_t\),并更新内部状态 \(c_t\)。
*图: * 一个简单 RNN 的示意图,展示了每个时间步如何利用前一时刻的输出,并生成新的隐藏状态和更新后的输出。
诸如长短期记忆网络 (LSTM) 与门控循环单元 (GRU) 等常见变体引入了门控机制,用于控制信息的保留与遗忘。尽管结构有所增强,所有 RNN 都共享同样的脆弱点——在数据有限时,网络倾向于记忆而非泛化。
一种常见的正则化方法是向损失函数中添加惩罚项,例如 \(L_2\) 正则化,以抑制权重过大。
*图: * 损失函数结合了数据拟合项与惩罚大权重的正则化项。
Dropout 提供了一种更灵活的正则化形式。但若天真地将其应用在 RNN 中——即在每个时间步随机丢弃不同的单元——会打乱时间一致性并损害性能。这促使研究者仅在“垂直方向”的连接 (输入与输出) 上施加 dropout,而避免在“水平方向”的循环连接上使用,从而留下了 RNN 的记忆通路未被正则化。
贝叶斯视角: 以全新方式看待 Dropout
转折点源于 Gal 之前的理论发现——他证明了 dropout 在数学上等价于在贝叶斯神经网络中进行近似变分推断。
直觉如下:
在传统神经网络中,每个权重都是从数据中学习得出的固定数值。而在贝叶斯神经网络 (BNN) 中,每个权重则是一个从概率分布中抽取的随机变量,这一分布表达了我们对该权重“正确值”的不确定性。
为了对新输入 \(x^*\) 进行预测,贝叶斯模型会对所有可能的网络权重配置进行平均,相当于对所有可能函数进行积分:
*图: * 贝叶斯预测通过对所有可能的权重配置积分来衡量不确定性。
然而,计算精确的后验分布 \(p(\boldsymbol{\omega}|\mathbf{X},\mathbf{Y})\) 在实际中是不可行的。变分推断 (VI) 通过定义一个简化的近似分布 \(q(\boldsymbol{\omega})\),并最小化它与真实后验的KL 散度 (Kullback–Leibler divergence) 来解决这一问题。
*图: * 变分推断目标通过 KL 散度项在模型拟合与先验分布之间取得平衡。
这一优化目标构成了贝叶斯深度学习的核心。当我们假设 \(q(\boldsymbol{\omega})\) 为伯努利分布时——也就是说,每个权重以概率 \(p\) 处于“开启”或“关闭”状态——奇迹发生了。
我们定义随机权重如下:
*图: * 权重矩阵由确定性值 \(M_i\) 与伯努利随机变量 \(z_{i,j}\) 控制构成,这正对应了 dropout 的机制。
在每次训练迭代中,从该分布采样相当于将权重矩阵的随机行置零——这正是 dropout 所执行的操作。
结论: 使用 dropout 训练等价于对伯努利分布权重进行近似贝叶斯推断。
这一理论基础使我们能够制定基于原理的 dropout 应用指南,而不仅仅依赖经验性技巧。
核心思想: 用于 RNN 的贝叶斯 Dropout
当我们将这种贝叶斯解释应用到循环网络中,会发生什么?
事实证明,这种扩展方法异常简洁。贝叶斯 RNN 的目标函数对由网络权重表示的所有函数进行积分:
*图: * 贝叶斯 RNN 目标将序列函数随时间嵌套,体现了跨时间步的依赖关系。
在实践中,我们采用蒙特卡洛积分来近似这一过程,为每个序列采样一组权重 \(\widehat{\boldsymbol{\omega}} \sim q(\boldsymbol{\omega})\)。这意味着每个序列仅使用一个 dropout 掩码,并在其整个时间步上保持一致。
其影响深远:
- 时间一致性掩码: 不在每个时间步随机生成新的 dropout 掩码,而是在整个序列中使用同一个掩码,从而保持稳定的时间结构。
- 在循环层应用 Dropout: 由于掩码直接作用于权重矩阵 (\(\mathbf{U}_i, \mathbf{W}_i\) 等),正则化自然地扩展到了循环连接。噪声变成模型的一个静态、可学习组成部分,而非随机的干扰。
*图 1: * 朴素 dropout 在每个时间步使用不同掩码并忽略循环连接,而贝叶斯 dropout 在整条时间序列上应用单一一致掩码,从而同时正则化输入与循环路径。
嵌入层 Dropout: 正则化被忽视的巨头
论文还提出了一个优雅的扩展——在词嵌入层应用 Dropout。
对于文本任务而言,嵌入矩阵 \(\mathbf{W}_E \in \mathbb{R}^{D \times V}\) 将单词映射为高维向量,通常是模型中参数量最大的部分,却几乎从未被正则化。这里使用 dropout 相当于在训练样本中随机将 \(\mathbf{W}_E\) 的部分列置零——也就是说,从序列中随机“移除”特定词类型。
如果单词 “the” 被丢弃,它在该样本中的所有出现都会消失,迫使模型依赖上下文而非频率记忆。这种词级一致性与贝叶斯 dropout 的时间一致性原则互相呼应。
实验: 以实践验证理论
Gal 在情感分析与语言建模任务上测试了该方法——前者数据稀缺、规模较小,后者数据丰富、规模较大。
情感分析: 抑制过拟合
使用康奈尔电影评论语料库,实验比较了三种模型:
- 标准 LSTM: 无 dropout
- 朴素 Dropout LSTM: 每个时间步使用不同掩码
- 贝叶斯 LSTM: 使用一致掩码,并在循环层应用 dropout
*图 2: * 仅有贝叶斯 LSTM 能有效地抑制过拟合,测试误差曲线最低。
贝叶斯 LSTM 是唯一能够抵抗过拟合的模型——在训练集与测试集上均达到最低误差。
进一步的实验还探讨了循环层 (\(p_U\)) 与嵌入层 (\(p_E\)) 的 dropout 设置。结果表明:** 两者的强正则化**对于防止过拟合至关重要。
*图 3: * 不同 dropout 配置的测试误差趋势显示,当同时激活 \(p_U\) 与 \(p_E\) 时性能最佳。
同样的原理也自然地扩展到 GRU,验证了贝叶斯 dropout 在不同循环结构中的普适性。
*图 10: * 贝叶斯 GRU 相比其他版本,收敛更稳定、测试误差最低。
语言建模: 规模化验证
在更大规模的测试中,Gal 以 Penn Treebank 语料库为基准进行了词级语言建模训练。性能指标为困惑度 (perplexity) ,用于衡量模型预测下一个词的准确性 (值越低越好) 。
*图 12: * 贝叶斯 LSTM 的验证困惑度最低,并在持续训练过程中保持抗过拟合能力。
贝叶斯 LSTM 再次优于所有对比模型,在验证集与测试集上均获得更低困惑度,且未出现过拟合。
*表 1: * 各模型对比结果显示,贝叶斯 LSTM 在困惑度上实现了持续改善。
关键要点: 正则化 RNN 的新基石
这项研究从根本上重新定义了循环神经网络中的 dropout。过去被视为经验性禁令的——“不要在循环连接上使用 dropout”——如今已被贝叶斯理论彻底推翻。
以下是需要记住的关键点:
- RNN 中的 Dropout 已被破解: 你可以在循环连接上使用 dropout,只要方法正确。
- 一致性至关重要: 在同一序列的所有时间步中使用相同的 dropout 掩码。
- 从贝叶斯原理自然衍生: 该方法源自将 dropout 视作近似贝叶斯推断的视角。
- 全面正则化: 对输入、输出、循环层甚至嵌入矩阵均应用一致的 dropout,可获得最佳性能。
通过架起贝叶斯理论与深度学习实践的桥梁,Yarin Gal 的框架重塑了我们对序列模型正则化的理解。它提醒我们,机器学习中许多“经验法则”在严密的数学分析下都会被修正——而真正理解工具为何奏效,常常是让它们更进一步的关键。