机器学习未知数---从Batch Norm到SGD隐藏

令人惊讶的是,机器学习中的一些基本主题仍然不为研究人员所知,尽管它们很基础且常用,但却似乎很神秘。机器学习的有趣之处在于我们构建了可以工作的东西,然后弄清楚它们为什么可以工作!

在这里,我旨在探索一些机器学习概念中的未知领域,以表明虽然这些想法看起来很基础,但实际上它们是由一层又一层的抽象构成的。这有助于我们练习质疑我们知识的深度

在本文中,我们探讨了深度学习中的几个关键现象,这些现象挑战了我们对神经网络的传统理解。

  • 我们从批量标准化及其尚未完全理解的底层机制开始。
  • 我们检验了一个违反直觉的观察结果:过度参数化的模型往往具有更好的概括性,这与经典的机器学习理论相矛盾。
  • 我们探索梯度下降的隐式正则化效应,这似乎自然地使神经网络偏向于更简单、更通用的解决方案。
  • 最后,我们谈谈彩票假说,该假说提出大型神经网络包含较小的子网络,这些子网络在单独训练时能够实现相当的性能。


1.批量标准化

批量标准化由Sergey IoffeChristian Szegedy于 2015 年提出[1],是一种更快、更稳定地训练神经网络的方法。之前人们知道,将输入数据转换为均值为零、方差为一,可以加快收敛速度。作者进一步利用了这个想法,并引入了批量标准化,将隐藏层的输入转换为均值为零、方差为一。


Resnet 中使用的残差块 (Residual Block) 的概述以及其中 Batch Norm 的使用。(作者撰写)

自引入以来,批量规范在神经网络中变得很常见。其中一个例子就是它在著名的 ResNet 架构中的应用。因此,我们可以自信地说,我们确信它有多么有效。

一项关于 Batch Norm 有效性的有趣研究 [2] 表明,训练完整的 ResNet-866 网络可以产生93 % 的准确率,而冻结所有参数并训练Batch Norm 层的参数则可以获得83 % 的准确率——仅相差 10%。

Batch Norm 有三个好处:

  • 通过规范化每一层的输入,它可以加速训练过程。
  • 它降低了对初始条件的敏感性,这意味着我们不需要太仔细地初始化权重。
  • 批量规范化也充当正则化器。它提高了模型的泛化能力,在某些情况下还减少了对其他正则化技术的需求。

我们不明白什么

虽然 Batch Normalization 的积极作用显而易见,但没有人真正理解其有效性背后的原因。最初,Batch Normalization 论文的作者将其作为解决内部协变量偏移问题的一种方法引入。

关于内部协变量偏移,需要注意的是,您会发现它有各种定义,乍一看似乎没有关联。以下是我想要的定义。

神经网络的各层在从终点(输出层)到起点(输入层)的反向传播过程中会进行更新。内部协变量偏移是指在训练过程中,随着前几层的参数更新,某一层的输入分布会发生变化的现象。

当我们改变早期层的参数时,我们也会改变后期层的输入分布,这些后期层的输入分布已经更新,可以更好地适应旧的分布。

内部协变量转移会减慢训练速度并使网络更难收敛,因为每一层都必须不断适应由先前层的更新引入的输入分布的变化。

原始 Batch Normalization 论文的作者认为其有效的原因在于缓解了内部协变量偏移的问题。然而,后来的一篇论文 [3] 认为 Batch Norm 的成功与内部协变量偏移无关,而在于平滑了优化景观


两种损失景观的比较:高度粗糙和尖锐的损失表面(左)与更平滑的损失表面(右)。

上图取自 [4],它实际上与批量归一化无关,但很好地可视化了平滑的损失景观。然而,批量归一化因平滑损失景观而有效的理论本身也存在挑战和问题。

批量规范注意事项

由于我们对批量标准化的工作原理的理解有限,因此在网络中使用它们时需要考虑以下几点:

  • 使用 Batch Norm 时,训练模式和推理模式之间存在差异。使用错误的模式可能会导致难以识别的意外行为。[5]
  • 批量归一化很大程度上依赖于小批量的大小。因此,虽然它使得谨慎初始化权重的必要性降低,但选择正确的小批量大小变得更加关键。[5]
  • 关于是在激活函数之前还是之后使用 Batch Norm,仍存在争议。[6]
  • 虽然 Batch Norm 具有正则化效应,但它与其他正则化(如dropout或权重衰减)的相互作用尚不清楚。

当谈到批量规范时,有许多问题需要回答,但研究仍在进行中,以揭示这些层如何影响神经网络。

2.过度参数化和泛化


人脸识别实验表明,网络中权重的最佳数量可以比数据点的数量大得多。

大型网络挑战了我们对神经网络工作方式的旧观念。

传统上,人们认为使用过度参数化的模型会导致过度拟合。因此,解决方案要么是限制网络规模,要么是添加正则化以防止对训练数据的过度拟合。

令人惊讶的是,在神经网络中,使用更大的网络可以改善泛化误差(|训练误差 - 测试误差|)。换句话说,更大的网络泛化效果更好。[7] 这与传统复杂性指标(如VC 维度,一种量化从示例中学习难度的指标)的承诺相矛盾。[8]

这一理论也挑战了关于深度神经网络 (DNN) 是通过记忆训练数据还是通过学习模式来实现其性能的争论。[9] 如果它们记忆数据,它们怎么可能推广到预测看不见的数据?如果它们不记忆数据而只学习底层模式,那么即使我们在标签中引入一定量的噪音,它们如何预测正确的标签?


分类器的过度拟合。

理解深度学习需要重新思考泛化

关于这个主题的一篇有趣的论文是《理解深度学习需要重新思考泛化》 [10]。作者认为,传统方法无法解释为什么较大的网络具有良好的泛化能力,同时这些网络甚至可以拟合随机数据。

本文值得注意的一部分解释了显式正则化(例如权重衰减,dropout和数据增强)对泛化误差的作用:

显式正则化可能会提高泛化性能,但对于控制泛化误差来说,它本身既不是必要的也不是充分的。L2 正则化(权重衰减)有时甚至有助于优化,这说明它在深度学习中不太为人所知。[10]

即使使用了 dropout 和权重衰减,InceptionV3 仍然能够超出预期地很好地拟合随机训练集。这并不是要贬低正则化,而是要强调通过改变模型架构可以获得更大的收益。


正则化对泛化的影响。[10]

那么,泛化能力好的神经网络与泛化能力差的神经网络有何不同?这似乎是一个兔子洞。我们还需要重新思考以下几点:

  • 我们对模型有效容量的理解。
  • 我们对模型复杂性 和大小的测量。模型参数或 FLOP 仅仅是好的指标吗?显然不是。
  • 泛化的定义以及如何测量它。


随着网络规模(H)不断增加,训练和测试误差不断减少,并且不会发生过度拟合。[11]

当谈到大型网络和参数数量对泛化的影响时,你可以找到大量的论文和博客文章,有些甚至与其他相矛盾。

我们目前的理解表明,尽管较大的网络容易过拟合,但它们的泛化能力却很好。这可能是由于它们的深度,与浅层网络相比,它们可以学习更复杂的模式。这主要取决于领域——某些数据类型可能受益于较小的模型并遵循奥卡姆剃刀原理(不要错过这篇文章,请继续阅读👇)。

3.神经网络中的隐式正则化

机器学习的核心是梯度下降——我们在损失图中寻找局部最小值所采取的步骤。梯度下降 (GD) 和随机梯度下降 (SGD) 是任何刚开始学习机器学习的人最先掌握的算法之一。

由于该算法看起来很简单,人们可能会认为它没有太多深度。然而,在机器学习中,你永远找不到池子的按钮。

神经网络是否受益于梯度下降的隐式正则化,从而促使它们找到更简单更通用的解决方案?这可能是上一节中过度参数化的网络泛化的原因吗?

有两个实验你需要密切关注:

实验 1

当 [11] 的作者使用 SGD 且未进行显式正则化在 CIFAR-10 和 MNIST 数据集上训练模型时,他们得出结论,随着网络规模的增加,测试和训练误差会不断减少。这与网络越大,测试误差越大(因为过拟合)的理念相悖。即使在向网络添加越来越多的参数后,泛化误差也不会增加。然后,他们通过添加随机标签噪声来强制网络过拟合。如下图所示,即使有 5% 的随机标签,测试误差也会进一步减少,并且没有明显的过拟合迹象。



网络的测试和训练误差随着规模 (H) 的增加和标签噪声的增加而增加。左侧是 MNIST,右侧是 CIFAR-10。[11]

实验 2

一篇重要的论文《寻找真正的归纳偏差》 [12] 通过使用线性可分数据集拟合预测器进行实验。作者展示了使用梯度下降且没有正则化的逻辑回归如何固有地将解决方案偏向最大边距分离器(也称为硬边距 SVM)。这是梯度下降的一个有趣且令人惊讶的行为。因为即使损失和优化不直接涉及任何鼓励边距最大化的术语(如您在支持向量机中发现的术语),梯度下降固有地将解决方案偏向最大边距分类器。



H3 表示硬边界 SVM 如何对数据集进行分类。

梯度下降作为自然正则化器

实验表明,隐式正则化效应似乎在优化过程中更倾向于更简单、更稳定的解决方案。这意味着 GD 偏爱更简单的模型,通常会收敛到一种特殊类型的局部最小值,称为“平坦”最小值,与更尖锐的最小值相比,这种局部最小值往往具有较低的泛化误差。这有助于解释为什么深度学习模型通常在训练数据之外的现实任务上表现良好。这表明优化过程本身可以被视为一种隐式正则化形式,从而产生的模型不仅在训练数据上的误差最小,而且在预测未知数据方面也具有稳健性。完整的理论解释仍然是一个活跃的研究领域。


4.彩票假说

模型修剪可以将训练好的神经网络的参数减少 90%。如果操作正确,可以在不降低准确率的情况下实现这一点。但你只能在模型训练完成后修剪它。如果我们能在训练之前删除多余的参数,这将意味着使用更少的时间和资源。

彩票假说  认为,神经网络包含子网络,这些子网络在单独训练时可以达到与原始网络相当的测试准确率。这些子网络(中奖彩票)具有使其训练成功的初始权重(彩票)

作者通过迭代修剪方法找到这些子网络:

  • 训练网络:首先,他们训练原始未修剪的网络。
  • 修剪:训练后,修剪p%的权重。
  • 重置权重:剩余权重将设置为初始初始化时的原始值。
  • 重新训练:对修剪后的网络进行重新训练,看它是否能达到与之前网络相同或更高的性能。
  • 重复:重复此过程,直到原始网络达到所需的稀疏度,或者修剪后的网络不再能达到未修剪网络的性能。

彩票假说论文中使用的迭代剪枝。

所提出的迭代训练方法计算成本很高,需要在多次实验中对网络进行 15 次或更多次的训练。


​​​​​​​欢迎前往我们的公众号,阅读更多时事资讯​​

创作不易,觉得不错的话,点个赞吧!!!


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中,batch_size是指每个训练批次中包含的样本数量。在训练神经网络模型时,我们通常将一定数量的样本作为一个批次输入到模型中进行计算和更新参数。batch_size的大小会影响模型参数的更新速度和训练效果。较小的batch_size可以加快参数更新的速度,但可能导致训练过程波动较大;较大的batch_size可以降低噪声干扰,但会使参数更新缓慢和增加内存开销。因此,我们需要根据具体情况选择合适的batch_size,并进行调优以达到最佳的训练效果。在实践中,通常将batch_size设置为2的整数次幂,如32、64、128、256等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习中的batch_size是什么?](https://blog.csdn.net/u011699626/article/details/120352398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [关于机器学习(深度学习)训练过程中 batch_size 的意义](https://blog.csdn.net/quicmous/article/details/130802357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值