Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift--论文解析

深度学习-Batch Normalization 学习笔记 深度学习,Batch Normalization 算法学习笔记 阅读详情

1、概述

BN层来源于2015年的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》。在训练深度网络的时候,随着训练进行,每一层输入的分布会发生变化,这种现象称为internal covariate shift,这使得网络训练需要更小的学习率,更仔细的初始化,并且使得饱和非线性激活函数(saturating nonlinearities)更加难以使用。

使用了BN之后,可以使用较大的学习率,并且不需要过多的关注参数初始化,BN层也是一种正则化,某些情况下可以替代dropout(dropout也是一种正则化方法,可以缓解过拟合,提高模型泛化性能,但是dropout会减慢收敛速度,而BN层却能大幅提高训练速度)。论文里报告的结果达到了4.9% top-5 validation error (and 4.8% test error),超过了人类水平。

2、算法说明

算法流程如下所示

其中\epsilon是为了数值稳定引入的常数,tensorflow中\epsilon默认值为0.001。加入参数\gamma和\beta是为了使得BN层具有identity transform的能力(这一点和ResNet中的思想类似),如果训练过程中使得\gamma=\sqrt{\sigma^2_{\mathcal{B}}+\epsilon}并且\beta=\mu_{\mathcal{B}},那么就相当于y_i=x_i。在有BN层的时候,mini-batch的size要大于1,否则1个样本的情况下减去均值就等于0。

在加入BN层之后,网络整体的训练流程如下所示

上面这个整体的训练过程中重点在于第10行和第11行,上图中的做法是每一个mini-batch计算单独的均值和方差,然后进行BN转换,下一个mini-batch再重新计算均值和方差,最后模型训练结束后把所有的mini-batch均值和方差再求个均值作为最终的E(x)和Var(x),参数\gamma和\beta在训练中按照梯度下降进行更新。模型推断的时候,BN转换按照上图第11行的公式计算,其实这个公式就是把E(x)和Var(x)带入本文第一张图中Algorithm1中的公式得到的。

需要注意的是,在tensorflow中,最终的均值和方差不是按照论文中这种方法计算的,而是采用了滑动平均(moving averages,实际论文中也提到了这种方法),tf.layers.batch_normalization中的计算方法是得到mini-batch之后,计算其均值和方差,然后和上一个mini-batch的均值方差进行加权求和。tf.layers.batch_normalization中有一个参数momentum用来控制加权。

比如当前mini-batch的均值和方差为1和0.1,上一个mini-batch平滑后的均值和方差为0.7和0.2,当momentum=0.9的时候,当前mini-batch平滑后的均值为0.9*0.7+(1-0.9)*1=0.73,平滑后的方差为0.9*0.2+(1-0.9)*0.1=0.19。

另外还需注意的是,BN层的均值和方差不会自动完成平滑操作,因此需要用下面这种写法。

update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
optimizer = tf.train.GradientDescentOptimizer(learning_rate)
with tf.control_dependencies(update_ops):
    train_op = optimizer.apply_gradients(grads_and_vars=gradients)

通过tf.get_collection(tf.GraphKeys.UPDATE_OPS)可以获得更新均值和方差的操作,在进行训练之前首先进行更新操作,否则均值和方差一直保持初始化的值不变。

3、总结

  1. 加入BN层可以缓解Internal Covariate Shift,提升模型性能。
  2. 加入BN层之后允许较大的学习率,缓解了传统深度网络在较大学习率时出现的梯度消失和梯度爆炸问题。
  3. BN层具有正则化的效果。
  4. 在卷积网络中对于一个特征图学习一组参数\gamma和\beta,这样可以减少参数数量。
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》论文导读 深度神经网络在训练过程中,由于前面层的参数变化,会导致后面层输入的分布发生变化,这种现象被称为“Internal Covariate Shift”(内部协变量偏移)。这种偏移会使得网络训练变得复杂,需要较低的学习率和谨慎的参数初始化,从而减慢了训练速度,并可能导致模型难以收敛。为了解决这个问题,作者提出了Batch Normalization方法。 阅读详情

相关推荐

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift论文笔记

虽然GoogLeNet在ILSVRC2014上斩获了各种大奖,但是GooGle的各位大牛依然没有闲着,他们马上又抛出了一个新的问题:Internal Covariate Shift,也就是本文要研究的问题,他们提出了一个新的层:Batch Normalization(BN),不仅能够很好的解决这个问题,而且在增快训练速度的基础上能够有效的提高模型的性能。

小时候贼聪明 2914

【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?

15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义

bettii的博客 811

笔记:batch normalization:accelerating deep network training by reducing internal covariate shift

概述:机器学习系统中输入分布不均称为covariate shift。对于复杂网络系统,某层输入分布不稳定称为internal covariate shift.本文提出了batch normalization技术来解决deep neural network训练中这个的问题。

easylifer的专栏 3738

深度学习论文--Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

本文翻译论文为深度学习经典模型之一:GoogLeNet-BN 论文链接:https://arxiv.org/abs/1502.03167v3 摘要:训练深度神经网络的难度在于:前一层网络参数的变化,导致每一层输入的分布也随之变化。通常需要设置小的学习率以及小心的初始化,因此降低了网络的学习速度,并且经常出现非线性饱和,最终导致深度网络难以训练。本文称这种现象为内部协方差偏移(internal ...

DAOCHI 4208

Batch Normalization: Accelerating Deep Network Training by Reducing Internal.pdf

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

shopee app算法分析第一篇

shopee app算法分析第一篇分析完整算法大概要好几篇,耐心等待下.国内只会发律师函,牛逼,一个律师套话,一个律师发函,大意了(警惕卡通律师头像),希望law可以保护好你,还是干国外好.

2531

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift全文翻译

Inception v2 Sergey Ioffe,Christian Szegedy Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift - 原文 论文解读 精读深度学习论文(3) Batch Normalization 0 摘要 由于训练过程中各层输入的分布...

种树最好的时间是10年前,其次是现在!!! 8702

BUUCTF reverse题解汇总

BUUCTF平台刷题过程中做的一些逆向题解的总结归类

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1万+

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

训练深度神经网络很复杂,因为在训练过程中,随着前一层参数的变化,每层输入的分布也会发生变化。。批量归一化应用于最先进的图像分类模型,以减少 14 倍的训练步骤实现相同的精度,并大幅优于原始模型。使用批量归一化网络集合,我们改进了 ImageNet 分类的最佳已发表结果:达到 4.82% 的 top-5 测试误差,超过了人类评分者的准确性。

u013049912的博客 1513

Ubuntu 22.04下GNU Radio 3.10全家桶编译避坑实录:从UHD、VOLK到WiFi收发模块gr-ieee802-11

本文详细介绍了在Ubuntu 22.04系统下编译安装GNU Radio 3.10全家桶的完整流程,包括UHD驱动、VOLK优化库以及WiFi信号处理模块gr-ieee802-11的集成。通过逐步指导解决版本兼容性和依赖问题,帮助研究人员快速搭建高效的软件定义无线电开发环境,特别适合使用USRP设备进行无线通信研究的开发者。

weixin_30825199的博客 447

Tinder养号防封攻略来了:最新Tinder养号流程和运营攻略

今天,我就来给大家分享一下Tinder养号的具体操作,以及针对Tinder账号被封的一些常见问题为大家做个答疑。

m0_67768117的博客 2万+

Batch Normalization:加速神经网络训练的通用手段

本文详尽介绍了近几年在深度学习领域十分重要的“小trick,大杀器”——Batch Normalization,实际编码实现对比加入BN前后模型的性能表现差异。

hyman.lu 2929

YOLOv10改进 | 代码逐行解析(三) | YOLO中的Mosaic增强详解(新手入门必读系列)

本文给大家带来的是YOLOv10中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了,大家的训练结果中的结果检测图片大家可以看到数据集中多个图片会组合在一起这就是简单的Mosaic增强),下面我就来讲解一下其在YOLOv10中工作原理和代码定义,下面图片为一个Mosaic增强后的图片。​。

Snu77的博客 2077

Batch Normalization的Darknet代码解析

Batch_Norm公式推导与Darknet代码理解 论文:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》 URL:https://arxiv.org/pdf/1502.03167.pdf 1. Batch_Norm的正向推导 2. Batch_Norm反向推导 其中对均值与xi的求导会用到复合函数的求导计算: 3. darknet代码 3.

YMilton的专栏 447

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

回归预测 | MATLAB实现基于贝叶斯线性回归(Bayesian Regression)的多变量输入回归预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2199

【Bug已解决】[Bug]: ValueError: No user query found in messages QWEN 3.5 27B VLLM 0.16.0 NIGHTLY 解决方案

用 vLLM 0.16.0 nightly 给发聊天请求时,服务端在处理消息时抛ValueError,请求失败。

博客 408

手推Assignment2中BN反向传播

手推Assignment2中BN反向传播0.说在前面或许有些人对于上一节说的BN推导没有深入理解,那么本节则从一篇非常好的论文中来实践带大家手推一遍,与此同时,完成Wee...

Francis的博客 431

使用LabVIEW创建和分析柱状图:从基础绘制到高级数据分析的完整指南

LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是由美国国家仪器公司(National Instruments, NI)开发的一款图形化编程语言。自1986年首次推出以来,LabVIEW凭借其强大的数据采集、分析和控制能力,在工程、科研、教育等领域得到了广泛应用。与传统的文本编程语言不同,LabVIEW采用了图形化编程方式,用户通过连接不同的函数节点来实现复杂的逻辑和算法。

qq_38334677的博客 775

【论文阅读】Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift

Batch Normalization,BN-Inception

qq_34222839的博客 1315

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 文章目录【论文泛读】 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift摘要 Abstract介绍 Introduction减少 Internal Covariate Shift

风信子的猫Redamancy的快乐星球 5922

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Batch Normalization:Accelerating Deep Network Training by Reducing Internal Concariate Shift《》

internal covariate shift: 由于训练过程中网络参数的变化,导致网络内部激活层分布的变化。 这种思想的由来: 1,统计机器学习中有一个经典的假设:训练数据和测试数据是满足相同分布的。covariate shift:训练集的样本数据分布变化时,训练得到的模型无法很好的Generalization。 2,在神经网络中的各输出层可以作为下一层的输入层,也就是输出层可以作为训练数据,...

weeeeeida的博客 2494

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

批归一化Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift论文详解

背景: BN层为深度学习领域最经典结构之一,被深度网络广泛采用。我们需要深入理解BN的作用及机制。 目的: 详解BN论文。 论文地址:https://arxiv.org/abs/1502.03167v2 目录 一、概览 Motivation Solution Benefits 实验验证 二、问题背景 2.1 SGD中mini batch 2.2 梯度 2.3 mini-ba...

祥瑞的技术博客 1897

批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》

批归一化《Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift》读后总结前言文章主要内容与贡献提出了批归一化(Batch Normalization, BN)数值实验 前言 这是一些对于论文《Batch Normalization: Accelerating Dee...

yzqlyzql的博客 624
上一篇: 基于图的图像分割方法 Efficient Graph-Based Image Segmentation
下一篇: py3compile: not found 问题解决
__Destiny__
博客等级 码龄9年 27粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值