Batch Normalization的细致理解
最近读论文遇见很多对BN的优化,例如MoCo当中的shuffling BN、Domain Generalization。连原来是什么东西都不知道,怎么看优化呢?
1.不就是归一化吗?其实并不是
可能大家觉得这个东西不就是一个归一化的过程吗?其实并不是这样的一个过程。
我们假定我们直接使用一个归一化,也就是我们本来天马行空的数据直接我们将其拉到均值为0方差为1,那么这样就出现一个问题:在BN层之后的模型必须是接收均值为0方差为1的模型,这可能不太符合普遍规律。
所以BN的作者在这上面加入了一个新的内容就是一个线性变换层。这样就能将本身均值在0方差在1的输出数据做一个适当地变换,让数据的限制不那么死板。所以取得了较好的效果。
大致的过程如下:
m = K.mean(X, axis=-1, keepdims=True)#计算均值
std = K.std(X, axis=-1, keepdims=True)#计算标准差
X_normed = (X - m) / (std + self.epsilon)#归一化
out = self.gamma * X_normed + self.beta#重构变换
说了这么多主要是让大家理解这个BN层最后的线性变换的作用。
2.测试的时候如何处理?
这时出现另外的一个问题,就是我们在训练的时候,数据是一个batch一个batch的通过网络,并且回传。这也就导致了BN(Batch Normalization)中的batch的来源,为什么是针对一个batch做标准化,其实是来自于这里。
这时候一个新的问题产生了,在我们训练的时候存在batch的概念,但是,当我们test(或者描述为evaluate)的时候并没有这个概念。只是一个数据一个数据的输入,并没有batch的概念。那么这个时候我们在向前传播的时候我们用什么做normalization呢?
所以作者就提出了一种解决方案,也就是使用所有batch的均值的平均值和所有batch方差的无偏估计。
分开理解一下:
这里的均值的平均值:其实就相当于全部数据的均值,也相当于每个batch均值的无偏估计。
这里的bacth的方差的无偏估计:其实只是全部batch的方差加和再除以(全部的batch数再减去1),这个是个概率问题。另外,需要注意的是这个batch的方差的无偏估计和全部数据的方差并不是一个东西。
3.还有什么影响?
3.1在BN层之前还有一个线性变换会怎样?
不难发现这个线性变化(x=wx+b)的+b被完全吞没了,因为你均值变回0,加不加b其实都完全一样。但是那个w还是有作用的。
那么这个b失效可怎么办?
其实BN层结束的线性变换,完全可以取代这里进行的变换。
Batch Normalization的细致理解相关推荐
- 『Batch Normalization』Batch Normalization一文吃透
Batch Normalization 协变量偏移 神经网络前向传播 引起的问题 Batch Normalization的登场 为什么存在 β \beta β和 γ \gamma γ? 预测时如何使用 ...
- 【文章阅读】BN(2015)理解Batch Normalization批标准化
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift Brief 该 ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
- Batch Normalization深入理解
Batch Normalization深入理解 1. BN的提出背景是什么? 统计学习中的一个很重要的假设就是输入的分布是相对稳定的.如果这个假设不满足,则模型的收敛会很慢,甚至无法收敛.所以,对于一 ...
- dropout+Batch Normalization理解
Dropout理解: 在没有dropout时,正向传播如下: 加入dropout后: 测试时,需要每个权值乘以P: Dropout官方源码: #dropout函数实现 def dropout(x, ...
- Batch Normalization的一些个人理解
简单说一说Batch Normalization的一些个人理解: 1.要说batch normalization不得不先说一下梯度消失和梯度爆炸问题 梯度消失一是容易出现在深层网络中,二是采用了不合适 ...
- 【深度学习】深入理解Batch Normalization批归一化
[深度学习]深入理解Batch Normalization批归一化 转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 这几天面试经常被问到BN层的 ...
- 【深度学习】简单理解Batch Normalization批标准化
资源 相关的Paper请看这两篇 Batch Normalization Accelerating Deep Network Training by Reducing Internal Covaria ...
- 关于Batch Normalization的理解和认识
1 前言 Batch Normalization作为最近几年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何 有志于学习DL的同学们朋友们都应该好好学一学BN.BN ...
最新文章
- Ios文件连接dlna服务器,iOS播放多种视频格式,实现DLNA|AirPlay投射盒子总结
- 如何汉化 OpenERP 6.1 日历视图
- 【WP8.1开发】RenderTargetBitmap类的特殊用途
- Command ***/bin/ git fetch --tags --progress denied
- java处理注释_Java注释处理器
- pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
- mysql 跨域_解决go echo后端处理跨域的两种操作方式
- 中国通用电阻器市场趋势报告、技术动态创新及市场预测
- linux printf 底层api,printf · Linux C API 参考手册 · 看云
- mysql 首次连接慢_mybatis+mysql,第一次数据库连接很慢怎么回事?
- python清空list_python怎么清空list
- 【Docker】使用介绍
- 科大讯飞与IBM组队人工智能蓝蓝CP
- 自抗扰控制中的扩张状态观测器收敛性分析1
- SAP ABAP 取物料号的采购订单文本内容
- 用计算机求正有理数算术平方根的步骤,用计算器求算数平方根、用有理数估计算数平方根的大小 (2).ppt...
- Sketch之初见BF
- 虚拟机VM中如何安装图形化界面?
- Python(IT峰)笔记05-数据类型详解:字符串、转义字符,字符串操作,字符串格式化,英文字符,字符串查找,字符串操作
- Anderson《空气动力学基础》5th读书笔记 第0记——白金汉PI定理