Deep Learning学习笔记(四) 对Batch Normalization(批量归一化)的理解(下)

这篇博客主要是本人看李宏毅老师的深度学习视频笔记,老师主要是从为什么要进行批量归一化,怎么进行批量归一化,批量归一化究竟做了什么,使用批量归一化之后的网络该怎么训练,以及此举带来的好处等方面阐述!

另一篇博客是对Batch Normalization理论原理及python实现的详细介绍,建议两篇融合着看。

为什么要进行归一化?

loss对不同尺度参数的敏感度.png

如果输入的数据中尺度差异较大,则左图中w1的轻微改变即导致loss的较大变化,也就是说loss对于权重w1的依赖很大,而对于w2的依赖较小,loss对于各权重的变化如上图所示,这时训练网络要求我们在w1和w2方向设置不同的学习率以适应梯度的大小,这就导致了网络难以训练!而右图我们归一化了各输入数据的维度之后,很明显可以看到loss对于w1和w2的梯度都相同,这时不要求我们对每个权重设置不一样的学习率,有效的加速了网络的训练过程。

如何进行归一化?

普通归一化方法.png

普通的归一化操作如上图所示,对于输入的每一个特征维度计算均值和标准差,然后进行归一化处理。但是在深度网络(或者说神经网络的隐层)中该怎么做特征归一化呢?

深度网络的归一化.png

我们都知道对于神经网络而言,上一层网络的输出即是下一层网络的输入,所以我们可以对输入层和中间每一层网络的输出做归一化处理(一般网络的输出都是先进行BN处理,再通过激活函数)!

比如说我们的网络已经通过训练知道了自己存在的问题,并试图去修正,其会根据loss对于各参数的偏导来更新自己,但是正如我们前面所说,如果输入的特征尺度不一样,导致了loss对于特征尺度较大的参数的偏导也很大,而对于尺度较小的参数偏导数较小,因此在小数值参数更新到较好的范围时,大数值参数可能会出现“修正过头”的现象(或者说大数值参数更新到需要的范围时,小数值参数反而没有更新到理想范围),这时就需要Batch Normalization来对输入特征的各参数进行归一化处理,减小内部神经元分布的改变Internal Covariate Shift)!

在Batch Normalization出来之前的办法就是通过设置较小的learning rate来解决这种问题,但是这种方法会降低网络的训练效率!

Batch Normalization具体流程

但是这里我们需要考虑一个问题,每一层网络输入(上一层网络的输出)的统计特性是随着网络层数的不同而在变化的,因为每一层网络的参数是不一样的,所以我们不能简单的找到一个固定的mean和std去逐层网络的做Batch Normalization。

图片.png

Batch Normalization是对一个Batch做归一化来近似代替对整个训练数据的处理,因为随着训练次数的不同,w的值也是在改变的,导致了每一轮训练中每一层计算bn的均值和标准差都是在改变的,如果每次都是对整个训练集做Batch Normalization操作,计算消耗太大!既然如此,我们就要求Batch Normalization不能用于小批量的数据,因为这样就没有办法从一个Batch里去估计整个训练集的统计特性

BN的训练过程是需要进行反向传播的,因为计算得到的均值mean和标准差std都是随着输入z的变化而改变的,所以这里我们需要对两者都做反向传播以最终更新输入特征z(可以理解为Batch Normalization前向的一个反向过程),不能将均值和标准差想象为一个常量而不更新。

当然这里我们强制的将输入特征进行归一化处理后,也可以再通过网络去学习gamma和beta,将输入特征在缩放到适应网络需要的范围内。

批量归一化示意图.png
测试过程的Batch Normalization

BN的训练过程完成之后,在测试的时候就出现了一个问题,因为均值和标准差都是计算一个Batch中的输入特征得到的,而在测试的时候,并没有任何Batch,所以就不可能有均值mean和标准差std!一个理想的办法就是将训练时得到的均值mean和标准差std保存下来,在测试的时候使用!而随着训练的进行,测试时所需要的均值mean和标准差std是靠近训练过程最后或者说准确率很高的时候所对应的值,所以这时候我们采用滑动平均的方式保存训练数据,也即是给予准确率很高的数据以较大的权重,而训练过程中靠前的数据赋予的权重会很小!

Batch Normalization的优点

批量归一化的优点.png

Batch Normalization所带来的好处有:

  • 加速了训练进程,减少了达到同等要求的训练次数,使得训练深度网络的能力极大的加强;
    • 因为BN起到了减小内部神经元分布(internal covariate shift)的作用,所以我们可以使用较大的学习率;
    • 一定程度上降低了梯度爆炸或梯度消失的可能,因为我们将loss对于各参数的梯度都调整到一个相同的范围内,不会出现某一个参数的偏导数很小或很大的情况,从而导致梯度消失或爆炸;
  • 对于输入参数归一化的要求更低,即使我们将输入参数增大k倍,也会通过Batch Normalization操作将其归一化到原来的尺度范围内;
  • BN可以在一定程度上减轻overfitting的影响,也就起到了regularization的作用。如果噪声影响了某个参数,从而导致了均值和标准差的变化,网络也会通过Batch Normalization操作去极大的降低噪声的影响。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容