论文阅读|How Does Batch Normalization Help Optimization

探讨BatchNormalization加速训练及减少学习率敏感度的原理,分析MIT研究对原论文解释的推翻,揭示BatchNorm如何优化损失函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎直接到我的博客查看最近文章:www.pkudodo.com。更新会比较快,评论回复我也能比较快看见,排版也会更好一点。

原始blog链接:  http://www.pkudodo.com/2019/05/23/1-11/

 

前言

Batch Normalization在2015年被谷歌提出,因为能够加速训练及减少学习率的敏感度而被广泛使用。

但论文中对Batch Norm工作原理的解释在2018年被MIT的研究人员推翻,虽然这篇论文在2018年就已经提出了,但是我相信还有很多人和我一样,在网上看相关博客及paper时,大部分内容还是论文提出前写下的。

现在DL逐渐变成了实验科学,一般在发现性能上的提升后去分析其产生的原因,但这片论文的思想很好,从数据、公式等一系列角度去推理,分析出来了为什么batch Normalization能work。

论文地址:https://arxiv.org/pdf/1805.11604.pdf

 

batch Normalization的提出

抛开Norm,我们在做特征工程时,经常会将输入进行归一化,否则如果某个特征数特别大(比如说一个特征是0-1,一个特征是0-1000),那第二个特征很有可能会对整个模型参数造成很大的影响。或者说,当训练集数据的分布不一致时,例如前一个输入的各特征范围是0-1,后一个是0-100,网络的训练效果也不会很好。

所以,就像很多人说的一样,我们希望在deep learn中,整个网络中流过的数据都是独立同分布的。

 

为什么需要独立同分布?

我觉得这事可以从两方面去解释,

一方面我们希望对训练集进行训练后,在测试集上能够发挥很好的性能。那么我们就需要保证训练集和测试集是来自同一个空间,准确来说,是符合同一分布,这对同分布提出了要求。此外,在虽然数据来自同一个空间,但我们并不希望所有数据都聚集在空间中的某一小撮,而是希望所有数据对于整个空间来说都具有一定代表性,因此在采样的过程中我们希望是独立得去采样所有的数据。

另一方面,其实是从另一个角度来阐述上一段话,如果数据之间不是同分布的,比如说样本1所有的特征都处于0-1之间,样本2处于10-100,那么网络的参数其实很难去同时迎合两类分布的数据。

 

batch Normalization做了什么?

上面讲到了数据在最初进来的时候,都希望是独立同分布的。但是batch Normalization的作者觉得不够,应该在deep learning中的每层都进行一次处理,保证在每层都是同分布。

他是这么想的:假设网络有n层,网络正在训练,还没有收敛。这时候x1被输入,经过了第一层,但是第一层还没有学到正确的weight,所以经过weight的矩阵乘法后,第二层的数会不会很乱?会不会第二层有些节点值是个位数,有些节点值蹦到好几百?细想一下,确实挺有可能啊,内部的参数都是随机初始化的,那蹦啥结果确实不好说啊。然后恐怖的事情来了,第二层这些乱蹦的数,又输到了第三层,那第三层的输入就是乱蹦的数,输出当然好不了,以此类推。

所以主要产生了两个问题:

1.所以在前面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值