0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

batch normalization時的一些缺陷

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 作者:Sahil Uppal ? 2020-11-03 17:27 ? 次閱讀

導(dǎo)讀

batch normalization時的一些缺陷。

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

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

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

什么是Batch Normalization

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

它如何工作

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

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

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

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

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

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

更快的收斂。

降低初始權(quán)重的重要性。

魯棒的超參數(shù)。

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

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

Batch Normalization的詛咒

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

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

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

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

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

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

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

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

ResNet-50 在ImageNet上使用 Titan X Pascal

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

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

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

對于在線學(xué)習(xí)不好

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

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

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

對于循環(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)用的,即每個RNN的輸出。但是它不能“水平地”應(yīng)用,例如在時間步之間,因?yàn)樗鼤驗(yàn)橹貜?fù)的重新縮放而產(chǎn)生爆炸性的梯度而傷害到訓(xùn)練。

[^注]: 一些研究實(shí)驗(yàn)表明,batch normalization使得神經(jīng)網(wǎng)絡(luò)容易出現(xiàn)對抗漏洞,但我們沒有放入這一點(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òu)很少,每個模型都有固定的學(xué)習(xí)速度,固定的優(yōu)化器和固定的技巧。這些技巧是通過自然選擇選擇的,就像有人想出了一些技巧,人們引入之后如果有效,就會保留,如果無效,人們最終會忘記,并沒有人再去使用它。除此之外,batch normalization是深度學(xué)習(xí)發(fā)展中的一個里程碑技術(shù)。然而,正如前面所討論的,沿著batch 維度進(jìn)行歸一化引入了一些問題,這表明歸一化技術(shù)仍有改進(jìn)的空間。

責(zé)任編輯:xj

原文標(biāo)題:【重點(diǎn)】Batch Normalization的詛咒

文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6772

    瀏覽量

    88655
  • Batch
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    7142
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5449

    瀏覽量

    120811

原文標(biāo)題:【重點(diǎn)】Batch Normalization的詛咒

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    LED驅(qū)動器應(yīng)用的一些指南和技巧

    電子發(fā)燒友網(wǎng)站提供《LED驅(qū)動器應(yīng)用的一些指南和技巧.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 11:35 ?0次下載
    LED驅(qū)動器應(yīng)用的<b class='flag-5'>一些</b>指南和技巧

    SMT錫膏加工中如何處理缺陷

    在SMT貼片加工中,會出現(xiàn)一些加工缺陷和不良,錫膏缺陷就是其中之,但可以通過一些方法來避免,那么我們應(yīng)該怎么做呢?以下是深圳佳金源錫膏廠家
    的頭像 發(fā)表于 09-03 16:03 ?188次閱讀
    SMT錫膏加工中如何處理<b class='flag-5'>缺陷</b>?

    【大規(guī)模語言模型:從理論到實(shí)踐】- 每日進(jìn)步點(diǎn)點(diǎn)

    據(jù)中微小變化的敏感度,從而提高模型的泛化能力。 二、常見的歸化方法 Batch Normalization(BatchNorm) 原理:在batch數(shù)據(jù)中對數(shù)據(jù)的
    發(fā)表于 05-31 19:54

    細(xì)談SolidWorks教育版的一些基礎(chǔ)知識

    SolidWorks教育版是款廣泛應(yīng)用于工程設(shè)計(jì)和教育領(lǐng)域的三維建模軟件。它具備直觀易用的操作界面和強(qiáng)大的設(shè)計(jì)功能,為學(xué)生提供了個學(xué)習(xí)和實(shí)踐的平臺。在本文中,我們將詳細(xì)探討SolidWorks教育版的一些基礎(chǔ)知識,幫助初學(xué)者
    的頭像 發(fā)表于 04-01 14:35 ?283次閱讀

    一些有關(guān)通信電路的資料?

    有關(guān)嵌入式之間DSP、ARM、FPGA三者之間和這三款芯片和外部電路之間通信的一些資料,比如說芯片之間的并行通信和芯片和外部電路之間的串行通信,MODBUS、DP、CAN等,一些一些常用的通信協(xié)議的
    發(fā)表于 03-03 18:53

    基于深度學(xué)習(xí)的芯片缺陷檢測梳理分析

    雖然表面缺陷檢測技術(shù)已經(jīng)不斷從學(xué)術(shù)研究走向成熟的工業(yè)應(yīng)用,但是依然有一些需要解決的問題?;谝陨戏治隹梢园l(fā)現(xiàn),由于芯片表面缺陷的獨(dú)特性質(zhì),通用目標(biāo)檢測算法不適合直接應(yīng)用于芯片表面缺陷
    發(fā)表于 02-25 14:30 ?1107次閱讀
    基于深度學(xué)習(xí)的芯片<b class='flag-5'>缺陷</b>檢測梳理分析

    一些無功補(bǔ)償裝置SVG的資料

    一些SVG電路原理和功能碼相關(guān)的技術(shù)說明書,想了解一些SVG的工作原理和工作過程
    發(fā)表于 02-03 10:13

    對于大模型RAG技術(shù)的一些思考

    大模型或者句向量在訓(xùn)練時,使用的語料都是較為通用的語料。這導(dǎo)致了這些模型,對于垂直領(lǐng)域的知識識別是有缺陷的。它們沒有辦法理解企業(yè)內(nèi)部的一些專用術(shù)語,縮寫所表示的具體含義。這樣極大地影響了生成向量的精準(zhǔn)度,以及大模型輸出的效果。
    的頭像 發(fā)表于 12-07 09:41 ?1032次閱讀
    對于大模型RAG技術(shù)的<b class='flag-5'>一些</b>思考

    提高嵌入式代碼質(zhì)量的一些方法

    的事情搞復(fù)雜,我希望這些文字能給迷惑中的人們指出一些正確的方向,讓他們少走一些彎路,基本做到一分耕耘一分收獲。
    的頭像 發(fā)表于 11-30 09:15 ?399次閱讀

    我們?yōu)槭裁葱枰私?b class='flag-5'>一些先進(jìn)封裝?

    我們?yōu)槭裁葱枰私?b class='flag-5'>一些先進(jìn)封裝?
    的頭像 發(fā)表于 11-23 16:32 ?522次閱讀
    我們?yōu)槭裁葱枰私?b class='flag-5'>一些</b>先進(jìn)封裝?

    西門子伺服驅(qū)動器維修的一些基本知識

    西門子伺服驅(qū)動器維修的一些基本知識
    的頭像 發(fā)表于 11-23 10:55 ?1594次閱讀

    分享一些SystemVerilog的coding guideline

    本文分享一些SystemVerilog的coding guideline。
    的頭像 發(fā)表于 11-22 09:17 ?644次閱讀
    分享<b class='flag-5'>一些</b>SystemVerilog的coding  guideline

    PCB抄板的一些方法

    拆掉所有器多層板抄板件,并且將PAD孔里的錫去掉。用酒精將PCB清洗干凈,然后放入掃描儀內(nèi),掃描儀掃描的時候需要稍調(diào)高一些掃描的像素, 以便得到較清晰的圖像。
    的頭像 發(fā)表于 11-15 17:04 ?837次閱讀
    PCB抄板的<b class='flag-5'>一些</b>方法

    STM32F10x中一些專業(yè)術(shù)語解釋

    STM32F10x中一些專業(yè)術(shù)語解釋
    的頭像 發(fā)表于 11-01 16:59 ?483次閱讀

    針對RF PCBA設(shè)計(jì)的一些建議

    射頻(RF)PCBA設(shè)計(jì)涉及系列復(fù)雜的考慮因素,包括天線設(shè)計(jì)、濾波器設(shè)計(jì)以及傳輸線(RF Trace)的優(yōu)化。這些因素對于無線通信和射頻應(yīng)用的性能至關(guān)重要。以下是針對RF PCBA設(shè)計(jì)的一些建議。
    的頭像 發(fā)表于 10-30 10:19 ?415次閱讀