神经网络训练不起来怎么办(五)| Batch Normalization

news2024/12/24 10:26:33

Ⅰ,领域背景

训练困境:当 input feature 在不同 dimension 上差距很大的时候,会产生一个非常崎岖的 error surface(误差平面)。这种崎岖多变的误差平面容易导致训练陷入以下的几个困境。

  • 收敛困难:在崎岖的误差表面上,梯度下降等优化算法很容易陷入局部最小值或者鞍点,并且很难继续优化。这会导致模型无法收敛到全局最优解,训练过程变得非常困难。
  • 训练速度变慢:由于优化算法在崎岖的误差表面上可能会走弯路,需要更多的迭代次数才能找到较好的参数解,导致训练速度变慢
  • 梯度消失或爆炸:梯度在崎岖的误差表面上可能会非常大或者非常小。这种情况会导致梯度消失或爆炸,使得模型参数更新不稳定,训练过程变得不可靠。

不要小看 optimization 这个问题,有时候就算你的 error surface 是 convex 碗状都不见得很好训练。如果我们采用固定的 learning rate,一般很难得到好的结果,所以才需要adaptive learning rate、 Adam 等改进过的 optimization 的方法。

Batch Normalization 则是通过直接改变 input feature 的分布,得到一张均匀、光滑的 error surface,使得训练变得容易。


Ⅱ,原理详解

举例理解: 如图展示了一个非常简单的 model,输入是 x1 和 x2,模型参数是 w1 和 w2。input feature 这两个 dimension 的 scale 差距很大:x1 是个位级的;x2 是百位级的。因此 w2 的更新会对最终的损失产生更大的影响,也就是说 w1 方向是相对平缓的,w2 方向是相对陡峭的,形成了一张不同方向上坡度非常不同的 error surface。

Feature Normalization:此时如果我们将 x1 和 x2 归一化到同样的数值范围,就可以得到一张均匀、相对光滑的 error surface,如图绿色的 error surface 所示。这种将 feature 归一化的方法统称为 Feature Normalization。更一般的,我们如果一共有 R 个 inputs,那么在每个 dimension 做 normalization,意味着仍然可以保留 inputs 在每个 dimension 上的比重,同时又使得每个 dimension 数值范围保持相同。

Batch Normalization:实际的训练中,我们是将数据以 batch 的大小送进去,因此我们只以 batch 为单元做 normalization,而不是直接对所有数据做 normalization,这招叫做 Batch Normalization。

scale and shift: Normalization 之后还包含了一个适应过程,通过引入了可学习的参数 γ 和 β,可以通过训练来学习最优的特征表示。换句话说,这两个可学习参数增加了模型的韧性和容量,能够留给神经网络一点自我发挥的空间,让它慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 γ 和 β 来抵消一些 normalization 的操作。

 Deep Learning:在多层 layer 的网络架构中,每次经过线性变化后都可能使得 feature 的数值范围再次变得不一致,而每层的输出 feature 又将作为下一层的输入 feature。因此,需要在每层处理之后,重新进行 normalization(激活层前后进行 normalization 对训练效果影响不大)。

model testing:我们如果用 model 作 application 的时候,inputs 不像 train 的过程那样可以一次性给出,然后划分为 batch 一批一批进行送进去,也就没有 batch 的概念。在这种情况下,我们通常直接使用训练得到的 Batch Normalization 作为先验知识对 testing 过程中的每个 input 进行 normalize。

Ⅲ,实验分析

如下图所示,展示了不同训练条件下模型的收敛情况,其中横轴是训练过程,纵轴是模型在验证集上的准确率。观察图中的几条对比曲线,我们能够得到如下的结论:

  • 加速收敛:黑色虚线是没有进行 Batch Normalization 的训练过程,其余的几条线都是有 Batch Normalization 参与的训练过程。很明显可以看出 Batch Normalization 可以加速模型的收敛速度,缩短训练时间。
  • 允许使用更高的学习率:蓝色实线表示将学习率提高至原来的30倍,明显加速了收敛。由于 Batch Normalization 可以尽可能产生均匀、光滑的 error surface,因此可以使用更高的学习率来训练模型,加快收敛速度。
  • 缓解了梯度消失的问题:sigmoid 作为激活函数,导致 feature 都分布在 sigmoid 梯度较小处,引起梯度消失的问题,导致模型无法训练起来。但是使用 Batch Normalization 之后,feature 集中在0附近,可以在 sigmoid 函数上产生较大的梯度,顺利反向传播。


Ⅳ,参考链接

[1] 李宏毅 | MACHINE LEARNING | 2021 SPRING

[2] 李宏毅 | 课程视频 | 神经网络训练不起来怎么办?(五)

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

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

相关文章

注释1111

3。3 Batch Normalization (BN) 的工作原理 Batch Normalization 是在处理一个 "批次" 数据时,计算这个批次内所有样本的平均值和方差,然后使用这些统计量对每个样本进行归一化。这就是说: 批次(batch)&a…

局部整体(五)利用python绘制旭日图

局部整体(五)利用python绘制旭日图 旭日图( Sunburst Charts)简介 由于其形状像太阳光由内向外辐射出来,所以叫SunBurst(太阳爆发),中文也叫日出图。是多个层级的环图/饼图的拓展,可以显示多个…

GNU的编译工具链

文章目录 GNU的编译工具链 GNU的编译工具链 预编译器cpp 编译器 cc1 汇编器 as 链接器 ld 其中cpp和cc1属于gcc的一部分,as和ld属于binutils的一部分。

MySQL-如何定位慢查询

慢查询:页面加载过慢,接口压测响应时间过长(超过1s)

STM32基础篇:PWR

PWR简介 PWR(Power Control),为电源控制模块,负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能。 1、可编程电压监测器 简称PVD,可以监控VDD电源电压。当VDD下降到PVD阀值以…

yum安装nexus3详细教程分享

创建nexus用户,类似于这种中间件,尽量做到专户管理,当然如果你喜欢直接用root权限安装,更改配置文件也是可以支持的。但是实际上大多情况下,在生产环境是拿不到root权限的。 useradd -m nexus为nexus用户设置密码 pass…

AS-V1000视频监控平台客户端播放实时视频时,一些视频画面显示的时间不准确的解决方法

目录 一、背景说明 二、解决过程 1、查看设备时间 2、查看服务器时间 3、ntp介绍 1) ntp的概念 2) ntp的同步方式 3) ntp的优势 4、自动校准服务器和设备时间 1) 下载ntp 2) 修改ntp.conf 3) 重启ntp服务,自动校准时间 4) 国标重新接入设备自动同步时间 三、问题解…

zStorage在海光CPU架构上的性能调优

前言 随着"信创"的东风吹遍大江南北,各家公司都开始了国产化的适配道路。zStorage团队当然也没有缺席,去年我们适配了华为的鲲鹏架构,整体性能水平达到了Intel架构的70%以上。今年我们开始着力于海光CPU架构的适配。与鲲鹏架构相比…

【linux学习指南】权限管理与文件访问设置方法

文章目录 📝前言🌠 bc指令🌉uname –r指令 🌠重要的几个热键[Tab],[ctrl]-c, [ctrl]-d🌉关机 🌠命令扩展🌉shell命令以及运行原理 🌠Linux权限的概念🌠 Linux权限管理&am…

善用工具:开发与效率

文章目录 常用工具Visual Studio Code(VS Code)GitDockerPostman 效率对比VS Code 与 Sublime TextGit 与 SVNDocker 与虚拟机Postman 与 cURL 近来趋势人工智能与编程工具的结合低代码与无代码平台版本控制的演进准备自适应的开发环境与新兴技术的整合 …

Linux驱动(三):字符设备驱动之杂项

目录 一、Linux设备分类二、设备号与字符设备的编码方式1.设备号2.字符设备的编码方式 三、杂项字符设备驱动的初级编写 一、Linux设备分类 Linux下一切皆文件,所有的硬件设备在Linux应用层中都会被抽象成文件,所有对硬件设备的操作到应用层中&#xff0…

电脑垃圾箱删除的东西怎么找回来?介绍四个有效方法

在日常使用电脑的过程中,‌我们可能会不小心删除一些重要文件,‌而这些文件往往会被放入垃圾箱(‌回收站)‌。‌但有时候,‌我们可能会清空垃圾箱,‌导致这些文件看似永久丢失。‌其实,‌即使垃…

RFID光触发标签在汽车制造行业的深度应用

汽车制造行业作为现代工业的重要支柱,面临着日益激烈的市场竞争和不断提高的客户需求。传统的汽车制造管理方式在生产过程监控、零部件管理、质量追溯等方面存在诸多不足,而 RFID 光触发标签技术的出现为汽车制造行业的转型升级提供了有力的解决方案。 …

用友大易:以AI创新驱动招聘未来,引领2024 AIGC商业新趋势

更多内容前往个人网站:孔乙己大叔 在科技日新月异的今天,人工智能(AI)正以前所未有的速度渗透并重塑各行各业,其中,企业招聘领域也不例外。8月22日,由创业邦及2024 AGI商业趋势大会组委会主办的…

Mysql基础练习题 610.判断三角形 (力扣)

题目: 对每三个线段报告它们是否可以形成一个三角形 题目连接: https://leetcode.cn/problems/triangle-judgement/description/ 建表插入数据: Create table If Not Exists Triangle (x int, y int, z int) Truncate table Triangle in…

综合评价 | 基于层次-熵权-博弈组合法的综合评价模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度&#…

SAP CN22释放物料的可用性的操作方法

SAP PS系统,CN22要释放网络的可用性(直发物料号的需求), 必输要操作路径正确,或者操作的界面正确,否则保存后无法释放可用性。 先进入作业一览 然后进入作业的组件,对网络赋值的界面&#xff0…

实训day41(9.2)

[rootlocalhost ~]# docker stop 30 //停止nginx容器 30 [rootlocalhost ~]# docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

银河麒麟v10-sp3 安装Tomcat10最新版

tomcat官方地址---Apache Tomcat - Apache Tomcat 10 Software Downloads 下载这个即可 Core: 含义:Core代表Tomcat的核心程序,即Tomcat的正式二进制发布版本。这是大多数用户做开发或学习时应该下载的版本。用途:包含了Tomcat服…

53.x86游戏实战-XXX获取人物状态

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…