2020-11-29 Bathch Normalization

今天主要想写一下DeepLearning 中BatchNorm,文章主要主要的大纲为:

  • BN 什么
  • 为什么提出BN
  • BN 的具体细节是什么
  • BN 的改进
  • BN数学表达式
  • BN的训练和预测
  • 总结

BN 是什么

BN 是Batch Normalization 的缩写,是近年来DN的重要成果。如果想说BN是什么必须要先提一下机器学习中重要的IID假设: IID 独立同分布假设,假设的具体含义为:训练数据和测试数据是满足了相同的分布,这样通过训练数据获得的模型在测试集才能获得很好的效果。BN 就是在深层神经网络中使得每一层的输入都保持相同的分布。

为什么提出BN

回答这个问题必须先要回答为什么对于深层神经网络难以训练?。在DL领域中有很多方法都是为了解决这个问题比如:更换激活函数、RestNet等等。
首先,先解释一下 Internal Covariate Shift 问题

Internal Covariate Shift

引用BN 作者说法,Mini-batch SGD 相比于 One Example SGD有两大有点:

  1. 可以更加把梯度计算的更加准确,这个从训练时反应就可以看出
  2. 可以使用并行计算,加快训练速度

但是 SGD 存在着一个问题,那就是其超参数很难调整。
是什么倒是原因导致了学习效率差呢?假设在ML系统中有一组输入数据<X,Y>,如果其输入X 的特征分组总是变化,这样就不满足开头说的IID假设了,这就会导致网络非常不稳定。在深度学习模型中,当有很多隐藏层时,各个隐藏测分布就会不断发生变化,这就是所谓的“Internal Covariate Shift"。Internal 就是针对隐藏层而言。

BN的提出

正是有Internal Covariate Shift 问题,能不能让每一层激活函数的输入分布固定下来呢?
其实在CV领域就给出了答案,在CV中为了使输入数据分布固定在均值为0 ,方差为1 的标准正态分布,就采用了所谓的白化(Whiten)操作。BN的灵感也就来源与此。
BN其实就神经网络中每一层都进行了白化操作,具体来说BN就是:对深层神经网络的每一个隐藏层在进行激活函数之前都把输入强制捞回到均值为0,方差为1 的正态分布。这样经过BN后每一层的输入都会保持了相同的分布。也就解决了Internal Covariate Shift 问题。

BN 的具体细节是什么

BN的操作非常直观,因为在深层网络在做非线性激活函数的输入,随着网络深度的加大,其分布逐渐发生便宜。DL训练慢,一般情况下其整体分布逐渐向非线性函数取值区间的上下域靠近。这样就导致了梯度消失(这才是DL收敛速度慢的根本原因)。

BN就是通过一定的规范化手段,把每层神经网络任意神经元输入值的强行拉回标准正态分布。在这里就需要详细的说明一下了。

进行BN的时机是什么时候?

正如前文所述,之所以要进行BN操作,是为了使得每个隐藏层中每个神经元都具有相同的分布,满足IID假设。所以我们在进行时机也就比较清楚了,就是在非线性变换之前。比如某个神经元计算公式为:y = f(WX+B) ,并非对X 进行BN操作,而是对WX+B 的结果进行BN,即:y = f(BN(WX+B))

BN操作后有什么实质作用

现在他们通过BN把激活函数的输入强制为均值为0 ,方差为1 的正态分布了。但是这样的操作会产生什么样的效果,有为什么会有这样的效果呢?
先回答第一个问题:如果我们把激活函数的输入强制为标准正态分布,直接解决了 Internal Covariate Shift 问题,还解决了深度神经网络的梯度消失问题,提高网络训练效率。
正所谓知其然还要知其所以然,为什么会有这样的效果呢?
我们先做这样的假设,假设网络中某个神经元采用的Sigmod激活函数,熟悉DL的同学都很清楚,Sigmod 函数和梯度的公式如下:
\begin{align} sigmod =f(x)&= \frac{1}{1+ e^{-x}} \\ sigmod' &= \frac{f(x)}{1-f(x)} \end{align}
Sigmod 和对应导数图形如下图:

Sigmod

Sigmod 导数

从上面图形可以观察到如下结论

  1. 从Sigmod 图形得到,Sigmod 取值范围为[0,1]
  2. Sigmod 导数图形得到,Sigmod 值在0.5时,导数取得最大值
  3. Sigmod 在两个端点时(0,1),对应导数值几乎为0
    也就是说对于Sigmod 函数,当X在[-2,2]之间学习效率是最好的,此时对应的梯度非常大。X有轻微的变化,就会存在很大的梯度

如果此时非线性函数输入分布为N(-6,1) 时,则95%的值会落在[-8,-4],这些值的梯度几乎为0,也就是说参数几乎不会发生变化,而如果我们把输入分布强制设置为N(0,1)时,此时95% 数值都会落在[-2,2]之间。此时梯度是很大的。
所以,经过BN操作之后,就避免了DL 中梯度消失问题,加快了收敛速度。

改进BN

通过上文我们知道了,经过BN后把大部分输入都落在激活函数的线性区域内,让他们具有了很大的梯度,提高了收敛速度。
但是,我们知道如果把所有输入都经过线性变换,不管网络有多深,其实仍然是一个线性模型。这样整个网络的表达能力就下降了。所以BN为了保持非线性表达特点,在BN操作后,做了Scale和Shift 操作。具体作为如下公式:
\hat{y} = \gamma \hat{x} + \beta
公式中:\hat{x} 表示经过BN操作后的结果,\gamma进行了简单变换而 \beta 则对结果进行了平移。参数\gamma,\beta都是需要学习的参数。

BN数学表达式

说了这么多,BN的数学表达式应该是什么样呢?其实这对学过概率论的同学都是非常简单的。BN其实就是一个归一化操作
\hat{x}^{(k)} = \frac{x^{(k)}-E[x^{(k)}]}{\sqrt{VAR(x^{(k)})}}
经过调整后的BN为:
\hat{y}^k = \gamma^k \hat{x} + \beta^k

BN的训练和预测

BN的训练过程还是比较清洗的

1. 计算每一个Batch 的均值和方差
2. 将每个一个输入(非线性的输入)x ,进行归一化运算
3. 对每个归一化的 x 进行调整

从训练的流程看,BN是需要计算当前批次数据的均值与方差,但是在预测阶段可能只有一个数值,如何计算均值与方差呢? 其实BN在预测阶段,是将训练时每个Mini-Batch的\gamma , \beta 记住,之后求他们最终的数学期望。

总结

  1. BN 解决 Internal Covariate Shift 问题
  2. BN 解决了梯度消失问题,加快了收敛速度
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容