对 BatchNormalization 中 Internal Convariate Shift 的理解

【AI知识点】内部协变量偏移(Internal Covariate Shift) 内部协变量偏移(Internal Covariate Shift) 是深度学习中的一个概念,它描述了在神经网络训练过程中,每一层的输入分布随着训练过程的变化而变化的现象。这种现象会增加训练的难度,导致网络收敛变慢,甚至可能影响模型的最终性能。 阅读详情

前言:写的不好,主要解释了对内部协变量漂移(Internal Convariate Shift)的理解。


之前对BatchNormalization的理解不是很透彻,在搭建神经网络的时候也没有很注意去使用,今天集中搜索整理了下Batch Normalization的相关资料,才知道BatchNormalization的重要性,并不是用了Relu激活函数,BatchNormalization就没有用了。

为什么要使用Batch Normalization?

1. 降低内部协变量漂移(Internal Convariate Shift)

神经网络的最终目的:说到底,就是学习训练样本的流形分布。

每一层神经网络的目的:学习当前层神经网络的输入或上一层神经网络的输出的分布。

机器学习(包含深度学习)的使用的基本假设:IID 独立同分布假设,就是训练数据集与测试数据集服从相同的分布。这是通过训练数据训练得到的模型能在测试数据上工作的一个基本保障。

深度学习中的IID 独立同分布假设:1)神经网络的训练集与测试集服从相同的分布。

                                                        2)神经网络每一次输入的mini-batch的样本都服从同一个分布。

每层神经网络的IID 独立同分布假设:鉴于每层神经网络的目的,我们希望每一层神经网络在每一次迭代时的输入都服从同一个分布,只有这样,这层神经网络才能有效学习这个分布。否则,如果一个神经网络每一次输入的都是服从不同分布的样本,那么,最后神经网络也不知道该学习哪个分布了,从而导致学习效果变差。

协变量漂移/偏移(Convariate Shift):一般是指训练集与测试集的分布不同,或每次迭代时输入层输入的样本服从的分布不同。

内部协变量漂移(Internal Convariate Shift):Internal 指的是深层网络的隐藏层。内部协变量漂移是指,针对深层神经网络的内部的某个隐藏层,它的输入数据是上一层神经网络的输出。而随着神经网络的训练,每一层神经网络的参数(包含上一层)是不断变化的,因此,即使上一层网络的输入服从相同的分布,经过网络参数的变化,上一层网络的输出数据与上一次迭代时的输出数据不再服从同一个分布。从而导致,当前层神经网络的当前次的输入数据与上一次迭代时的输入数据服从不同的分布。我们把这种现象叫做内部协变量漂移。最后用一句话描述就是:由于神经网络参数的不断变化,每一层隐藏层神经网络在每一次迭代时的输入数据都服从不同的分布,这种现象叫内部协变量漂移。(我这里倾向于把shift翻译为“漂移”而不是“偏移”,因为每次迭代时内部输入数据都服从不同的分布,所以“漂移”更形象)

(附)如何判断是否已经出现协变量漂移:MCC(Matthews correlation coefficient),这个指标本质上是用一个训练集数据和预测集数据之间的相关系数,取值在[-1,1]之间,如果是1就是强烈的正相关,0就是没有相关性,-1就是强烈的负相关。

2.梯度消失

批标准化可以使数据远离激活函数的极限饱和区。relu激活函数虽然不存在梯度消失的问题,但是把小于0的数值激活为0。批标准化可以减少被置零的数值的数目。

 

Batch Normalization的执行时机

在激活函数之前

Batch Normalization解决的问题

1. 内部协变量漂移

2. 梯度消失

3. 加快收敛速度,提升训练速度。

Relu 激活函数下仍有使用Batch Normalization的必要

 

 

 

参考:【深度学习】深入理解Batch Normalization批标准化

TensorFlow 中 Batch Normalization API 的一些坑

批标准化详解(Batch Normalization for Reducing Internal Covariate Shift)

深度模型中relu激活函数的不足,batch normalization怎么解决梯度消失爆炸的数值问题

标准化(BN)与激活函数

关于Teacher Forcing、自回归和内部协变量偏移等概念梳理 阅读详情

相关推荐

迁移学习:协变量偏移问题分析

迁移学习:协变量偏移问题分析 作者:禅与计算机程序设计艺术 1. 背景介绍 机器学习模型的性能很大程度上依赖于训练数据的质量和分布。但在实际应用中,训练数据和测试数据往往存在分布差异,这种现象被称为协变量偏移(Covariate Shift)问题。协变量偏移会导致模型在实际应用中

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1275

Internal_Covariate_Shift现象以及Batch Normalization的可视化

文章目录序Internal Covariate Shift不加BN可视化加了BN后 序 本文注重对Internal_Covariate_Shift和Batch_Normalization的可视化。什么是Internal_Covariate_Shift和Batch_Normalization请参考Internal Covariate Shift与Normalization。 Internal Covariate Shift 参考网上的博文,个人理解如下: Covariate Shift指源空间和目标空间的输

mantoureganmian的专栏 1247

Internal Covariate Shift与Normalization

引言 Batch norm在深度学习中已经是一个常用且有效的方法,用来加速网络收敛及防止梯度消失等神经网络常见的问题,那么batch norm为什么有效呢? 从源头出发,神经网络难以训练的原因是什么? Internal Covariate Shift 深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不...

lpty的博客 2万+

【深度学习基础】Batch Normalization

@TOC 超参调试 相较于机器学习中的定步长搜索。在深度学习中,随机选择点进行计算比较超参数设定值的好坏。 如果找到部分点效果很好,那么放大该区域,接着进行随机选点计算比较。例如下图所示。 Batch Normalization 1. 单一隐藏层 2. 深度网络 tf.nn.batch-normalization() ...

twostarxx的博客 1246

Batch Normalization + Internal Covariate Shift(论文理解)

在看压缩神经网络相关的论文中,总是能看见 Batch Normalization,在网上找了很多博客看,但是一直处于一种似懂非懂的状态。于是去找了原论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》来看,以下是我个人根据论文和网上的相关资源写的学习心得总结...

jason19966的博客 3624

基于NXP i.MX RT1180的无传感器FOC电机驱动实战指南

磁场定向控制(FOC)是一种先进的电机控制技术,它通过精密的数学变换,将三相交流电机的控制解耦为独立的转矩和磁场分量,从而实现高效、平稳、低噪音的驱动。其核心原理在于利用Park/Clark变换,在旋转坐标系下对电流进行线性控制。这项技术的价值在于显著提升了永磁同步电机(PMSM)的效率与动态性能,广泛应用于机器人、无人机和工业自动化等高精度场景。本文聚焦于利用NXP i.MX RT1180跨界处理器及其MCUXpresso SDK,快速实现一套完整的无传感器FOC解决方案。通过解析硬件平台选型、软件架构,

weixin_33925615的博客 303

深度学习中的Internal Convariate Shift (ICS) 问题

深度学习网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络设计到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化。通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训练好模型,我们需要非常谨慎地设定学习率、初始化权重以及尽可能细致的参数更新策略。 Google将这一现象总结为Internal Convariate Shift,简称ICS。 Google提出BN的本之就是能够解决ICS问题,但是最近也有paper指出B...

hxxjxw的博客 1247

告别Nginx原始日志!VictoriaLogs+Grafana构建企业级应用日志分析平台实战

描述:做为一个合格的运维工程师,在面对企业安全运维管理中,日志审计是一项非常重要的工作。授人以鱼不如授人以渔,各位运友们可参照作者的方案设计,在自己的项目中根据实际情况调整落地,例如,不在仅仅采集 NGINX 应用日志,而是采集 Apache、Tomcat、SpringBoot 等多种应用服务器的日志,又如,不再仅仅采集网络设备、安全审计审计日志,而是 Windows、Linux 等多种操作系统的审计日志等,大家可充分发挥想象、实践能力,也欢迎大家在知识星球中分享自己的方案设计,一起交流学习。

全栈工程师修炼指南-IT知识分享 2475

深度学习——Internal Covariate Shift与Normalization

转载自https://blog.youkuaiyun.com/sinat_33741547/article/details/87158830 Internal Covariate Shift与Normalization 一、“Internal Covariate Shift”问题 什么是“Internal Covariate Shift”? 深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上...

霓而~ 3868

Windows 11 部署 Docker Desktop:从 WSL 报错到服务配置的完整排障实录

本文详细记录了在Windows 11上部署Docker Desktop时遇到的WSL报错问题及完整解决方案。从Hyper-V配置、BIOS设置到系统服务检查,提供了一系列实用命令和排查步骤,帮助开发者快速解决'Unexpecter WSL error'等常见问题,实现Docker与WSL2的稳定运行。

weixin_30687051的博客 120

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 450

破解深度学习难题:Batch Normalization 如何解决 Internal Covariate Shift (内部协变量偏移)问题

Internal Covariate Shift(内部协变量偏移)是指在深度神经网络训练过程中,由于前一层参数的更新导致后一层输入数据分布发生变化的问题。简单来说,随着模型的训练,网络的每一层都会接收到“不断变化的输入分布”,这会给训练过程带来挑战。

aiAI 725

智慧杯 考试必备

2019.4. 强密码 描述 我们称一个密码是强密码,当且仅当它满足以下所有条件: 由 8 − 16 个字符组成 至少包含一个大写字母 (A-Z) 至少包含一个小写字母 (a-z) 至少包含一个数字 (0-9) 至少包含一个特殊符号 (! @ #$ % & * _ +) 娇娇发现她现在的密码好像不是强密码,请你帮她计算一下最少添加几个 字符可以变成强密码? 输入 输入仅一行,一个字符串,表示娇娇当前的密码 输出 输出一个数表示答案 如果不需要添加任何字符就已.

Fairy1208的博客 2861

解决深度学习中的Internal Covariate Shift问题

通过对每一层的输入进行规范化处理,Normalization技术可以使得每一层的输入分布具有相似的统计特性,从而提高整个网络的训练效果。具体来说,Batch Normalization会对每一批数据的均值和方差进行计算,并将每一批数据进行规范化处理,使得每一批数据的均值为0,方差为1。Normalization的基本思想是对每一层的输入进行规范化处理,使得每一层的输入分布都具有相似的统计特性。这些技术的实现方式不同,但其基本思想都是对每一层的输入进行规范化处理,使得每一层的输入分布都具有相似的统计特性。

qq_40427481的博客 262

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2279

嵌入式工程师成长之路(7)——算法学习

算法大全1、风仲达——算法笔记2、坐在马桶上学算法3、啊哈算法4、深度强化学习实验室。

云轩阁 4万+

Internal Covariate Shift以及Batch Normalization

1 Internal Covariate Shift 意思个人的理解是在多层网络训练中,后面层次的神经网络接受到的节点受到前面层次的网络参数变化导致该层输入数据的分布发生了变化.泛指,在多层数据网络中各层之间参数变化引起的数据分布发生变化的现象. 2 其危害一是导致后层网络参数要适应分布的变化,导致实际上的学习率降低,危害二是容易陷入梯度饱和,后层参数更新慢.分布带来的改变是导致导数方向变化莫测...

dayuqi的专栏 1131

【RKNN】RKNN(Rockchip Neural Network)​​ 的详解

RKNN 为 Rockchip 硬件提供了高效的 AI 推理解决方案,适合需要低功耗、实时响应的边缘场景

浩瀚之水的专栏 1684

深度学习中的Internal Convariate Shift (ICS)

  深度学习网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络设计到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化。通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训练好模型,我们需要非常谨慎地设定学习率、初始化权重以及尽可能细致的参数更新策略。   Google将这一现象总结为Internal Convariate ...

weixin_30423977的博客 696

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Covariate Shift(协变量偏移)

转载于https://zhuanlan.zhihu.com/p/205183444 此系列文章为笔者学习工作中的阶段性总结,难免有纰漏,如有不正之处,欢迎指正,大家共同成长。Covariate Shift现象在机器学习的工业界应用中经常遇到,这个概念实际上属于Dataset Shift的一种。Dataset Shift概念在ML项目中,我们一般将采集到的真实场景的数据分成训练集和测试集(或验证集),并假设训练集和测试集符合独立同分布,这样才能保证在训练集上表现良好的模型同样适用于测试集(真实场景)。但是当因

lihe的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

协变量偏移/标签偏移/概念偏移

协变量偏移 这里我们假设,虽然输入的分布可能随时间而改变,但是标记函数,即条件分布P(y∣x)不会改变。虽然这个问题容易理解,但在实践中也容易忽视。 想想区分猫和狗的一个例子。我们的训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类。 cat cat dog dog 测试数据: cat cat dog dog ...

幸福诗歌的博客 7889

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【机器学习】covariate shift现象的解释

一、什么是covariate shift? 在论文中经常碰到covariate shift这个词,网上相关的中文解释比较少 你可能会在介绍深度学习Batch Normalization方法的论文到中看到covariate shift这个词, 并且所有看过这篇论文的或者实际做过工程的人,都知道BN这种归一化手段很好用,可以避免covariate shift 那么covariate shift

xf__mao的博客 3万+

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

基础知识(梯度爆炸和梯度消失): 梯度爆炸:可以用这个图直观呈现,也就是梯度变化为正无穷或者负无穷(个人理解)。 梯度消失: 简单来说就是梯度接近0,神经网络的权重不再更新,继续训练学习不到图像的特征了。 解决梯度消失和爆炸的方法: 1.网路结构的改变,如RNN通过梯度截断来处理,LSTM通过门控制系统来解决梯度爆炸问题 2. 激活函数sigmod函数改为RULE函数,避免梯度消失 3. 通过加正则约束(BN可以看作是一种正则)来解决梯度爆炸 BN(batch norm)的原理: 将样.

u012811785的博客 7374

机器学习问题之一:协变量偏移(Covariate Shift)

例如,随着时间的推移,用户的偏好可能会发生变化,这会导致用户行为数据的协变量偏移。同理,在一个复杂的机器学习系统中,也会要求系统的各个子模块在训练过程中输入分布是稳定的,若是不满足这一条件,这会导致各个子模块数据的内部协变量偏移。协变量偏移(Covariate Shift)是机器学习和深度学习中的一个重要概念,指的是在模型训练和应用时,输入数据(特征)的分布发生了变化,但输出标签的分布保持不变。在机器学习中,一般假设模型输入数据的分布是稳定的,若是模型输入数据的分布发生变化,这种现象被称为协变量偏移。

搏博的专栏 3652

BatchNorm详解

引言: 前几天被同事问到了一个问题:当batch_size=1时,Batch Normalization还有没有意义,没有说出个所以然,才意识到自己从来不好好读过BN的论文(Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift),寻思着看看可不可以从论文中得到答案,本文就是自己学习记录之用,有些狗屁不通的地方请谅解。 1. Introduce 主要分析了输入数据的分布不稳

weixin_42071277的博客 6937

对于BN层的理解

1、BN层为什么可以防止梯度消失 Batchnorm是深度学习发展以来提出的最重要的成果之一了,目前已经被广泛的应用到了各大网络中,具有加速网络收敛速度,提升训练稳定性的效果,Batchnorm本质上是解决反向传播过程中的梯度问题。batchnorm全名是batch normalization,简称BN,即批规范化,通过规范化操作将输出信号x规范化保证网络的稳定性。 具体的batchnorm...

北冥有小鱼 1万+
上一篇: 梯度下降法,最速下降法,牛顿法,Levenberg-Marquardt 修正,共轭方向法,共轭梯度法
下一篇: 对tensorflow 的BatchNormalization的坑的理解与测试
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值