从 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) 是任何刚开始学习机器学习的人最先掌握的算法之一。

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

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

二维梯度下降。(来源:Wikimedia Commons)

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

实验 1

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

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

实验 2

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

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

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

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

4.彩票假说

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

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

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

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

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

感谢关注雲闪世界。(亚马逊aws和谷歌GCP服务协助解决云计算及产业相关解决方案)

 订阅频道(https://t.me/awsgoogvps_Host)
 TG交流群(t.me/awsgoogvpsHost)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硅纪元视角 | 摩根大通拥抱AI:LLM Suite开启金融行业新篇章!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…

华为OD机试 - 计算三叉搜索树的高度 (python 2024年C卷D卷)

华为OD机试(C卷D卷)2024真题目录(Java & c & python) 题目描述 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的…

【字母异位词分组】python刷题记录

R2-字符串篇 class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:#哈希表分组#把每种字母出现次数相同的字符串分到同一组#sort一下好像能分dictdefaultdict(list)for s in strs:asorted(s)#sorted(s)相同的字符串分到同一组dict[.join(a)].appen…

Java 基础 and 进阶面试知识点(超详细)

一个 Java 文件中是否可以存在多个类(修饰类除外)? 一个 Java 文件中是可以存在多个类的,但是一个 Java 文件中只能存在一个 public 所修饰的类,而且这个 Java 文件的文件名还必须和 public 所修饰类的类名保持一致&a…

如何应对零日威胁:漏洞扫描

零日威胁正变得比以往任何时候都更加危险。5月底至6月初,恶意行为者通过零日攻击接管了众多名人和品牌的TikTok账户。用户声称在打开一条私信后便丧失了账户的控制权。而用于攻击的恶意软件能够在用户不下载或安装任何程序的情况下感染设备。 目前尚不清楚此次事件的…

linux系统巡检及shell脚本

目录 步骤1 系统巡检基本命令 CPU 内存 磁盘 进程 网络、流量 步骤2 shell脚本编写 awk awk常用内置变量 awk正则 实例一 实例二 实例三 实例四 实例五 sed 选项与参数 例一 例二 例三 例四 例五 例六 例七 grep 主要参数 常用用法 例一 例二 例三…

vue 开发环境配置

1. nvm 安装 在 github上下载 最新的 nvm 包 https://github.com/coreybutler/nvm-windows/releases或者在 csdn 上下载(从github上迁移,方便下载)https://download.csdn.net/download/u011171506/89585197 下载后不用修改任何配置&#x…

2024年【广东省安全员B证第四批(项目负责人)】考试报名及广东省安全员B证第四批(项目负责人)模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员B证第四批(项目负责人)考试报名根据新广东省安全员B证第四批(项目负责人)考试大纲要求,安全生产模拟考试一点通将广东省安全员B证第四批&#x…

系统架构师(每日一练7)

每日一练 1.关于网络延迟正确的是()。答案与解析 A.在对等网络中,网络的延迟大小与网络中的终端数量无关 B.使用路由器进行数据转发所带来的延迟小于交换机, C.使用internet服务器可最大程度地减小网络延迟 D.服务器延迟的主要影响因素是队列延迟和磁盘10延迟 2.以…

【ESP32 IDF SPI硬件驱动W25Q64】

目录 SPISPI介绍idf配置初始化配置通信 驱动代码 SPI SPI介绍 详细SPI介绍内容参考我之前写的内容【ESP32 IDF 软件模拟SPI驱动 W25Q64存储与读取数组】 idf配置 初始化配置 spi_bus_initialize() 参数1 :spi几,例如spi2,spi3 参数2:…

GitHub Actions是什么

目录 GitHub Actions是什么 GitHub Actions的使用方法 示例 注意事项 GitHub Actions配置文件中-工作流的 :Workflow 一、自动化任务执行 二、规范团队协作 三、灵活配置和定制 四、提高开发效率 五、集成GitHub生态 六、可复用性和共享性 仓库中的“Actions”部分…

mac 使用ssh 密钥登录linux 服务器

本地操作 1. 生成SSH密钥对 # your_emailexample.co 自行定义即可 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com"这会提示你输入文件保存位置和密码(密码可以留空): Generating public/private rsa key pair. Enter file in which to save the…

Postman入门(三):创建post请求及请求参数

创建post请求Raw data: 请求方式:Post 请求体:raw,选择json格式 参数{}内数据,点击send即可发送请求 创建post请求Form-data: 请求方式:Post 请求体:form-data, 参数:在form-data内&#…

Lombok的认识

Lombok的作用 Lombok是一个Java库,它可以通过简单的注解形式来帮助开发人员简化Java代码的编写,特别是减少模板代码的书写。具体来说,Lombok的主要作用包括: 减少模板代码:Lombok可以通过注解自动生成getter、setter、…

Javascript 沙漏图案(Hour-glass Pattern)

给定正整数 n,以沙漏形式打印数字模式。示例: 输入:rows_no 7 输出: 1 2 3 4 5 6 7 2 3 4 5 6 7 3 4 5 6 7 4 5 6 7 5 6 7 6 7 7 6 7 5 6 7 4 5 6 7 3 4 5 6 7 2 3 4 5 6 7 1 2 3 4 5 6…

Windows系统安全加固方案:快速上手系统加固指南(上)

无论是个人用户、小型企业还是大型机构,都需要采取措施保护其计算机系统免受各种威胁、系统加固常见的应用场景有个人用户、 AWD 比赛、公共机构以及企业环境等等 文档目录 一、Windows常用命令二、Windows常见端口三、账户安全3.1 默认账户安全3.2 按照用户分配账户…

大数据-44 Redis 慢查询日志 监视器 慢查询测试学习

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

代码随想录算法训练营day25 | 491.递增子序列 、46.全排列 、47.全排列 II、51.N皇后、37.解数独

碎碎念:加油加油,继续坚持 参考:代码随想录 491.递增子序列 题目链接 491.递增子序列 思想 注意结果中不能有重复的子集。 不能排序后处理,因为进行排序以后改变元素顺序,求的递增子序列会改变。 树形图&#xf…

大模型金九银十秋招:AI时代的就业新趋势,收藏我这篇就够了非常详细

随着人工智能技术的飞速发展,大模型(Large Models)在各个领域的应用日益广泛,从自然语言处理到图像识别,从自动驾驶到智能推荐系统,大模型正逐渐成为AI领域的新宠。在这个背景下,大模型的秋招&a…

sizeof和strlen区别

如图,sizeof来计算的时候,得出的是计算机用多少个字节来表示一个地址 而strlen来计算的时候,只是计算出他的有效字符长度 打印出的不同地址就是其不同的区别