CAU人工智能class4 批次归一化

news2025/5/24 9:44:14

归一化

在对输入数据进行预处理时会用到归一化,将输入数据的范围收缩到0到1之间,这有利于避免纲量对模型训练产生的影响。
但当模型过深时会产生下述问题:
在这里插入图片描述
当一个学习系统的输入分布发生变化时,这种现象称之为“内部协变量偏移”(Internal Covariate Shift)。

内部协变量偏移

内部协变量偏移借鉴了统计学中的“协变量偏移”概念, 协变量(Covariate)指的是在分析某一因变量与其关系时,除了自变量以外,可能影响因变量的其他变量。

协变量的存在可能混淆自变量和因变量之间的因果关系,故在研究中通常对协变量进行控制或校正。模型在训练时遇到数据分布发生变化,会影响模型的泛化能力。

内部协变量偏移的影响

需要较低的学习率

如果某一层的输入分布突然变化(例如均值或方差大幅波动),则该层的参数更新可能会破坏之前学到的特征。为了稳定训练,必须使用较小的学习率,这会显著减慢训练速度。

参数初始化敏感

参数初始化不合理会直接影响到模型的收敛速度、训练效率以及最终模型的性能。
原因:

  • 引发梯度消失/爆炸问题:在计算梯度时会计算激活函数的倒数(斜率),而特别时饱和的激活函数的斜率在某些位置接近于0(或很大),这就会导致梯度消失或爆炸问题。
  • 更快的模型收敛:更快的模型收敛
有利于训练的参数初始化

在这里插入图片描述
训练一个深度学习模型,如果希望模型有比较好的收敛效果,需要的前提
条件是每一层的输入数据有稳定的数据分布

批次归一化

批次归一化是对一个 batch 的数据在网络各层的输出做标准化处理,固定小批量里面的均值和方差,使得在不同层数据保持相同分布,即满足标准正态分布。

优点

  • 批规一化允许使用更高的学习率
  • 并且对初始化的要求不那么严格
  • 它还起到了正则化的作用,在某些情况下甚至可以消除对 Dropout 的需求

步骤

𝐵𝑎𝑡𝑐ℎ𝑁𝑜𝑟𝑚 主要思路是在训练时按 𝑚𝑖𝑛𝑖 − 𝑏𝑎𝑡𝑐ℎ 为单位,对神经元的数值进行归一化,使数据的分布满足 均值为 0,方差为 1。具体计算过程如下(4步):

  1. 计算 𝑚𝑖𝑛𝑖 − 𝑏𝑎𝑡𝑐ℎ 内样本的均值
    在这里插入图片描述
  2. 计算 𝑚𝑖𝑛𝑖 − 𝑏𝑎𝑡𝑐ℎ 内样本的方差
    在这里插入图片描述
  3. 归一化
    在这里插入图片描述

    其中 𝜖 是一个微小值(例如 1e−7)
  4. 对标准化的输出进行缩放和平移
    如果强行限制输出层的分布满足标准正态化,使得数据集中在激活函数中心的线性区域,反而使激活函数丧失了非线性特性。
    在这里插入图片描述
    可能会导致某些特征模式的丢失。因此在 BN 操作中为每个卷积核引入了两个可训练参数:缩放 (𝑆𝑐𝑎𝑙𝑒)因子 𝛾 和偏移(𝑆ℎ𝑖𝑓𝑡)因子 𝛽。
    在这里插入图片描述
    其中γ 和β 是可学习的参数,可以赋初始值 𝛾 = 1,β = 0 , 在训练过程中不断学习调整。而均值 𝜇𝐵 和方差 𝜎𝐵2 是计算得到的。
    调节的原理:
    γ 的作用:γ 可以调整归一化后数据的方差,使其恢复到原始数据的尺度。
    在这里插入图片描述
    β 的作用:β 可以调整归一化后数据的均值,使其恢复到原始数据的均值。在这里插入图片描述
    这样通过调节这两个参数可以保留一部分原数据的分布。

批量归一化的位置

放在激活函数前面

激活函数是类似于 sigmoid 有一定饱和区域的函数。则可以把归一化层放在激活函数之前,在一定程度上可以缓解梯度消失问题
在这里插入图片描述
如上图所示:假设未经过 BN 调整。
正态分布均值: −6
方差: 1
意味着 95 % 的值落在位于两个标准差[−2, 2] 的区间内,即 [−8, −4] 之间,而对应的 Sigmoid 函数的值明显接近于 0 ,这是典型的梯度饱和区。意味着梯度变化很小甚至消失。
而当落在的区间比较大时,计算出的梯度同样很小。
在这里插入图片描述
问题:
在这里插入图片描述
因此要对分布区间进行一定的变换,使其大部分落在函数敏感区间。
在这里插入图片描述
在这里插入图片描述

放在激活函数之后

如果激活函数是类似于 relu 这样的激活函数,那么可以把归一化层放在激活函数之后,可以有效避免数据在激活之前被转化成相似的模式,从而使得非线性特征分布趋于同化。

批归一化与dropout的冲突

当 Dropout 和 BN 这两个强大的方法在实际上结合使用的时候,反而经常无法获得性能上额外的增益。事实上,当主流卷积网络在同时配备 BN 和 Dropout 时,在很多情况下它们的性能甚至会变得更差。

方差偏移

每层的输入分布由于上一层的参数更新变得不稳定(方差不一致),随着信号变深,最终预测的数值偏差可能会被不断的放大,从而降低系统的性能.
在这里插入图片描述
从图中可以看到,没有使用dropout的模型每层的方差变化不大(蓝线),而使用了dropout的红线方差极不稳定(红线)

解决方法

在这里插入图片描述

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

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

相关文章

Android11以上通过adb复制文件到内置存储让文件管理器可见

之前Android版本如果需要将文件通过adb push放到内置存储,push到/data/media/10下的目录即可,直接放/sdcard/文件管理器是看不到的。 现在最新的Android版本直接将文件放在/sdcard或/data/media/10下文件管理器也看不到 可以将文件再复制一份到一下路径…

篇章二 需求分析(一)

目录 1.知名MQ 2.需求分析 2.1 核心概念 2.2 生产者消费者模型的类别 2.3 BrokerServer 内部的关键概念(MQ) 1.虚拟主机(Virtual Host) 2.交换机(Exchange) 3.队列(Queue) 4…

图解深度学习 - 机器学习简史

前言 深度学习并非总是解决问题的最佳方案:缺乏足够数据时,深度学习难以施展;某些情况下,其他机器学习算法可能更为高效。 若初学者首次接触的是深度学习,可能会形成一种偏见,视所有机器学习问题为深度学…

Gmsh 代码深度解析与应用实例

在科学计算与工程仿真领域,Gmsh 是一款广受欢迎的开源有限元网格生成器,它不仅支持复杂的几何建模,还能高效生成高质量的网格,并具备强大的后处理功能。本文将深入解析几段具有代表性的 Gmsh 代码,从基础几何创建到高级…

49页 @《人工智能生命体 新启点》中國龍 原创连载

《 人工智能生命体 新启点 》一书,以建立意识来建立起生命体,让其成为独立、自主的活动个体;也就可以理解为建立生命体的思想指导。 让我们能够赋予他灵魂!

量化研究---bigquant策略交易api研究

api接口来平台的代码整理,原理是读取bigquant的模拟测试信号,下单,可以完美的对接qmt交易,我优化了交易api的部分内容 我开发对接qmt的交易系统 看api源代码 源代码 # 导入系统包 import os import json import requests from ty…

编译原理 期末速成

一、基本概念 1. 翻译程序 vs 编译程序 翻译程序的三种方式 编译:将高级语言编写的源程序翻译成等价的机器语言或汇编语言。(生成文件,等价)解释:将高级语言编写的源程序翻译一句执行一句,不生成目标文件…

echarts之漏斗图

vue3echarts实现漏斗图 echarts中文官网&#xff1a;https://echarts.apache.org/examples/zh/index.html 效果图如下&#xff1a; 整体代码如下&#xff1a; <template><div id"funnelChart" style"width:100%;height:400px;"></div&g…

零基础设计模式——第二部分:创建型模式 - 原型模式

第二部分&#xff1a;创建型模式 - 5. 原型模式 (Prototype Pattern) 我们已经探讨了单例、工厂方法、抽象工厂和生成器模式。现在&#xff0c;我们来看创建型模式的最后一个主要成员——原型模式。这种模式关注的是通过复制现有对象来创建新对象&#xff0c;而不是通过传统的…

java 进阶 1.0.3

Thread API说明 自己滚去看文档 CPU线程调度 每一个线程的优先使用权都是系统随机分配的&#xff0c;人人平等 谁先分配到就谁先用 也可以耍赖&#xff0c;就是赋予某一个线程拥有之高使用权&#xff1a;优先级 这样的操作就叫做线程调度 最基本的是系统轮流获得 java的做法是抢…

从 Docker 到 runC

从 Docker 到 runC:容器底层原理详解 目录 1. Docker 与 runC 的关系 2. Docker 的核心组件 3. runC 的核心功能 4. 实战示例:从 Docker 到 runC 4.1 示例场景:运行一个简单容器 4.2 Docker 底层调用 runC 的流程 4.3 查看 runC 的调用 4.4 直接调用 runC 创建容器 …

PET,Prompt Tuning,P Tuning,Lora,Qlora 大模型微调的简介

概览 到2025年&#xff0c;虽然PET&#xff08;Pattern-Exploiting Training&#xff09;和Prompt Tuning在学术界仍有探讨&#xff0c;但在工业和生产环境中它们已基本被LoRA/QLoRA等参数高效微调&#xff08;PEFT&#xff09;方法取代 。LoRA因其实现简单、推理零开销&#…

02-jenkins学习之旅-基础配置

0 配置主路径 jenkins安装目录下找到jenkins.xml文件&#xff0c;C:\ProgramData\Jenkins\.jenkins目录下会存放jenkins相关的配置信息。 1 jdk配置 jenkins是java开发开源的项目&#xff0c;进而服务器需要jdk环境 1.1 服务器安装jdk 1.2 jenkins jdk配置 2 git配置 在je…

Appium+python自动化(三)- SDK Manager

简介 一开始打算用真机做的&#xff0c;所以在前边搭建环境时候就没有下载SDK&#xff0c;但是考虑到绝大多数人都没有真机&#xff0c;所以顺应民意整理一下模拟器。SDK顾名思义&#xff0c;Android SDK Manager就是一个Android软件开发工具包管理器&#xff0c;就像一个桥梁&…

3D Gaussian Splatting for Real-Time Radiance Field Rendering——文章方法精解

SfM → Point-NeRF → 3D Gaussian Splatting &#x1f7e6;SfM Structure-from-Motion&#xff08;运动恢复结构&#xff0c;简称 SfM&#xff09;是一种计算机视觉技术&#xff0c;可以&#xff1a; 利用多张从不同角度拍摄的图像&#xff0c;恢复出场景的三维结构和相机的…

【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/146409453 作者&#xff1a;CSDN|Ringleader| 1 结构 1.1 状态机 1.2 SMB 2 代码实现 2.1 核心控制 Player_Base_SMB 继承 StateMachineBehaviour &#xff0c;控制变量初始…

【Java高阶面经:消息队列篇】22、消息队列核心应用:高并发场景下的解耦、异步与削峰

一、消息队列:分布式系统的核心枢纽 在分布式架构日益普及的今天,消息队列(Message Queue, MQ)已成为解决系统复杂性的核心组件。它通过异步通信、系统解耦和流量控制等能力,有效应对高并发场景下的数据流动挑战。 1.1 核心特性:异步、解耦与弹性 1.1.1 异步通信:释放…

软媒魔方——一款集合多种系统辅助组件的软件

停更4年&#xff0c;但依旧吊炸天&#xff01; 亲们&#xff0c;是不是觉得电脑用久了就像老牛拉车&#xff0c;慢得让人着急&#xff1f;别急&#xff0c;我今天要给大家安利一个超好用的电脑优化神器——软媒魔方&#xff01; 软件介绍 首先&#xff0c;这货真心是免费的&a…

多路径可靠传输协议(比如 MPTCP)为什么低效

可靠就不能多路径&#xff0c;多路径求可靠必然要多费劲。这不难理解&#xff0c;多路径必异步&#xff0c;这无疑增加了可靠性判断的难度。 前文 多路径传输(比如 MPTCP)对性能的意义 阐述了作为单连接的多子流 MPTCP 对传输性能的意义是无意义&#xff0c;本文接着阐述作为隧…

塔能高温冰蓄冷技术:工厂能耗精准节能的创新之路

在工厂的能耗构成中&#xff0c;制冷系统是重要的耗能环节。传统的水蓄冷和冰蓄冷技术在实际应用中存在一些局限性&#xff0c;难以满足工厂对节能和成本控制的更高要求。塔能科技的高温冰蓄冷技术&#xff0c;凭借其独特的优势&#xff0c;为工厂能耗精准节能提供了创新的解决…