批量归一化(部分理解)

news2024/10/5 23:29:12
目的与疑惑
在深度学习中,每层输入数据的分布可能因为前一层参数的微小变动而有较大变化,
这种现象称为内部协变量偏移(Internal Covariate Shift)。
批量归一化通过规范化层输入来减少内部协变量偏移,使网络更稳定,通常也能加快收敛速度。

我的疑惑:后向传播后所有参数都会进行微调,那么再次输入数据 , 每层的输出数据变化应该是正常现象啊?

解释:
我们的本来目的是,批量输入数据然后获得合适的分布
例子:输入一个物品 合适的分布:狗>>狼>猫

现在的情况是,每次后向传播更新参数后,前向传播得到的分布都误差很大
第一次后向传播:输入一个物品,分布:狼>>猫>狗
第二次后向传播:输入一个物品,分布:猫>狗>>狼

正确的情况是,每次后向传播更新参数后,前向传播得到的分布都在一个规律内 且 越来越准确
第一次后向传播:输入一个物品,分布:狗>猫>狼
第二次后向传播:输入一个物品,分布:狗>>猫>狼

所以为了避免现在的情况:引入了批量归一化
批量归一化与降低学习率的区别
降低学习率
作用
1.缓和梯度更新:降低学习率会减少每次参数更新的步幅,这可以防止参数在优化过程中过度摆动,从而有助于避免梯度爆炸问题。

2.提高稳定性:较小的更新步幅可以帮助模型更平稳地逼近最优点,尤其是在接近最优解时,防止超过最优点。


限制:
1.训练速度减慢:较小的学习率意味着收敛到最佳性能所需的迭代次数可能会增加,从而导致整体训练时间变长。

2.可能陷入局部最小值:如果学习率过小,网络可能会在达到全局最优解之前就陷入局部最小值或鞍点。

使用批量归一化
作用:

1.稳定输入分布:批量归一化通过规范化层输入,减少了内部协变量偏移,使得每层的输入在训练过程中保持更加稳定的分布。

2.允许使用更高的学习率:由于输入分布的稳定性,可以使用更高的学习率进行训练,而不会导致梯度消失或爆炸,从而加快了模型的收敛速度。

限制:

1.增加计算负担:批量归一化会增加每次迭代的计算复杂度,因为它需要计算每个小批量的均值和方差,然后对数据进行规范化处理。

2.依赖于批量大小:批量归一化的效果依赖于批量的大小,过小的批量可能会导致估计的均值和方差不准确,影响模型性能。


注意:
没有必要和丢弃法混合使用
一般归一化在卷积层与全连接层之后,在激活函数前

可参考文章:28 批量归一化【动手学深度学习v2】 - 哔哩哔哩 (bilibili.com)

引入可学习的尺度参数(𝛾γ)和偏移参数(𝛽β)作用

这两个参数帮助模型保持和恢复那些可能在归一化过程中被不恰当地标准化掉的有用信息。我们可以通过一个比较形象的例子来解释这两个参数的作用:

形象例子:调整温度和风味

想象一下,你在制作一道菜,这道菜的味道受到配料比例的影响。在我们的例子中,配料比例相当于每层神经网络中的特征输入。为了确保每次做出的菜品都有相似的基础味道,你决定对所有配料进行“标准化”处理——即确保每种配料的量都处于一个标准化的水平(相当于批量归一化中的均值为0和方差为1的标准化步骤)。这样做可以让基础味道保持一致,但也可能会使菜品失去一些独特风味。

为了弥补这一点,你引入了两种“调味剂”:

尺度调整剂(𝛾γ):这相当于你可以决定增加或减少某种配料的比例(例如,如果某种配料的特性被标准化减弱了,你可能想通过增加它的比例来恢复它的影响力)。
风味偏移剂(𝛽β):这允许你根据需要添加或减少某种特定风味的强度,以达到完美的口感平衡。

神经网络中的应用

在神经网络中,𝛾γ 和 𝛽β 的作用与“调味剂”类似:

𝛾γ(尺度参数):允许模型调整每个特征归一化后的缩放程度。这是重要的,因为不是所有特征都应该具有相同的方差(即同样的“重要性”或“活跃度”)。有些特征可能更重要,因此需要更大的方差来强调其效果。
𝛽β(偏移参数):允许模型对每个特征进行垂直平移。这帮助模型调整特征的平均活跃度或激活阈值,以便更好地捕捉数据中的关键信息。

通过学习适当的 𝛾γ 和 𝛽β 值,神经网络能够自适应地恢复或保留那些对完成特定任务至关重要的特征属性,即便这些特征在批量归一化的过程中被标准化。这样,网络不仅能从标准化带来的优势中受益(如更快的收敛和更高的稳定性),还能保持必要的灵活性,以适应复杂和多变的数据特性。

过程

在这里插入图片描述

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

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

相关文章

day05 51单片机-外部中断、定时器

1 外部中断——按键控制LED亮灭 1.1 需求描述 本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。 1.2 硬件设计 1.2.1 中断简介 单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、…

使用composer开发自己的扩展包

前言 日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。 1.新建仓…

OceanBase单机版安装体验

前情提要 上周OceanBase开发者大会过后,作为观察员也来体验一下OB的安装。业内有某个国产安装用了两周,这种其实有点劝退了。话说就是10年前,没搞过Oracle的人也不用两周安装一个数据库啊。今天看看OB的(一体化)安装。…

Qt样式表的基本使用

在Qt应用程序中,样式表是一种强大的工具,可以帮助您自定义和美化界面,提升用户体验。通过使用样式表,您可以轻松地调整控件的外观和布局,从而实现更加个性化和专业化的界面设计。本文将详解Qt样式表的基本使用方法、技…

【机器学习-18】特征筛选:提升模型性能的关键步骤

一、引言 在机器学习领域,特征筛选是一个至关重要的预处理步骤。随着数据集的日益庞大和复杂,特征的数量往往也随之激增。然而,并非所有的特征都对模型的性能提升有所贡献,有些特征甚至可能是冗余的、噪声较大的或者与目标变量无关…

Java openrasp记录-01

例子1 https://github.com/anbai-inc/javaweb-expression 一个hook ognl、spel、MVEL表达式注入的例子 用的是asm5进行字节码修改 采用premain进行插桩,重写transform方法 expClassList是要hook的类,这里定义在MethodHookDesc 这里判断hook点通过类名…

ClickHouse 如何实现数据一致性

文章目录 ReplacingMegreTree 引擎数据一致性实现方式1.ReplacingMegreTree 引擎2.ReplacingMegreTree 引擎 手动合并3.ReplacingMegreTree 引擎 FINAL 查询4.ReplacingMegreTree 引擎 标记 GroupBy5.允许偏差 前言:在大数据中,基本上所有组件都要求…

【Python-Spark(大规模数据)】

Python-Spark(大规模数据) ■ Spark■ PySparl编程模型■ 基础准备■ 数据输入■ RDD的map成员方法的使用■ RDD的flatMap成员方法的使用■ RDD的reduceByKey成员方法的使用■ 单词计数统计■ RDD的filter成员方法的使用■ RDD的distinct成员方法的使用■…

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

【JavaScriptThreejs】判断路径在二维平面上投影的方向顺逆时针

原理分析 可以将路径每个连续的两点向量叉乘相加,根据正负性判断路径顺逆时针性 当我们计算两个向量的叉积时,结果是一个新的向量,其方向垂直于这两个向量所在的平面,并且其大小与这两个向量构成的平行四边形的面积成正比。这个新…

Android 组件提供的状态保存(saveInstanceState)与恢复(restoreInstanceState)

在Android的组件Activity中,有这样一对方法: onSaveInstanceeState 和 onRestoreInstanceState 这两对方法,可以让我在Activiy被异常销毁时,保存状态;以及在Activity重建时,恢复状态。 比如:当我们在输入…

MATLAB 2024a软件下载安装教程

1-首先下载Matlab,以下迅雷云链接,里面有全版本的matlab,根据自己的需要下载即可,建议下载最新版的,功能会更多,当然内存也会更大。 迅雷云盘迅雷云盘https://pan.xunlei.com/s/VNgH_6VFav8Kas-tRfxAb3XOA…

Linux I2C(二) - I2C软硬件架构

1,I2C的总线拓扑 2,I2C S/W topology linux kernel I2C framework使用如下的软件拓扑抽象I2C硬件(我们可以一起领会一下其中的“设备模型”思想): 1)platform bus(/sys/bus/platform&#xff0…

Oracle导出导入dmp等文件类型的多表数据的常用方法、遇见的常见问题和解决办法(exp无效sql???)

使用PLSQL执行导出表数据的时候有两种方法 1、使用Oracle命令【imp--exp】【impdp--expdp】 但是如果你的本机没有安装有Oracle数据库,使用的instant client远程连接服务器上的Oracle数据库时候,你没有Oracle数据库带有的exp.exe、imp.exe等扩展文件&a…

如何高效跟进项目进度?试试禅道几个功能

禅道提供了一系列功能和工具,可实现项目进度的有效管理和跟进,极大提升项目管理效率。禅道中的项目进度来源于迭代进度,迭代的进度又来源于任务的消耗和剩余工时,可通过以下功能有效跟进项目进展。 一、燃尽图 在禅道里&#xf…

机器学习day1

一、人工智能三大概念 人工智能三大概念 人工智能(AI)、机器学习(ML)和深度学习(DL) 人工智能:人工智能是研究计算代理的合成和分析的领域。人工智能是使用计算机来模拟,而不是人类…

【办公类-22-14】周计划系列(5-5)“周计划-05 周计划表格内教案部分“节日”清空改成“节日“” (2024年调整版本)Win32

背景需求: 本学期19周,用了近10周的时间,终于把周计划教案部分的内容补全了(把所有教案、反思的文字都撑满一个单元格), 一、原始教案 二、新模板内的教案 三、手动添加文字后的样式(修改教案…

庐山研习班上介绍的25个LINUX工具

从2013年的第一届算起,庐山研习班走过十余个年头,办了十几次了。但每一次,都有很多不一样。即使是相同的主题,也有很大差异。 今年春季的庐山研习班是在上个周末。周四晚上我和大部分同学都到了五老峰脚下的训练基地。 除了周六下…

【C++ STL序列容器】list 双向链表

文章目录 【 1. 基本原理 】【 2. list 的创建 】2.1 创建1个空的 list2.2 创建一个包含 n 个元素的 list(默认值)2.3 创建一个包含 n 个元素的 list(赋初值)2.4 通过1个 list 初始化另一个 list2.5 拷贝其他类型容器的指定元素创…

HNCTF 2022 week1 题解

自由才是生活主旋律。 [HNCTF 2022 Week1] Interesting_include <?php //WEB手要懂得搜索 //flag in ./flag.phpif(isset($_GET[filter])){$file $_GET[filter];if(!preg_match("/flag/i", $file)){die("error");}include($file); }else{highlight_…