Batch Normalization

1.是什么?

批量归一化(Batch Normalization),由Google于2015年提出,是近年来深度学习(DL)领域最重要的进步之一。该方法依靠两次连续的线性变换,希望转化后的数值满足一定的特性(分布),不仅可以加快了模型的收敛速度,也一定程度缓解了特征分布较散的问题,使深度神经网络(DNN)训练更快、更稳定。
 

2.为什么?

随着网络的深度增加,每层特征值分布会逐渐的向激活函数的输出区间的上下两端(激活函数饱和区间)靠近,长此以往则会导致梯度消失,从而无法继续训练model。BN就是通过方法将该层特征值分布重新拉回标准正态分布,特征值将落在激活函数对于输入较为敏感的区间,输入的小变化可导致损失函数较大的变化,使得梯度变大,避免梯度消失,同时也可加快收敛。
 

3.怎么样?

3.1算法过程

输入:批处理(mini-batch)输入x:B={x_{1,...,m}}
输出:规范化后的网络响应{y_{i}}=BN_{\gamma ,\beta })(x_{i}))

过程:
 1.计算批处理数据均值(mini-batch mean)
 2.计算批处理数据方差(mini-batch variance)
 3.规范化(normalize): 获得N ∼ ( 0 , 1 ) 正态分布。其中 ε 是为了避免除数为0时所使用的微小正数。
 4.尺度变换和转移(scale and shift): 将x_{i}​乘以 γ 调整数值大小,再加上 β 增加偏移后得到y_{i}​,这里的 γ 是尺度因子,β是平移因子。这一步是BN的精髓,由于归一化后的x_{i}基本会被限制在正态分布下,使得网络的表达能力下降。为解决该问题,我们引入两个新的参数:γ 和 β  。γ 和 β 是在训练时网络自己学习得到的。
换句话说正态分布式的数据归一化变成了下面的形式来进行数据归一化
 5.return 学习的参数

3.2原理分析

我们的激活函数本质上想要放大差别,而随着网络深度的增加,就好像我们小时候玩的听筒传话游戏,每个人将听到的信息轮流传下去,信息便会在传递的过程中变得离谱起来。如下图: 

如果数据在梯度很小的区域,那么学习率就会很慢甚至陷入长时间的停滞。减均值除方差后,数据就被移到中心区域如上图所示,对于大多数激活函数而言,这个区域的梯度都是最大的或者是有梯度的(比如ReLU),这可以看做是一种对抗梯度消失的有效手段。对于一层如此,如果对于每一层数据都那么做的话,数据的分布总是在随着变化敏感的区域,相当于不用考虑数据分布变化了,这样训练起来更有效率。
训练的本质就是要根据loss去调整模型的参数,从而使得模型找到一个特定的function去拟合我们的数据。而BN的把数据从梯度较小的区域移到了梯度较大区域,如此一来,backforward时的loss梯度大,模型收敛速度就快了,这也就是sigmoid激活函数被ReLU激活函数普遍替代的原因。

参考:

Batch Normalization 批量归一化 【全方位解释】

Batch Normalization详解

深入理解批归一化Batch Normalization批标准化

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

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

相关文章

STM32串口通信初探:使用HAL库实现基本功能

在本文中,我们将探索如何使用STM32的HAL库来实现串口通信的基本功能。串口通信是一种常见的外设通信方式,用于在微控制器和其他外部设备之间进行数据传输。在STM32系列微控制器中,HAL库提供了简单且灵活的方法来实现串口通信。我们将重点讨论…

python读取所有sheet内容到另一个文件中

实现效果: 将原excel中的步骤、预期效果列按回车拆成多行数据,其余字段值填充其他数据 实现结果: # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your code. # Press Double Shift to search everyw…

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址: 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例,Mac安装方式相同 2. 安装 下载好后,打开安装包,进入安装界面: 点击Next,进入安…

LInux组管理及拓展

目录 一、Linux组管理 (一)、组的概述 1.概述 2.作用 (二)、组操作 1.创建 2.修改 3.删除 4.添加用户 二、用户信息查看 (一)、id (二)、finger (三&#x…

【专题】【中值定理-还原大法】

1)构造辅助函数 2)罗尔定理: 闭区间连续,开区间可导 F(a)F(b) 3)F‘(ξ)0,原命题得证 极限保号性:

ISIS配置以及详解

作者简介:大家好,我是Asshebaby,热爱网工,有网络方面不懂的可以加我一起探讨 :1125069544 个人主页:Asshebaby博客 当前专栏: 网络HCIP内容 特色专栏: 常见的项目配置 本文内容&am…

【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)

前言: 由于c语言的程序编译链接的这块知识点不清楚,回来复习一遍,以便于好理解c知识,我会尽快更新下一篇文章。 目录 1.程序的翻译环境和执行环境 2.翻译环境(编译链接) 编译(编译器&#xf…

C语言分支结构程序之if语句(1)

目录 if语句其一 奇数的判定 if语句其二 对奇数偶数的判断 if语句的结构图 专题 语法结构 结构图的阅读方法 结构图示例 相等运算符 关系运算符 嵌套的if语句 if语句其一 大家的一天都会怎么度过呢?我想应该不会是被设计好的程序那样循规蹈矩,我们…

webpack学习-1.起步

webpack学习-1.起步 1.基础设置2.配置文件的引入3.总结 1.基础设置 首先 webpack是干嘛的呢,用官网的一张图 Webpack 是一个现代的静态模块打包工具。它主要用于将前端应用程序中的各种资源(例如 JavaScript、CSS、图片等)打包成一个或多个…

【杂】解决关于mean(0)理解错误引发的程序bug

一、环境和解释器要一起配置好 invalid syntax 发生你在终端激活了一个环境,但 VSCode 依然使用之前的解释器的情况。 解释器设置影响了 VSCode 中运行 Python 脚本、调试、代码补全等功能的行为。VSCode 会根据你选择的解释器来执行这些操作。 二、关于mean&#x…

菜鸟学习日记(python)——运算符

我们进行运算时,需要两类数据,操作数和运算符,例如:ab就是一个运算,它的操作数是a和b,运算符是‘’ 在python中运算符包括以下几大类: 算数运算符比较(关系)运算符赋值…

JFrog----软件成分分析(SCA)简介

文章目录 1. SCA的重要性2. SCA的工作方式3. 安全漏洞分析4. 许可证合规性5. 代码质量和维护性结语 在当今的快速发展的软件行业中,软件成分分析(Software Composition Analysis,简称SCA)已成为一个不可或缺的工具。SCA的主要任务…