try ai
科普
编辑
分享
反馈
  • 倒置丢弃(Inverted Dropout)

倒置丢弃(Inverted Dropout)

SciencePedia玻尔百科
核心要点
  • 倒置丢弃通过在训练期间随机失活神经元,并放大剩余激活值,以维持训练和测试阶段之间期望输出的一致性,从而防止过拟合。
  • 该技术可被视为训练一个由共享权重的子网络组成的庞大集成模型,并且对于线性模型,它在数学上等价于应用L2正则化。
  • 丢弃技术可以适应不同的数据结构,例如在图像中丢弃连续的块(DropBlock)或在图中丢弃连接(节点/边丢弃),以实现更有效、更具领域感知性的正则化。
  • 通过在推理时使用丢弃(蒙特卡洛丢弃),可以生成一个预测分布,其方差可以作为模型不确定性的实用估计。

引言

过拟合仍然是深度学习中的一个核心挑战,即模型记住了训练数据而不是学会了泛化。为了应对这一问题,正则化技术至关重要,而其中最强大的技术之一就是丢弃(dropout)。本文重点介绍一种关键的改进方法,称为​​倒置丢马(inverted dropout)​​,它巧妙地解决了模型在随机训练和确定性测试阶段行为不一致的细微问题。通过探索这项技术,您将对现代神经网络训练及其理论基础有更深入的理解。

我们的探索始于“原理与机制”一章,我们将在其中剖析倒置丢弃的工作原理。我们将揭示使其如此高效的简单数学技巧,探索其作为一种强大集成学习形式的解释,并揭示其与传统正则化方法的深层联系。然后,我们将转向“应用与跨学科联系”,见证丢弃技术在实践中的多功能性。我们将看到其核心思想如何应用于计算机视觉、自然语言处理和图分析中的复杂数据,并最终了解它如何通过不确定性估计为我们提供一个洞察模型自身置信度的窗口。

原理与机制

一致噪声的艺术:为何称为“倒置”?

让我们从想象一个处于训练阶段的神经网络开始。为了防止它仅仅记住训练数据——这种现象被称为​​过拟合​​——我们决定引入一些混乱。在每个训练步骤中,我们随机“丢弃”一部分神经元,迫使剩下的神经元更努力地工作,学习更鲁棒的特征。这就是丢弃的本质。

但这个聪明的技巧引入了一个微妙的问题。想象一下,我们以 p=0.5p=0.5p=0.5 的丢弃率训练网络,这意味着在任何给定时间,一层中平均只有一半的神经元是活跃的。网络学会在这种减弱的信号强度下产生正确的输出。现在,快进到测试时间。我们希望模型是确定性的,并使用其全部能力,所以我们关闭丢弃。突然之间,所有神经元都活跃了!传递到下一层的信号强度平均是网络在训练期间习惯的两倍。这造成了根本性的不匹配,导致系统性地偏高和放大的输出。

我们如何调和训练的随机世界与测试的确定性世界?丢弃的原始公式通过在测试时将激活值按保留概率 1−p1-p1−p 进行缩减来解决这个问题。这个方法有效,但意味着你必须记得为推理修改你的网络。

这就是​​倒置丢弃​​的简单天才之处。与其在测试时缩减,为什么不在训练时放大呢?让我们看看数学,它蕴含着一种优美的简洁性。考虑一个激活值为 hhh 的单个神经元。在训练期间,我们应用一个随机掩码 mmm,它以概率 1−p1-p1−p 为 111(神经元被保留),以概率 ppp 为 000(它被丢弃)。使用倒置丢弃,新的激活值 h~\tilde{h}h~ 不仅仅是 m⋅hm \cdot hm⋅h,而是 h~=m1−ph\tilde{h} = \frac{m}{1-p}hh~=1−pm​h。

在训练期间,这个激活值的*期望*值是多少?期望 E[h~]\mathbb{E}[\tilde{h}]E[h~] 是两种可能性的加权平均:

E[h~]=(11−ph)⋅P(kept)+(01−ph)⋅P(dropped)\mathbb{E}[\tilde{h}] = \left(\frac{1}{1-p}h\right) \cdot \mathbb{P}(\text{kept}) + \left(\frac{0}{1-p}h\right) \cdot \mathbb{P}(\text{dropped})E[h~]=(1−p1​h)⋅P(kept)+(1−p0​h)⋅P(dropped)
E[h~]=(h1−p)⋅(1−p)+0⋅p=h\mathbb{E}[\tilde{h}] = \left(\frac{h}{1-p}\right) \cdot (1-p) + 0 \cdot p = hE[h~]=(1−ph​)⋅(1−p)+0⋅p=h

就是这样!通过在训练期间放大激活值,我们确保其期望值恰好是原始激活值 hhh。在测试时,当我们关闭丢弃,激活值就是 hhh。现在,训练期间的期望信号强度与测试期间的确定性信号强度完美匹配。“倒置”指的是将这个必要的缩放步骤从测试时间移到训练时间,使得推理网络保持不变,与未经丢弃训练的网络相同。这是一个优雅的解决方案,使模型的部署更简单、更高效。

一机之内,众智成城

现在我们理解了其机制,一个更深层次的问题出现了:当我们随机丢弃神经元时,我们真正在做什么?思考丢弃的最优美的方式之一是将其视为一种​​集成学习​​。

想象一下,每次我们应用不同的丢弃掩码时,我们都在创建我们网络的独特、精简版本——一个​​子网络​​。对于一个层中可能被丢弃的 kkk 个神经元,存在 2k2^k2k 个可能的子网络。用丢弃训练一个网络,就像同时训练这个数量庞大得惊人的子网络集合。其神奇之处在于它们都共享相同的底层权重。当一个特定的子网络犯错时,梯度更新会朝着一个不仅有利于该子网络,而且有望有利于许多其他子网络的方向微调共享权重。

在测试时,当我们使用没有丢弃的完整网络时,我们实际上是在平均这个庞大子网络集成的预测。这就是为什么丢弃如此有效的原因;一个多元化委员会的集体智慧几乎总是优于单个专家的决策。

但是,标准的测试时间程序是这个集成的完美平均吗?让我们仔细看看。使用倒置丢弃的测试时间网络所用的激活值是随机训练激活值的缩放均值。但如果下一层应用一个​​非线性函数​​ g(⋅)g(\cdot)g(⋅)(这正是赋予神经网络力量的东西)呢?测试时间网络计算的是 g(E[activation])g(\mathbb{E}[\text{activation}])g(E[activation]),但集成的真实平均值应为 E[g(activation)]\mathbb{E}[g(\text{activation})]E[g(activation)]。

由于非线性函数的一个基本属性(被数学家们称为詹森不等式),这两个量通常是不相等的。对于一个简单的线性模型,这个近似是精确的。但对于一个深的非线性网络,存在不匹配。这种差异源于丢弃引入的激活信号的方差,而简单的测试时间缩放没有考虑到这一点。尽管如此,倒置丢弃为训练和平均大量不同的神经网络提供了一种非常有效且计算成本低廉的近似方法。

伪装的正则化

让我们从另一个角度来看待丢弃。我们能否将这种看似临时的丢弃神经元的过程与更传统的防止过拟合的方法联系起来?最常用的技术之一是​​L2正则化​​,也称为权重衰减。其思想是在损失函数中增加一个与模型权重平方和(∥w∥22\|w\|_2^2∥w∥22​)成正比的惩罚项。这不鼓励模型发展出过大的权重,迫使其寻找依赖于更广泛特征的解决方案。

令人惊讶的是,对于一个在标准化数据上训练的线性模型,应用输入丢弃在数学上等价于在一个没有丢弃的模型上执行L2正则化。这不仅仅是效果相似;它们是同一回事!当我们对所有可能的丢弃掩码的损失进行平均时,目标函数简化为原始损失加上一个额外的项:

Ldrop(w)=L(w)+λ(p) ∥w∥22L_{\text{drop}}(\boldsymbol{w}) = L(\boldsymbol{w}) + \lambda(p)\,\|\boldsymbol{w}\|_{2}^{2}Ldrop​(w)=L(w)+λ(p)∥w∥22​

有效的正则化强度 λ(p)\lambda(p)λ(p) 结果是丢弃率 ppp 的一个简单函数:

λ(p)=p1−p\lambda(p) = \frac{p}{1-p}λ(p)=1−pp​

这是一个深刻的联系。它告诉我们,随着我们增加丢弃率 ppp,隐式正则化的强度也随之增加,正如我们的直觉所预示的那样。丢弃通过不断挑战网络,即使其输入被随机拿走也能表现良好,从而迫使其学习一种分布式表示并控制其权重。这是一种正则化,但它源于鲁棒性和集成的哲学,而非一个明确的惩罚项。

驯服梯度与塑造景观

丢弃的影响一直延伸到学习过程本身——调整网络权重的反向传播算法。每个训练批次使用不同的丢弃掩码,这意味着计算出的梯度是期望损失的“真实”梯度的噪声估计。

但这是什么样的噪声呢?首先,它是一种无偏噪声。平均而言,随机梯度指向正确的方向。其魔力在于它的​​方差​​。掩码梯度的方差不仅仅是原始方差的缩放版本;它还有一个额外的项,取决于梯度本身的均值。这种结构化噪声在优化过程中充当了强大的正则化器。它防止优化器变得过于自信,利用与网络中特定路径相关的虚假相关性。通过不断地扰动梯度,它迫使优化器找到鲁棒的、不依赖于神经元脆弱的协同适应的解决方案。

这引出了​​损失景观​​的概念。能够很好泛化的好的解决方案被认为存在于这个景观的宽阔、“平坦”的盆地中,在这些区域,对权重的微小扰动不会显著改变模型的输出。相比之下,尖锐、狭窄的最小值通常对应于过拟合。通过向梯度注入噪声,丢弃使得优化器很难在这些尖锐的峡谷中稳定下来。

这是一种微妙的舞蹈。通过使用丢弃进行训练,我们实际上是在优化一个修改过的、期望的损失函数。这个新的代理景观实际上可能比原始景观更尖锐。然而,正是在这个充满噪声、不断变化的景观上进行优化的行为,引导权重走向那些在原始、未正则化的损失景观上对应于我们所追求的平坦、鲁棒的最小值的区域。从本质上讲,丢弃并不是为你铺平道路;它提供了一个更好的罗盘来导航,并找到理想的平坦地带。

最后一个技巧:何时不关闭丢弃

我们整个讨论都假设丢弃只在训练中使用。但如果我们打破这个规则呢?如果在推理时保持丢弃活跃呢?

这就为一种强大的现代技术——​​蒙特卡洛(MC)丢弃​​——打开了大门。我们不是只将一个测试输入通过网络运行一次,而是可以执行数十次或数百次前向传播,每次都使用不同的、随机生成的丢弃掩码。这将产生一个预测分布,而不是单个预测。

这个分布的均值可以作为我们最终的、更鲁棒的预测。但更令人兴奋的是这个分布的方差。如果预测都紧密聚集,这表明模型非常自信。如果预测分布广泛,模型实际上是在传达其不确定性——它在说,“我不太确定这个” [@problem_-id:3118076]。

这个简单的过程将丢弃从一个正则化工具转变为一个实用的​​贝叶斯近似​​框架。它允许我们在不诉诸更复杂和计算成本更高的方法的情况下估计模型的不确定性。它让我们的模型有了一种声音,不仅能表达它认为的答案是什么,还能表达我们应该在多大程度上信任那个答案——这对于在风险高、真实世界的应用中部署机器学习至关重要。

应用与跨学科联系

我们花了一些时间来理解倒置丢弃的机制,审视它的齿轮和传动装置,以了解它如何工作。我们看到,通过在训练期间随机丢弃单元并缩放幸存者,我们可以防止我们的神经网络变成一个由懒惰、过度依赖的神经元组成的委员会。但要真正欣赏一个工具,我们不仅要检查它的设计,还要看它能构建什么。现在,我们走出工坊,走向世界,见证这个简单想法令人惊讶和美妙的应用。我们会发现,倒置丢弃远不止是一种正则化技巧;它是一个深刻的原则,贯穿于现代机器学习的结构之中,连接着看似不相关的领域,并催生出意义深远的新能力。

看不见的手:作为原则性正则化的丢弃

乍一看,丢弃似乎是一种相当粗暴的做法——随机关闭我们精心构建的网络的一部分。我们能为正在发生的事情找到一个更优雅的描述吗?是否存在一个隐藏的原则在起作用?确实有。通过研究训练过程的数学,我们发现丢弃不仅仅是在增加噪声;它实际上是在为我们的损失函数隐式地添加一个非常具体且行为良好的正则化项。

考虑我们网络中的一个简单线性层。当我们用输入丢弃来训练它时,我们要求模型在所有可能的随机丢弃掩码下平均表现良好。如果我们推导这个期望的数学过程,一个显著的结果便会浮现:用倒置丢弃训练等价于训练原始网络而没有丢弃,但在损失函数中增加了一个额外的惩罚项。这个惩罚项有一个特定的形式:它惩罚连接到每个输入特征的权重的L2范数平方,这种技术被称为“组L2正则化”。

这意味着什么?这意味着丢弃自动鼓励模型保持其权重的大小,这是防止过拟合的经典技术。关键是,这个惩罚的强度与丢弃概率 ppp 和输入特征本身的方差成正比。那些“更响亮”(具有更高方差)的特征受到的惩罚更多。这是一种优美的、数据驱动的正则化形式,它从丢弃机制中自然产生。它不是我们强加的一个任意惩罚,而是一只“看不见的手”引导模型走向更鲁棒的解决方案。这将丢弃直接与统计正则化方法的悠久历史联系起来,表明它不是一个外来概念,而是一个古老家族的新成员。

组件的交响曲:将丢弃融入复杂架构

现代神经网络是相互作用组件的交响曲——激活函数、归一化层、残差连接。要有效地使用丢弃,我们不能简单地将其随意添加;我们必须理解它如何与管弦乐队中的其他乐器协调一致。

其中最优雅的互动之一是与修正线性单元(ReLU)激活函数的互动。当我们分析一个受倒置丢弃影响的ReLU神经元时,我们发现反向传播梯度的期望值神奇地与丢弃概率 ppp 无关。请思考一下。这意味着当我们提高丢弃率,从而注入更多噪声并使训练更具挑战性时,向后通过网络的平均“学习信号”保持稳定。这是倒置缩放因子带来的一个美妙的、自发涌现的属性,提供了比原始丢弃公式更稳定的训练动态。

这种稳定性原则在当今庞大的网络中至关重要。考虑深度残差网络,它们由将其输入加到其输出的块构建而成。要构建这些可能深达数千层的网络,我们必须格外小心,确保信号在传播时不会爆炸或消失。这通过仔细的权重初始化来实现。丢弃在其中扮演什么角色?事实证明,为了维持这种微妙的平衡,我们权重的初始化必须明确考虑丢弃概率。权重的理想方差与保留概率 1−p1-p1−p 成反比。这揭示了现代深度学习三大支柱之间深刻而美丽的统一性:网络架构(残差连接)、训练过程(丢弃)和初始化。它们不是独立的选择,而是旨在保持信息流动的单一、连贯设计哲学的三个部分。

丢弃的艺术:适应数据结构

丢弃的最初想法是丢弃单个神经元,将它们都视为独立的。但如果我们的数据有结构呢?如果我们的输入不仅仅是一堆特征,而是一张图片、一个句子或一个社交网络呢?事实证明,通过使我们丢弃事物的方式尊重数据的结构,我们可以使丢弃变得更加强大。

在​​计算机视觉​​中,图像是高度相关的像素网格。丢弃单个像素就像添加椒盐噪声;网络可以通过查看相邻像素轻松学会忽略它。一个更有效的策略是丢弃整个连续的图像块,这种技术称为DropBlock。这就像强迫模型即使在有人用手部分遮住猫脸的情况下也能对猫进行分类。它迫使网络学习更整体、概念化的特征,而不是依赖于局部纹理。让丢弃掩码本身结构化的简单想法导致了一个更强的正则化器。

在​​自然语言处理​​中,我们处理循环神经网络(RNN)或Transformer等模型中的词序列。在这里,问题变成了:我们应该丢弃什么?我们应该丢弃模型对过去的记忆部分,还是应该丢弃新输入的信息部分?在革命性的Transformer架构中,这个选择变得更加精细。我们可以对正在计算的特征应用标准丢弃,但我们也可以应用一种特殊的“注意力丢弃”,它随机切断句子中词与词之间学习到的关系。前者正则化模型对每个词的思考内容,而后者正则化它如何连接它们。这允许在防止模型记忆训练文本中的虚假相关性方面进行外科手术般的精确操作。

也许最引人入胜的改编是在​​图结构数据​​领域,这些数据存在于从社会科学到化学的各个领域。在图神经网络(GNN)中,它在节点和边上操作,我们有两个基本的东西要正则化:节点的属性(它们是什么)和它们之间的连接(它们与谁交谈)。我们可以发明两种相应的丢弃类型:“特征丢弃”,它破坏节点的属性,和“节点/边丢弃”,它随机移除其与邻居的连接。它们之间的选择取决于图的性质。如果邻居倾向于相似(一种称为同质性的属性),丢弃连接可能是有害的。但如果邻居倾向于不同(异质性),丢弃来自它们的误导性信息实际上可以帮助模型学得更好!这是一个深刻的例子,说明一个来自机器学习的通用技术如何可以被特化为用于科学建模的领域感知工具。

神谕的低语:用丢弃估算不确定性

到目前为止,我们一直将丢弃视为一种训练工具。我们打开它来正则化模型,然后在测试时关闭它以获得单一的、确定性的预测。但如果我们打破这个规则呢?如果在测试时保持丢弃开启呢?

如果我们用我们训练好的网络对同一个输入进行100次预测,每次都使用不同的随机丢弃掩码,我们不会得到一个答案;我们会得到一个包含100个略有不同的答案的分布。这个过程称为蒙特卡洛(MC)丢弃。一个将丢弃与贝叶斯统计世界联系起来的非凡见解是,这个答案分布的方差可以被解释为模型*认知不确定性*的度量。

这是一个改变游戏规则的发现。认知不确定性是模型的“我不知道”的不确定性。它不同于数据中固有的随机性(偶然不确定性)。一个能告诉我们它何时不确定的模型,比一个即使错了也总是自信的模型要有价值得多。想象一个用于诊断癌症的医疗AI。我们不仅希望它说“90%的可能是良性”。我们希望它能说,“我非常确定它是90%良性”,或者,关键是,“我最好的猜测是90%良性,但我对这个案例非常不确定,因为它看起来不寻常。”MC丢弃为我们提供了一种实用的方法来获得那种神谕的怀疑低语。

这不仅仅是一个理论上的好奇心;它对科学和工程具有深远的影响。在计算材料科学中,研究人员使用GNN来预测原子间的力,使他们能够比传统量子力学快得多地模拟新材料。通过应用MC丢弃,他们现在不仅可以预测一个力,还可以估计该预测的不确定性。一个自带误差棒的模拟是用于科学发现的更强大的工具。

从一个简单的正则化技巧开始,我们的旅程将我们引向了科学探究的前沿。倒置丢弃展现的不仅仅是一个独立的工具,而是一条统一的线索——一种原则性的正则化形式,深度架构交响曲中的一个关键元素,一个适用于结构化数据的可适应工具,以及最深刻的,一个洞察模型自身心智的窗口。它证明了在最简单的想法中可以发现的惊人深度和美丽。