神经网络优化篇:详解测试时的 Batch Norm(Batch Norm at test time)
Batch归一化将的数据以mini-batch的形式逐一处理,但在测试时,可能需要对每个样本逐一处理,来看一下怎样调整的网络来做到这一点。
回想一下,在训练时,这些就是用来执行Batch归一化的等式。在一个mini-batch中,将mini-batch的\(z^{(i)}\)值求和,计算均值,所以这里只把一个mini-batch中的样本都加起来,用m来表示这个mini-batch中的样本数量,而不是整个训练集。然后计算方差,再算\(z_{\text{norm}}^{(i)}\),即用均值和标准差来调整,加上\(\varepsilon\)是为了数值稳定性。\(\tilde{z}\)是用\(\gamma\)和\(\beta\)再次调整\(z_{\text{norm}}\)得到的。
请注意用于调节计算的\(\mu\)和\(\sigma^{2}\)是在整个mini-batch上进行计算,但是在测试时,可能不能将一个mini-batch中的6428或2056个样本同时处理,因此需要用其它方式来得到\(\mu\)和\(\sigma^{2}\),而且如果只有一个样本,一个样本的均值和方差没有意义。那么实际上,为了将的神经网络运用于测试,就需要单独估算\(\mu\)和\(\sigma^{2}\),在典型的Batch归一化运用中,需要用一个指数加权平均来估算,这个平均数涵盖了所有mini-batch,接下来会具体解释。
选择\(l\)层,假设有mini-batch,\(X^{[1]}\),\(X^{[2]}\),\(X^{[3]}\)……以及对应的\(y\)值等等,那么在为\(l\)层训练\(X^{\{ 1\}}\)时,就得到了\(\mu^{[l]}\),还是把它写做第一个mini-batch和这一层的\(\mu\)吧,(\(\mu^{[l]} \rightarrow \mu^{\left\{1 \right\}[l]}\))。当训练第二个mini-batch,在这一层和这个mini-batch中,就会得到第二个\(\mu\)(\(\mu^{\{2\}[l]}\))值。然后在这一隐藏层的第三个mini-batch,得到了第三个\(\mu\)(\(\mu^{\left\{3 \right\}[l]}\))值。正如之前用的指数加权平均来计算\(\theta_{1}\),\(\theta_{2}\),\(\theta_{3}\)的均值,当时是试着计算当前气温的指数加权平均,会这样来追踪看到的这个均值向量的最新平均值,于是这个指数加权平均就成了对这一隐藏层的\(z\)均值的估值。同样的,可以用指数加权平均来追踪在这一层的第一个mini-batch中所见的\(\sigma^{2}\)的值,以及第二个mini-batch中所见的\(\sigma^{2}\)的值等等。因此在用不同的mini-batch训练神经网络的同时,能够得到所查看的每一层的\(\mu\)和\(\sigma^{2}\)的平均数的实时数值。
最后在测试时,对应这个等式(\(z_{\text{norm}}^{(i)} = \frac{z^{(i)} -\mu}{\sqrt{\sigma^{2} +\varepsilon}}\)),只需要用的\(z\)值来计算\(z_{\text{norm}}^{(i)}\),用\(\mu\)和\(\sigma^{2}\)的指数加权平均,用手头的最新数值来做调整,然后可以用左边刚算出来的\(z_{\text{norm}}\)和在神经网络训练过程中得到的\(\beta\)和\(\gamma\)参数来计算那个测试样本的\(\tilde{z}\)值。
总结一下就是,在训练时,\(\mu\)和\(\sigma^{2}\)是在整个mini-batch上计算出来的包含了像是64或28或其它一定数量的样本,但在测试时,可能需要逐一处理样本,方法是根据的训练集估算\(\mu\)和\(\sigma^{2}\),估算的方式有很多种,理论上可以在最终的网络中运行整个训练集来得到\(\mu\)和\(\sigma^{2}\),但在实际操作中,通常运用指数加权平均来追踪在训练过程中看到的\(\mu\)和\(\sigma^{2}\)的值。还可以用指数加权平均,有时也叫做流动平均来粗略估算\(\mu\)和\(\sigma^{2}\),然后在测试中使用\(\mu\)和\(\sigma^{2}\)的值来进行所需要的隐藏单元\(z\)值的调整。在实践中,不管用什么方式估算\(\mu\)和\(\sigma^{2}\),这套过程都是比较稳健的,因此不太会担心具体的操作方式,而且如果使用的是某种深度学习框架,通常会有默认的估算\(\mu\)和\(\sigma^{2}\)的方式,应该一样会起到比较好的效果。但在实践中,任何合理的估算的隐藏单元\(z\)值的均值和方差的方式,在测试中应该都会有效。
神经网络优化篇:详解测试时的 Batch Norm(Batch Norm at test time)的更多相关文章
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- setTimeout和setInterval定时器使用详解测试
var len=4; while(len--){ var time=setTimeout(function(){ console.log(len); },0); console.log(time); ...
- CentOS 7 下编译安装lnmp之nginx篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168 ...
- CentOS 7 下编译安装lnmp之PHP篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...
- CentOS 7 下编译安装lnmp之MySQL篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
- java提高篇-----详解java的四舍五入与保留位
转载:http://blog.csdn.net/chenssy/article/details/12719811 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么 ...
- 组件--Fragment(碎片)第二篇详解
感觉之前看的还是不清楚,重新再研究了一次 Fragment常用的三个类: android.app.Fragment 主要用于定义Fragment android.app.FragmentManager ...
随机推荐
- 2019年第十届蓝桥杯国赛C++A组
蓝桥杯历年国赛真题汇总:Here 最后编辑时间: 2021年5月27日 统一声明 如果不写默认带有常用头文件 如果不表明主函数默认表示在 void solve(){} 默认使用 using names ...
- 0x05 基本算法-排序
A题:Cinema 经典离散化例题,把电影的语言与字幕和观众懂的语言放进一个数组,然后离散化. 最后统计快乐人数. const int N = 200006; int n, m, a[N], x[N] ...
- 9、SpringBoot-mybatis-druid多源数据多源数据
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...
- 【驱动】SPI驱动分析(六)-RK SPI驱动分析
前言 Linux的spi接口驱动实现目录在kernel\drivers\spi下.这个目录和一些层次比较明显的驱动目录布局不同,全放在这个文件夹下,因此还是只好通过看Kconfig 和 Makefil ...
- Ribbon默认负载均衡规则替换为NacosRule
近期博主在参与一个 Spring Cloud 搭建,版本为 Hoxton.SR12,服务注册发现组件为 Nacos 的老项目时,发现项目负载均衡组件 Ribbon 的负载均衡规则在某些场景下不够完美, ...
- 扒一扒爱奇艺影视剧新功能——AI识别、GIF动画生成、画面截图涂鸦
AI 识别 点击画面中的 右侧出现 查看详情 GIF动画生成 点击画面中的 生成GIF动画 画面截图涂鸦 截图 涂鸦
- 07-逻辑仿真工具VCS-Post processing with VCD+ files
逻辑仿真工具-VCS 编译完成不会产生波形,仿真完成之后,生成波形文件,通过dve产看波形 vcd是波形文件的格式,但是所占的内存比较大,后面出现了vpd(VCD+)波形文件 将一些系统函数嵌入到源代 ...
- steam无法登陆/更新客户端
1.问题 最近CS2更新,正准备尝试游玩一下,发现提示要使用最新版本客户端,在检查steam客户端更新时,却发现检查更新失败,无法更新,有可能是丢失了某些文件导致的. (之前有过一次重新安装的经历,但 ...
- [转帖]nginx优化配置及方法论
https://www.jianshu.com/p/87f8c03e91bd 1.优化方法论 从软件层面提升硬件使用效率 增大CPU的利用率 增大内存的利用率 增大磁盘IO的利用率 增大网络带宽的利用 ...
- 人大金仓学习之一_kwr的简单学习
人大金仓学习之一_kwr的简单学习 摘要 周末在家想着学习一下数据库相关的内容. 网上找了不少资料, 想着直接在本地机器上面进行一下安装与验证 理论上linux上面应该更加简单. windows 上面 ...