自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Batch Normalization的詛咒

人工智能 深度學(xué)習(xí)
Batch Normalization是一種被廣泛采用的技術(shù),使訓(xùn)練更加快速和穩(wěn)定,已成為最有影響力的方法之一。然而,盡管它具有多種功能,但仍有一些地方阻礙了該方法的發(fā)展。

Batch Normalization確實(shí)是深度學(xué)習(xí)領(lǐng)域的重大突破之一,也是近年來研究人員討論的熱點(diǎn)之一。Batch Normalization是一種被廣泛采用的技術(shù),使訓(xùn)練更加快速和穩(wěn)定,已成為最有影響力的方法之一。然而,盡管它具有多種功能,但仍有一些地方阻礙了該方法的發(fā)展,正如我們將在本文中討論的那樣,這表明做歸一化的方法仍有改進(jìn)的余地。

[[349995]]

一、我們?yōu)槭裁匆肂atch Normalization?

在討論任何事情之前,首先,我們應(yīng)該知道Batch Normalization是什么,它是如何工作的,并討論它的用例。

1. 什么是Batch Normalization

在訓(xùn)練過程中,當(dāng)我們更新之前的權(quán)值時(shí),每個(gè)中間激活層的輸出分布會(huì)在每次迭代時(shí)發(fā)生變化。這種現(xiàn)象稱為內(nèi)部協(xié)變量移位(ICS)。所以很自然的一件事,如果我想防止這種情況發(fā)生,就是修正所有的分布。簡單地說,如果我的分布變動(dòng)了,我會(huì)限制住這個(gè)分布,不讓它移動(dòng),以幫助梯度優(yōu)化和防止梯度消失,這將幫助我的神經(jīng)網(wǎng)絡(luò)訓(xùn)練更快。因此減少這種內(nèi)部協(xié)變量位移是推動(dòng)batch normalization發(fā)展的關(guān)鍵原則。

2. 它如何工作

Batch Normalization通過在batch上減去經(jīng)驗(yàn)平均值除以經(jīng)驗(yàn)標(biāo)準(zhǔn)差來對(duì)前一個(gè)輸出層的輸出進(jìn)行歸一化。這將使數(shù)據(jù)看起來像高斯分布。

Batch Normalization的詛咒

其中μ和*σ^2^*分別為批均值和批方差。

Batch Normalization的詛咒

并且,我們學(xué)習(xí)了一個(gè)新的平均值和協(xié)方差γ和β。所以,簡而言之,你可以認(rèn)為batch normalization是幫助你控制batch分布的一階和二階動(dòng)量。

Batch Normalization的詛咒

vgg16網(wǎng)絡(luò)的中間卷積層的特征分布輸出。(左)沒有任何歸一化,(右)應(yīng)用了batch normalization

3. 優(yōu)點(diǎn)

我將列舉使用batch normalization的一些好處,但是我不會(huì)詳細(xì)介紹,因?yàn)橐呀?jīng)有很多文章討論了這個(gè)問題。

  • 更快的收斂。
  • 降低初始權(quán)重的重要性。
  • 魯棒的超參數(shù)。

需要較少的數(shù)據(jù)進(jìn)行泛化。

 

Batch Normalization的詛咒

 

 

1. 更快的收斂,2. 對(duì)超參數(shù)更魯棒

 

二、Batch Normalization的詛咒

好,讓我們回到本文的出發(fā)點(diǎn),在許多情況下batch normalization開始傷害性能或根本不起作用。

1. 在使用小batch size的時(shí)候不穩(wěn)定

如上所述,batch normalization必須計(jì)算平均值和方差,以便在batch中對(duì)之前的輸出進(jìn)行歸一化。如果batch大小比較大的話,這種統(tǒng)計(jì)估計(jì)是比較準(zhǔn)確的,而隨著batch大小的減少,估計(jì)的準(zhǔn)確性持續(xù)減小。

Batch Normalization的詛咒

ResNet-50在Batch Norm使用32、16、8、4、2張/GPU圖像時(shí)的驗(yàn)證錯(cuò)誤

以上是ResNet-50的驗(yàn)證錯(cuò)誤圖??梢酝茢?,如果batch大小保持為32,它的最終驗(yàn)證誤差在23左右,并且隨著batch大小的減小,誤差會(huì)繼續(xù)減小(batch大小不能為1,因?yàn)樗旧砭褪瞧骄?。損失有很大的不同(大約10%)。

如果batch大小是一個(gè)問題,為什么我們不使用更大的batch?我們不能在每種情況下都使用更大的batch。在finetune的時(shí)候,我們不能使用大的batch,以免過高的梯度對(duì)模型造成傷害。在分布式訓(xùn)練的時(shí)候,大的batch最終將作為一組小batch分布在各個(gè)實(shí)例中。

2. 導(dǎo)致訓(xùn)練時(shí)間的增加

NVIDIA和卡耐基梅隆大學(xué)進(jìn)行的實(shí)驗(yàn)結(jié)果表明,“盡管Batch Normalization不是計(jì)算密集型,而且收斂所需的總迭代次數(shù)也減少了。”但是每個(gè)迭代的時(shí)間顯著增加了,而且還隨著batch大小的增加而進(jìn)一步增加。

Batch Normalization的詛咒

ResNet-50 在ImageNet上使用 Titan X Pascal

你可以看到,batch normalization消耗了總訓(xùn)練時(shí)間的1/4。原因是batch normalization需要通過輸入數(shù)據(jù)進(jìn)行兩次迭代,一次用于計(jì)算batch統(tǒng)計(jì)信息,另一次用于歸一化輸出。

3. 訓(xùn)練和推理時(shí)不一樣的結(jié)果

例如,在真實(shí)世界中做“物體檢測(cè)”。在訓(xùn)練一個(gè)物體檢測(cè)器時(shí),我們通常使用大batch(YOLOv4和Faster-RCNN都是在默認(rèn)batch大小= 64的情況下訓(xùn)練的)。但在投入生產(chǎn)后,這些模型的工作并不像訓(xùn)練時(shí)那么好。這是因?yàn)樗鼈兘邮艿氖谴骲atch的訓(xùn)練,而在實(shí)時(shí)情況下,它們的batch大小等于1,因?yàn)樗仨氁粠瑤幚???紤]到這個(gè)限制,一些實(shí)現(xiàn)傾向于基于訓(xùn)練集上使用預(yù)先計(jì)算的平均值和方差。另一種可能是基于你的測(cè)試集分布計(jì)算平均值和方差值。

4. 對(duì)于在線學(xué)習(xí)不好

與batch學(xué)習(xí)相比,在線學(xué)習(xí)是一種學(xué)習(xí)技術(shù),在這種技術(shù)中,系統(tǒng)通過依次向其提供數(shù)據(jù)實(shí)例來逐步接受訓(xùn)練,可以是單獨(dú)的,也可以是通過稱為mini-batch的小組進(jìn)行。每個(gè)學(xué)習(xí)步驟都是快速和便宜的,所以系統(tǒng)可以在新的數(shù)據(jù)到達(dá)時(shí)實(shí)時(shí)學(xué)習(xí)。

Batch Normalization的詛咒

典型的在線學(xué)習(xí)pipeline

由于它依賴于外部數(shù)據(jù)源,數(shù)據(jù)可能單獨(dú)或批量到達(dá)。由于每次迭代中batch大小的變化,對(duì)輸入數(shù)據(jù)的尺度和偏移的泛化能力不好,最終影響了性能。

5. 對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)不好

雖然batch normalization可以顯著提高卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和泛化速度,但它們很難應(yīng)用于遞歸結(jié)構(gòu)。batch normalization可以應(yīng)用于RNN堆棧之間,其中歸一化是“垂直”應(yīng)用的,即每個(gè)RNN的輸出。但是它不能“水平地”應(yīng)用,例如在時(shí)間步之間,因?yàn)樗鼤?huì)因?yàn)橹貜?fù)的重新縮放而產(chǎn)生爆炸性的梯度而傷害到訓(xùn)練。

[^注]: 一些研究實(shí)驗(yàn)表明,batch normalization使得神經(jīng)網(wǎng)絡(luò)容易出現(xiàn)對(duì)抗漏洞,但我們沒有放入這一點(diǎn),因?yàn)槿狈ρ芯亢妥C據(jù)。

可替換的方法

這就是使用batch normalization的一些缺點(diǎn)。在batch normalization無法很好工作的情況下,有幾種替代方法。

  • Layer Normalization
  • Instance Normalization
  • Group Normalization (+ weight standardization)
  • Synchronous Batch Normalization

總結(jié)

所以,看起來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)很簡單,但我不認(rèn)為它很容易。從這個(gè)意義上說,我可以選擇的架構(gòu)很少,每個(gè)模型都有固定的學(xué)習(xí)速度,固定的優(yōu)化器和固定的技巧。這些技巧是通過自然選擇選擇的,就像有人想出了一些技巧,人們引入之后如果有效,就會(huì)保留,如果無效,人們最終會(huì)忘記,并沒有人再去使用它。除此之外,batch normalization是深度學(xué)習(xí)發(fā)展中的一個(gè)里程碑技術(shù)。然而,正如前面所討論的,沿著batch 維度進(jìn)行歸一化引入了一些問題,這表明歸一化技術(shù)仍有改進(jìn)的空間。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2019-06-19 09:13:29

機(jī)器學(xué)習(xí)中數(shù)據(jù)集深度學(xué)習(xí)

2011-03-03 11:21:52

PHPPythonJavaScript

2011-06-01 14:29:29

編程語言

2010-12-30 12:15:47

wifiWi-Fi無線網(wǎng)絡(luò)

2011-05-10 10:07:53

Windows

2013-12-04 09:52:27

程序員漫畫

2021-05-31 09:41:17

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2012-09-29 11:38:27

編程工具文本編輯器編程

2010-07-27 14:52:37

Batch Telne

2018-05-17 22:32:29

AWS BatchCLI代碼

2025-04-29 08:00:36

2025-02-12 13:42:25

2009-06-18 15:40:07

Spring Batc

2010-07-26 14:46:08

batch Telne

2010-07-22 12:15:59

Batch Telne

2009-07-24 16:42:46

iBatis框架做ba

2010-07-16 10:31:02

Batch Telne

2010-07-17 00:50:12

batch Telne

2009-07-22 16:43:22

iBATIS框架iBATIS優(yōu)化

2023-11-18 09:40:58

數(shù)據(jù)模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)