【机器学习】正则化-Dropout/DropPath

1. Dropout

Dropout 是一种正则化技术,通过在训练过程中随机移除部分神经元及其连接,从而减少神经网络对特定神经元的依赖,提升模型的泛化能力。具体而言,Dropout 相当于在训练过程中从原始网络中随机采样出“更薄的”子网络,每个子网络的神经元数量较少。在前向传播和反向传播过程中,模型基于多个稀疏子网络进行训练,这可以视为一种模型平均化的形式。

请添加图片描述

Dropout 的动机

在使用 Dropout 训练的神经网络中,每个隐藏单元都需要与随机选择的其他单元一起工作,因此每个单元变得更加健壮,不再依赖于特定的其他神经元。通过随机丢弃神经元,Dropout 阻止了神经元共适应性的发生,即某些神经元仅在特定神经元存在时有效。由于每次训练的神经元子集是随机的,网络被迫学习更鲁棒的特征,这些特征在不同的神经元组合中依然存在和有效。

Dropout 通过迫使每个神经元独立学习有用的特征,避免了模型对某些固定特征组合的依赖,从而提高了模型的泛化能力,减少过拟合

以下是基于所述的 Dropout 实现流程的总结:

Dropout 实现流程:

  1. 初始化阶段:在神经网络的每一层中,设置一个 dropout rate(通常为 0.5),表示训练时每次迭代随机丢弃神经元的比例。输入层和输出层的神经元不会被丢弃,只有隐藏层的神经元会被随机选择。

  2. 前向传播:在每次迭代的前向传播阶段,随机选择隐藏层中的一部分神经元,并将其临时丢弃(设其输出为 0)。通常,丢弃的比例等于 dropout rate。例如,当 dropout rate 为 0.5 时,随机丢弃 50% 的隐藏层神经元。

  3. 参数更新:将输入数据通过修改后的网络进行前向传播,计算得到的损失。 通过修改后的网络进行反向传播,根据损失对未被丢弃的神经元进行梯度更新(如随机梯度下降法)。被丢弃的神经元的参数不会更新,保持原样

  4. 循环过程

    • 恢复被丢弃的神经元:恢复之前被临时丢弃的神经元,使其在下一次迭代中重新参与训练。
    • 重新随机丢弃神经元:在下一次迭代中,重新随机选择隐藏层中的部分神经元进行丢弃。每次 mini-batch 训练时,都会随机选择不同的神经元进行丢弃,确保模型每次训练的子网络都不同。
    • 重复上述的前向传播、参数更新、恢复和重新丢弃神经元的过程,直到训练完成。
  5. 测试阶段:在测试阶段,Dropout 不再丢弃任何神经元。为了保持训练和测试时的数值一致性,模型会将所有隐藏层神经元的输出按丢弃比例缩放(例如,如果 dropout rate 是 0.5,则乘以 0.5),以确保训练和推断时的激活值保持一致。

Dropout 流程的关键点
  • 随机丢弃神经元:每次训练随机选择一部分神经元,并将它们临时丢弃,以防止模型过度依赖某些特定神经元,从而提高泛化能力。
  • 参数更新:只有未被丢弃的神经元参与梯度更新,丢弃的神经元在当前 mini-batch 迭代中保持不变。
  • 恢复丢弃神经元:每次训练结束后恢复所有神经元,保证每一轮训练时使用的神经元组合不同。
  • 测试阶段不丢弃:测试时,模型使用所有神经元,但会缩放输出以保持与训练时的数值一致性。

2. DropPath

DropPath(也称为 Stochastic Depth)是一种用于深度神经网络的正则化方法。与 Dropout 随机丢弃神经元不同,DropPath 随机丢弃整个网络中的路径,也就是整条计算分支。它特别适用于带有残差连接(Residual Connections)的神经网络,如 ResNet 这样的结构。

在网络的前向传播过程中,DropPath 会随机丢弃某些网络路径(或残差块),让网络在这些路径缺失的情况下依然能够进行训练,从而提高模型的鲁棒性泛化能力。这种技术避免了网络依赖某些特定的路径来拟合数据,有效防止过拟合。

请添加图片描述

  1. Iteration #1Iteration #3(Local):网络在局部范围内选择路径进行计算,部分卷积层被激活,而部分路径则被丢弃,主要参与的模块是卷积(粉红色)和连接(绿色)。

  2. Iteration #2Iteration #4(Global):网络在全局范围内选择路径,更多的模块(卷积、连接、池化等)参与计算,模型尝试在更广泛的网络结构上进行学习和优化。

DropPath 和 Dropout 的主要区别

对比维度DropoutDropPath
层次随机丢弃网络中的个别神经元,作用在网络的单个神经元级别随机丢弃网络中的整个路径或分支,作用在网络的路径级别残差块级别
适用场景适用于任意网络层(如全连接层、卷积层),主要在神经元级别上起作用特别适用于带有跳跃连接或残差连接的深度网络(如 ResNet),可随机丢弃残差路径

DropPath 的工作原理

残差网络中的 DropPath

请添加图片描述

在残差网络(如 ResNet)中,模型包含多个残差块,每个块由一条主路径和一条跳跃连接 (shortcut connection) 组成(上图是残差网络中的一个残差块(Residual Block) 的结构),结构如下:
y = x + f ( x ) y = x + f(x) y=x+f(x)
其中 x x x 是输入, f ( x ) f(x) f(x) 是主路径中的卷积层、激活函数等的组合。

详细介绍:在训练过程中,DropPath 会按一定的概率随机丢弃主路径 f ( x ) f(x) f(x),让网络仅使用跳跃连接 x x x。这样,残差块的输出变为:
y = x (当主路径被丢弃时) y = x \quad \text{(当主路径被丢弃时)} y=x(当主路径被丢弃时)
当 DropPath 没有丢弃主路径时,网络按照正常方式计算输出:
y = x + f ( x ) (当主路径未被丢弃时) y = x + f(x) \quad \text{(当主路径未被丢弃时)} y=x+f(x)(当主路径未被丢弃时)

通过在训练过程中随机丢弃路径,DropPath 强迫模型在不同的路径组合下工作,这减少了模型对某些固定路径的依赖,增强了网络的泛化能力。

DropPath 的具体流程
  1. 前向传播:在每次前向传播时,DropPath 会根据设定的丢弃概率(如 0.2 或 0.5),随机决定是否丢弃某个残差块的主路径。如果该路径被丢弃,则该块的输出仅为输入 x x x。 每个批次中,DropPath 只会对部分路径进行丢弃,因此不同批次会训练不同的网络子结构。

  2. 梯度更新:DropPath 会正常计算梯度并更新未被丢弃的路径中的参数。被丢弃的路径不会参与梯度更新。

  3. 测试阶段:在测试阶段,DropPath 不会丢弃任何路径。所有路径都会被使用,以保证模型在推理时的稳定性。

DropPath 的优势

  1. 减少过拟合:与 Dropout 类似,DropPath 可以通过随机丢弃路径避免模型过度依赖某些固定路径,从而防止过拟合。

  2. 提升模型的鲁棒性:通过迫使网络在不同路径组合下工作,DropPath 使得模型能够更好地适应不同的数据分布,增加了模型的泛化能力。

  3. 特别适合深度网络:对于 ResNet 等深度网络,DropPath 可以有效减轻梯度消失问题,因为即使某些主路径被丢弃,梯度仍然能够通过跳跃连接有效传播。这有助于训练更深层次的网络。

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值