最近读论文遇见很多对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的细致理解相关推荐

  1. 『Batch Normalization』Batch Normalization一文吃透

    Batch Normalization 协变量偏移 神经网络前向传播 引起的问题 Batch Normalization的登场 为什么存在 β \beta β和 γ \gamma γ? 预测时如何使用 ...

  2. 【文章阅读】BN(2015)理解Batch Normalization批标准化

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

  3. 【深度学习】深入理解Batch Normalization批标准化

    这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...

  4. Batch Normalization深入理解

    Batch Normalization深入理解 1. BN的提出背景是什么? 统计学习中的一个很重要的假设就是输入的分布是相对稳定的.如果这个假设不满足,则模型的收敛会很慢,甚至无法收敛.所以,对于一 ...

  5. dropout+Batch Normalization理解

    Dropout理解: 在没有dropout时,正向传播如下: 加入dropout后: 测试时,需要每个权值乘以P:  Dropout官方源码: #dropout函数实现 def dropout(x, ...

  6. Batch Normalization的一些个人理解

    简单说一说Batch Normalization的一些个人理解: 1.要说batch normalization不得不先说一下梯度消失和梯度爆炸问题 梯度消失一是容易出现在深层网络中,二是采用了不合适 ...

  7. 【深度学习】深入理解Batch Normalization批归一化

    [深度学习]深入理解Batch Normalization批归一化 转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 这几天面试经常被问到BN层的 ...

  8. 【深度学习】简单理解Batch Normalization批标准化

    资源 相关的Paper请看这两篇 Batch Normalization Accelerating Deep Network Training by Reducing Internal Covaria ...

  9. 关于Batch Normalization的理解和认识

    1 前言 Batch Normalization作为最近几年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何 有志于学习DL的同学们朋友们都应该好好学一学BN.BN ...

最新文章

  1. Ios文件连接dlna服务器,iOS播放多种视频格式,实现DLNA|AirPlay投射盒子总结
  2. 如何汉化 OpenERP 6.1 日历视图
  3. 【WP8.1开发】RenderTargetBitmap类的特殊用途
  4. Command ***/bin/ git fetch --tags --progress denied
  5. java处理注释_Java注释处理器
  6. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
  7. mysql 跨域_解决go echo后端处理跨域的两种操作方式
  8. 中国通用电阻器市场趋势报告、技术动态创新及市场预测
  9. linux printf 底层api,printf · Linux C API 参考手册 · 看云
  10. mysql 首次连接慢_mybatis+mysql,第一次数据库连接很慢怎么回事?
  11. python清空list_python怎么清空list
  12. 【Docker】使用介绍
  13. 科大讯飞与IBM组队人工智能蓝蓝CP
  14. 自抗扰控制中的扩张状态观测器收敛性分析1
  15. SAP ABAP 取物料号的采购订单文本内容
  16. 用计算机求正有理数算术平方根的步骤,用计算器求算数平方根、用有理数估计算数平方根的大小 (2).ppt...
  17. Sketch之初见BF
  18. 虚拟机VM中如何安装图形化界面?
  19. Python(IT峰)笔记05-数据类型详解:字符串、转义字符,字符串操作,字符串格式化,英文字符,字符串查找,字符串操作
  20. Anderson《空气动力学基础》5th读书笔记 第0记——白金汉PI定理

热门文章

  1. vue学习笔记(三)
  2. javaCountDownLatch闭锁
  3. 在公司的局域网内,组长让你在自己的虚拟机部署项目,大家等着访问测试,该怎么办???...
  4. 存储知识:数据一致性、分级存储、分层存储与信息生命周期管理
  5. swift UI专项训练4 场景过渡-转场
  6. 性能测试知多少---系统架构分析
  7. 你真的明确知道它们的用法吗-从基础学起
  8. android中extends 和implements的区别
  9. 51Nod5105 子矩阵求和
  10. Leetcode290单词规律-map使用