【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?
前言:15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义
2015年Google团队论文:【here】
2018年MIT团队论文:【here】
How Does Batch Normalization Help Optimization?
原文观点
15年那篇论文里提出BN对网络起的作用是,减少了中间协变量偏移的影响 Internal Covariate Shift(ICS)。神经网络每一层在更新了权重之后的输出的分布是变化的,因此中间协变量也会有变化,通过将线性映射之后的输出“白化”,即控制均值为0,和方差恒为1,可以有效的将每一层网络学习的输入控制在一个相同的分布下,因此更有利于网络的学习。
反驳论点
这篇论文首先对原文引出的概念提出了两点质疑
第一,BN层的成功真的在于减少了中间协变量偏移吗?
Does BatchNorm’s performance stem from controlling internal covariate shift?
作者这里为了证明BN层的成功不在于减少了ICS,设计了三组参照实验,第一组不加BN,第二组加BN,第三组加了BN层之后又加上一个随机白噪声,有着不同的均值和方差,作者旨在通过第三组实验,模拟加了BN层但是ICS更高的场景
这三组实验在VGG的网络上的表现如下
可以看到,加了BN层但是ICS更高的第三组实验比,标准实验(不加BN)取得更好的训练效果,中间变量均值偏移和方差偏移的可视化如下,可以看到:“噪声”网络比标准网络的ICS更高
因此,这组实验可以证明,BN层可以帮助网络的训练,但并不在于ICS的减少,即不在于每一层的分布保持一致
作者紧接着提出了第二个质疑,即BN层的添加是否有减少ICS呢?即有没有一个更广泛的中间协变量偏移的概念(而不是均值方差的偏移),来证明与BN层网络的关系
第二,BatchNorm真的能减少ICS吗
Is BatchNorm reducing internal covariate shift?
本文作者认为,参数更新会导致这个损失函数最小化问题本身改变,这和原论文的作者直觉一致,但原论文作者从结果的分布来捕捉这样的现象,这没有触及到问题的本质。如果要挖掘这样的优化问题的本质,应该从优化参数的梯度去入手,因此提出了一种新的方式定义ICS,即用更新前和更新后的每一层参数的梯度的二范数来表示偏移。因此,梯度变化可以代表在每一次参数更新后,在这一层的损失图上的一个跨越
大概类似于这样的损失图上,如果ICS很大,在每一层的optimize landsacpe上的位置跨越就很大,导致梯度的变化很大
而结果也是令人震惊,加了BN层的ICS反而更大了,如下图右边
在学习率很大的时候,梯度的变化都是震荡得比较剧烈的,在学习率比较小的时候,不加BN的标准网络的梯度变化非常小(体现在接近1的余弦角度和很小的l2距离)
(这里我的理解是,由于不加BN的优化landscape不够光滑,如果梯度变化过大会导致掉到局部最优或者是进入平坦区域)BN使优化landscape变光滑了,每一次调整的梯度变大,因此也很快收敛
BN为什么工作
作者给出直接的观点,加了BN重新调整了网络的训练参数,使优化的landscape变得光滑
由于没法进行全局的landscape的可视化,作者通过几个参数来代表优化landscape的光滑程度
损失函数的变化
梯度的变化
β平滑度
在VGG和DNN中加了BN都有改善
同时,作者还发现,BN不是唯一可以进行平滑optimization landscape的方式,再进行了不同正则化之后,网络的损失和梯度也能实现平滑
理论分析
作者还给出了BN为什么能实现平滑optimization landsacpe的公式推导
总结
很早期的标杆性论文,对理解BN层的作用很有帮助
相关文章:
【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?
前言:15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义 2015年Google团队论文:【here】 2018年MIT团队论文:【h…...
re.sub()用法的详细介绍
一、前言 在字符串数据处理的过程中,正则表达式是我们经常使用到的,python中使用的则是re模块。下面会通过实际案例介绍 re.sub() 的详细用法,该函数主要用于替换字符串中的匹配项。 二、函数原型 首先从源代码来看一下该函数原型…...
【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)
中文分词就是将一个汉字序列切分成一个一个单独的词。例如: 另外还有停用词的概念,停用词是指在数据处理时,需要过滤掉的某些字或词。 一、jieba库 安装过程见:https://blog.csdn.net/momomuabc/article/details/128198306 ji…...
Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR
我们知道,Meta为了给AR眼镜打造智能助手,专门开发了第一人称视觉模型和数据集。与此同时,该公司也在探索一种将视觉和语音融合的AI感知方案。相比于单纯的语音助手,同时结合视觉和声音数据来感知环境,可进一步增强智能…...
openlayers加载离线地图并实现深色地图
问题背景 我们自己一直使用的openlayergeoserver自己发布的地图,使用的是矢量地图。但是由于政府地图大都使用为天地图,所以需要将geoserver的矢量地图更改为天地图,并且依旧是搭配openlayers来使用。 解决步骤 一:加载离线地图&a…...
socket,tcp,http三者之间的区别和原理
目录 一、OSI模型也称七层网络模型 1、TCP/IP连接 1.1三次握手与四次挥手的简单理解:(面试重点) 1.2面试考题:如果已经建立了连接,但是客户端突然出现故障了怎么办? 1.3 socket、tcp、http三者之间有什…...
红日(vulnstack)1 内网渗透ATTCK实战
环境准备 靶机链接:百度网盘 请输入提取码 提取码:sx22 攻击机系统:kali linux 2022.03 网络配置: win7配置: kali配置: kali 192.168.1.108 192.168.111.129 桥接一块,自定义网卡4 win7 1…...
ik 分词器怎么调用缓存的词库
IK 分词器是一个基于 Java 实现的中文分词器,它支持在分词时调用缓存的词库。 要使用 IK 分词器调用缓存的词库,你需要完成以下步骤: 创建 IK 分词器实例 首先,你需要创建一个 IK 分词器的实例。可以通过以下代码创建一个 IK 分…...
ROS1/2机器人操作系统与时间Time的不解之缘
时间对于机器人操作系统非常重要。所有机器人类的编程中所涉及的变量如果需要在网络中传输都需要这个数据结构的时间戳。宏观上,ROS1、ROS2各版本都有官方支持的时间节点。ROS时钟--支持时间倒计时小工具效果如下:如果要部署机器人操作系统,R…...
华为OD机试真题2022(JAVA)
华为机试题库已换 →→→ 华为OD机试2023(JAVA) 以下题目为旧版题库,供大家课外消遣 基础题: 序号题目分值1查找众数及中位数1002出错的或电路1003连续字母长度1004分班1005计算面积1006最远足迹1007判断一组不等式是否满足约束…...
【3】MyBatis+Spring+SpringMVC+SSM整合一套通关
三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体…...
20道前端高频面试题(附答案)
ES6新特性 1.ES6引入来严格模式变量必须声明后在使用函数的参数不能有同名属性, 否则报错不能使用with语句 (说实话我基本没用过)不能对只读属性赋值, 否则报错不能使用前缀0表示八进制数,否则报错 (说实话我基本没用过)不能删除不可删除的数据, 否则报错不能删除变量delete p…...
android EditText设置后缀
有两种实现方案。 方案一:是自己写一个TextWatcher。 方案二:是重写TextView的getOffsetForPosition方法,返回一个计算好的offset。 我在工作时,使用的是方案一。在离职之后,我还是对这个问题耿耿于怀,所以…...
prometheus+cadvisor监控docker
官方解释 cAdvisor(ContainerAdvisor)为容器用户提供了对其运行容器的资源使用和性能特性的了解。它是一个正在运行的守护程序,用于收集、聚合、处理和导出有关正在运行的容器的信息。具体来说,它为每个容器保存资源隔离参数、历史…...
正演(1): 二维声波正演模拟程序(中心差分)Python实现
目录 1、原理: 1)二维声波波动方程: 编辑 2)收敛条件(不是很明白) 3)雷克子波 4)二维空间衰减函数 5)边界吸收条件 (不是很明白。。) 2、编程实现 1)参数设置&…...
珠海数据智能监控器+SaaS平台 轻松实现SMT生产管控
数据智能监控器 兼容市面上99%的SMT设备 直接读取设备生产数据与状态,如:计划产出、实际产出、累计产出、停机、节拍、线利用率、直通率、停产时间、工单状态、OEE…… 产品功能价值 ◎ OEE不达标报警,一手掌握生产效能 ◎ 首检/巡检/成…...
习题22对前面21节的归纳总结
笨方法学python --习题22 Vi---Rum 于 2021-01-12 14:16:10 发布 python 习题22 这节内容主要是归纳总结 ex1.py 第一次学习 1.print:打印 2.# :是注释的意思,井号右边的内容不再执行 3.end"":,在句子结尾加上这个就不会再换行…...
使用Vite快速构建前端React项目
一、Vite简介 Vite是一种面向现代浏览器的一个更轻、更快的前端构建工具,能够显著提升前端开发体验。除了Vite外,前端著名的构建工具还有Webpack和Gulp。目前,Vite已经发布了Vite3,Vite全新的插件架构、丝滑的开发体验,可以和Vue3完美结合。 相比Webpack和Gulp等构建工具…...
人工智能高等数学--人工智能需要的数学知识_微积分_线性代数_概率论_最优化---人工智能工作笔记0024
然后我们看一下人工智能中需要的数学知识 数学知识是重要的,对于理解人工智能底层原理来说很重要,但是工作中 工作中一般都不会涉及的自己写算法之类的,只是面试,或者理解底层原理的时候需要 然后看一下人工智能需要哪些数学知识 这里需要微积分 线性代数 概率论 最优化的知识…...
阿里大数据之路总结
一、数据采集 二、数据同步 2.1、数据同步方式: 数据同步的三种方式:直连方式、数据文件同步、数据库日志解析方式 关系型数据库的结构化数据:MYSQL、Oracle、DB2、SQL Server非关系型数据库的非结构化数据(数据库表形式存储&am…...
ABAP中Literals的用法(untyped literal vs. typed literal)
1. 什么是Literals ? Literals的字面意思即“文字”。其实,Literals就是在ABAP代码中直接指定的一个字符串,但注意哦,这个字符串并不意味着其类型一定是string哦。 要弄清这个概念,就要清楚ABAP对于Literals 的定义和处理方式。…...
tensorflow1.14.0安装教程
1首先电脑安装好Anaconda3(Anaconda介绍、安装及使用教程 - 知乎 (zhihu.com),) 蟒蛇 |全球最受欢迎的数据科学平台 (anaconda.com) 2打开Anaconda Prompt(本人更新win11后,主菜单不再显示,那么我们可以打…...
C++赋值运算符重载
赋值运算符重载 目录赋值运算符重载示例1:示例2:示例3:示例4:很巧妙的是,在编写这篇文章时(2023年2月27日),再加100天就是6月7日,恰好是今年高考的百日誓师! …...
网络性能总不好?专家帮你来“看看”— CANN 6.0 黑科技 | 网络调优专家AOE,性能效率双提升
随着深度学习模型复杂度和数据集规模的增大,计算效率的提升成为不可忽视的问题。然而,算法网络的多样性、输入数据的不确定性以及硬件之间的差异性,使得网络调优耗费巨大成本,即使是经验丰富的专家,也需要耗费数天的时…...
Qss自定义属性
QSS自定义属性 更多精彩内容👉个人内容分类汇总 👈👉QSS样式学习 👈文章目录QSS自定义属性[toc]前言一、实现效果二、使用方式1.QSS设置Q_PROPERTY属性样式2.QSS设置动态属性样式3.qproperty-<属性名称>语法14.qproperty-&…...
连接金蝶云星空,数据交互轻松搞定!丨三叠云
金蝶云星空 路径 拓展 >> 插件 功能简介 新增插件「金蝶云星空」。 用户可通过配置「金蝶云星空」插件,就可以实时获取「金蝶云星空」的数据,同时支持回填数据至金蝶系统内。 地图视图 路径 表单 >> 表单设计 功能简介 新增「地图视…...
JSX是什么,React为什么使用JSX,babel怎么转译JSX的
JSX是什么,React为什么使用JSX,babel怎么转译JSX的 在前端的框架中有两种“描述UI”的方案,一种是JSX语法,一种是模板语言。 其中React就是选择的JSX,Vue就是选择的模板语言。 JSX其实就是一个语法糖,在…...
从工地转行软件测试,拿下13k+年终奖是种什么体验?
最近,一则名为《我:毕业五年,存款5000。她:中传硕士,火锅店保洁》的视频走红网络,两位名校毕业生看似高开低走的就业经历,引起了很多人的共鸣。她们所传达的并不是所谓的躺平、摆烂,而是希望更多…...
前端面试题 —— 计算机网络(二)
目录 一、POST和PUT请求的区别 二、GET方法URL长度限制的原因 三、页面有多张图片,HTTP是怎样的加载表现? 四、HTTP2的头部压缩算法是怎样的? 五、说一下HTTP 3.0 六、HTTP协议的性能怎么样? 七、数字证书是什么?…...
山东大学机器学习期末2022
接力:山东大学机器学习期末2021 本来是不想写的,因为不想回忆起考试时啥也不会的伤痛,没想到最后给分老师海底捞,心情好了一些,还是一块写完 备考建议:多看ppt,多看ppt,多看ppt 山东…...
拼多多推广引流软件免费/云南seo简单整站优化
专注于Java领域优质技术号,欢迎关注作者:程序员小灰如何用程序实现大整数相乘呢?在上一篇文章 算法:如何实现大整数相乘?(上) 当中,我们介绍了两种思路:1.像列竖式一样&…...
网站建设公司 倒闭/百度指数怎么提升
如果在使用UIAlertView的过程中,莫名其妙的出现wait_fences: failed to receive reply: 10004003这个错误,那么十有八九是因为你忘记了关闭键盘。 UIAlertView一弹出,倘若键盘没有关闭,就失去了焦点,当UIAlertView关闭…...
深圳做微信网站制作/百度网盘怎么找片
①打开pcb文件,选择设计--层叠管理器 ②进入下图 然后选择左下角的Impedance,点击add增加阻抗计算 ③以单端50欧姆为例 选中阻抗会出现详细设置计算...
如何规避电子政务门户网站建设教训/如何做到精准客户推广
2019独角兽企业重金招聘Python工程师标准>>> 【中国公益在线广州讯 记者张强】10月19日,由中国.尚洋科技、法国.科诗美蒂卡主办,珠海尚妆生物科技有限公司承办,世界旅游辣妈大赛组委会、广东省色妆职业培训学院、南方日报社、广东…...
aps网站服务建设/如何创建一个app
本文主要介绍如何利用F1V3.0中的地图模块搭建一个GIS相关的应用(需要有地图作为背景数据)。...
校本教研网站建设方案/优化设计答案四年级上册语文
Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。一维数组很简单,跟Python列表的功能差不多 1 In [1]: import numpy as np2 3 In [2]: arr np.arange(10)4 5 In [3]: arr 6 Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, …...