当前位置: 首页 > ai >正文

Note2.4 机器学习:Batch Normalization Introduction

Batch Normalization(批标准化,BN)通过标准化数据的操作,使得损失函数的优化地形(optimization landscape)更加平滑,从而达到更好地训练效果。BN常用于卷积神经网络(CNN)等。

1.原理

一般的gradient descend局限很大,RMSProp、small Batch、momentum等方法都是通过改变参数更新的策略实现优化,而Batch Normalization直接改变error surface

使各个feature处于同一范围的方法有很多,统称Feature Normalization,以下呈现的只是其中一种

2.实现

术语

standard deviation:标准差,variance:方差,tilde:波浪符号,converge:收敛

不仅是feature要标准化,中间的每层都需要标准化。标准化放在激活函数之前和之后效果相差不大。但是如果选择sigmoid,最好在sigmoid前标准化,因为sigmoid为s型,标准化后数据都在0附近,计算的gradient会更大,收敛会更快;否则收敛非常慢。

 

注意:下面标准化涉及的运算都是element-wise,对每个元素分别操作,而不是对向量处理。(比如求μ和σ)

一个有趣的事情是标准化后,Z1和后面所有的中间值关联起来了(图中标注了三角形的量)。但实际上不会选择full batch,把所有data一起丢进去训练,而是采用mini batch,所以这个方法叫做Batch Normalization。注意:batch size必须较大,因为只有batch里面的data足以表示整个训练集的分布时,才能用batch的Normalization近似代替训练集的Normalization。 

 这一步表示γ和作element-wise的乘法再加上β,目的:标准化强制数据均值为0、方差为1,但这种分布可能不符合实际任务的需求(例如,某些特征可能需要非线性的分布),通过 γγ 和 ββ 重新缩放和平移模型能够自适应地学习适合当前任务的分布,避免标准化对特征的过度约束。

开始时一般γ设为全1的向量,而β设为零向量。

3.实际运行的处理

上述方法中都是对batch标准化,但在inference(即testing)阶段,很可能没有batch,而是一个个单独的数据,所以必须调整策略

事实上在testing时并不需要自己处理,pytorch内部已经处理好了:使用moving average代替average。moving average即移动平均:一种通过使用过去若干时间段的平均值计算得出的平均值。移动平均值会定期变化,最早的数值会被基于最新数据的数值所替代。

 

4.实验结果 

蓝色的点表示相同的错误率,从图中可以看出Batch Normalization确实加快了训练速度。

粉色的线表示先进行Batch Normalization后sigmoid的结果,至于为什么没有先sigmoid,后Batch Normalization,作者说收敛速度太慢,训练不起来。

5. 有效性的解释

  

6.拓展:其他Normalization方法

BN不是唯一的Feature Normalization的方法,方法非常多:

http://www.xdnf.cn/news/14666.html

相关文章:

  • 栅极驱动器选的好SiC MOSFET高效又安全
  • Microsoft AZ-900AI-900考证速过经验分享
  • docker部署后端服务的脚本
  • 大模型在急性冠脉综合征预测及诊疗方案制定中的应用研究
  • 大数据在UI前端的应用创新研究:用户偏好的动态调整与优化
  • JavaScript中Object()的解析与应用
  • 免费AI助手工具深度测评:Claude4本地化部署与实战应用指南
  • Spring Boot 项目实训 - 图书信息网站
  • Windows11系统上安装WM虚拟机及Ubuntu 22.04系统
  • ESP32 008 MicroPython Web框架库 Microdot 实现的网络文件服务器
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • 【策划所需编程知识】
  • Tomcat Maven 插件
  • 人工智能-基础篇-3-什么是深度学习?(DL,卷积神经网络CNN,循环神经网络RNN,Transformer等)
  • flink同步kafka到paimon,doris加速查询
  • 目标跟踪存在问题以及解决方案
  • 电脑远程控制另一台电脑无法连接怎么办
  • Java+Python智能化网盘【Day8-2】
  • MySQL基础维护实操手册:从启停到备份恢复
  • 【RAG面试题】如何获取准确的语义表示
  • 华为云Flexus+DeepSeek征文|基于Dify+ModelArts开发AI智能会议助手
  • 氨基酸的结构和作用
  • 小米路由器 AX3000T 解锁 SSH
  • 【机器学习与数据挖掘实战 | 医疗】案例18:基于Apriori算法的中医证型关联规则分析
  • linux网络编程socket套接字
  • VUE3入门很简单(3)--- watch
  • 2.1、STM32 CAN外设简介
  • python pyecharts 数据分析及可视化
  • 环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。
  • Axure版AntDesign 元件库-免费版