深度學習論文翻譯解析(二十一):High-Performance Large-Scale Image Recognition Without Normalization

論文標題:High-Performance Large-Scale Image Recognition Without Normalization

論文作者:Andrew Brock Soham De  Samuel L.Smith  Karen Simonyan

論文地址:https://arxiv.org/abs/2102.06171

論文中模型的實現地址:https://github.com/deepmind/deepmind-research/tree/master/nfnets

聲明:小編翻譯論文僅爲學習,如有侵權請聯繫小編刪除博文,謝謝!           

  小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

如果需要小編其他論文翻譯,請移步小編的GitHub地址

  傳送門:請點擊我

  如果點擊有誤:https://github.com/LeBron-Jian/DeepLearningNote

   其實很久沒有發翻譯深度學習論文的博客了,一方面是工作中一些事情太忙,另一方面也是自己看英文文獻的水平提高了,但是最近得空將自己之前的翻譯的放出來,這就是我們常使用的一個backbone論文,我今天將自己博客裏面的文章好好看了一遍,發現這個已經寫好了,但是沒有發佈,它就是Normalizer-Free ResNets家族,簡稱NFNets(是不使用BatchNorm的大尺度圖像分類網絡)。也是得空將此整理好發出來。

  衆所周知,Batch Norm 作爲深度學習的常用優化方法之一,幾乎被應用於所有的模型中,但是Batch Norm也存在一些問題:

  • 1,它帶來昂貴的計算代價,增加內存開銷,並顯著增加了計算梯度所需要的時間(前向傳播和反向傳播都需要額外的計算,並且需要暫存中間值)
  • 2,它帶來模型訓練和推理時的差異,引入需要微調的超參數(訓練時不同batch獨立計算,推理時使用訓練時的滑動平均)
  • 3,它打破了訓練樣本不同 minibatch 之間的獨立性(使用多塊GPU計算時,每塊GPU處理不同的 minibatch,前向傳播時獨立計算 Batch Norm,但反向傳播時需要交互)

  作者提出了一種自適應梯度裁剪(Adaptive Gradient Clipping, AGC)策略,通過應用該策略,模型即使不使用Batch Norm也取得最好的性能。  

  梯度裁剪是指限制梯度的範數值,通常的梯度裁剪表示如下:

 

   作者提出的自適應梯度裁剪,不是限制梯度的範數值,而是限制參數的梯度和參數值的範數值之比:

 

 

 摘要

  BN層是大多數分類模型的關鍵成分,但是因爲其依賴於batch的大小以及在樣本間引入相關性,也存在許多不受歡迎的特點,雖然近期也有一些work 成功不使用BN訓練了較深的ResNet,但是這些模型的測試準確率通常無法與最佳的BN網絡的結果相比較,並且對於較大的學習率和較強的數據增強不穩定。在本文中作者提出了一種AGC技術來克服這些問題,並且設計了一類效果顯著的網絡 NFNets,在ImageNet上,較小的模型測試結果可以與 EfficientNet-B7相當,訓練時間則加快了8.7倍,而最大的模型取得了 86.5%的SOTA指標。並且,在300 million 數據集上預訓練後在 ImageNet 微調,NFNets 相比於BN網絡取得了更加優異的表現,Top1 準確率達到了 89.2%。

  圖1:ImageNet驗證準確性與訓練延遲。所有數字都是單一型號、單一裁剪。我們的NFNet-F1模型實現了與EffNet-B7相當的精度,同時訓練速度快8.7倍。我們的NFNet-F5模型具有與EffNet-B7類似的訓練延遲,但在ImageNet上實現了最先進的86.0%的top-I準確率。我們使用Sharpness Aware Minimization(Foret et al.,2021)對此進行了進一步改進,以實現86.5%的top-I準確率。

 1,簡介

  最近計算機視覺中的絕大多數模型都是深度殘差網絡的變體(He et al.,2016b;a),使用批量歸一化進行訓練(Ioffe&Szegedy,2015)。這兩種架構創新的結合使從業者能夠訓練更深入的網絡,從而在訓練集和測試集上實現更高的準確性。批量歸一化還平滑了損失的landscape(Santurkar等人,2018),這使得能夠以更大的學習率和更大的批量進行穩定的訓練(Bjorck等人,2018;De&Smith,2020),並且它可以具有正則化效果(Hoffer等人,2017;Luo等人,2018年)。

  簡單說,就是computer vision中絕大多數模型是使用BN的深度殘差網絡,兩個架構的結合可以使研究人員可以訓練更深的網絡,並且在訓練集和測試集上取得更高的準確率。BN也平滑了損失函數,使模型在更大的學習率和batch size下可以穩定訓練。此外也可以起到正則化的效果。

   但是Batch Normalization也有以下三個問題:1,額外的計算開銷:額外佔用內存,影響某些網絡的梯度計算時間;2,在訓練和推理時引入了一些偏差,引入一些隱藏的超參使得我們不得不微調;3,也是most important,打破了訓練樣本間的獨立性(BN的期望和方差都基於每個batch內的數據計算,不可避免的引入樣本間的相關性)。

  其中第三點有一系列的nagetive的後果,比如,BN網絡在不同的硬件上難以精確復現,進一步的,分佈式訓練存在細微誤差,不適用於某些網絡和任務。因爲訓練的一些例子在BN中可能會使得網絡欺騙損失函數。比如,在一些對比學習算法中BN層需要一些特殊的關心去阻止信息泄露,這主要的關心是指序列模型任務中,同時驅動一些大的模型去適應可選的正則化。BN網絡的表現也可以使降級,如果批量數據在訓練時有大量的變量的時候,最後,BN的表現是對於batch size是相當敏感的,並且當Batch size很小時,BN網絡表現不充分,而batch size 也限制模型在有限的硬件上的最大size。

 

   爲此,雖然BN已經使深度學習社區取得了實質性進展,但是我們如果從長遠來看,它可能會impede進展。我們相信社區應該尋找一種簡單的替代方案,它可以實現具有競爭力的測試精度,並且可以用於廣泛的任務。儘管有一系列可替代的方案被提出,但這些替代品經常在測試集有交叉的精度,並且會引入他們本身的缺陷,比如額外的計算成本。幸運的是,近些年來出現了兩個有希望的研究主題。第一項研究了訓練期間批量歸一化的好處,第二個試圖在沒有歸一化層的情況下訓練深度ResNet以達到具有競爭力的精度。

   這些工作的一個關鍵主題是,通過抑制殘差分支上隱含激活層的規模,可以在沒有歸一化的情況下訓練非常深的ResNet。實現這一點的最簡單的方式是在每一個殘差分支的最後引入一個科學系的歸一化因子,但僅靠這一點難以取得令人滿意的測試精度。此外有工作表明ReLU 激活函數引入了均值漂移,導致隨着網絡深度加深,不同訓練樣本的隱含激活層逐漸相關。最近也有工作提出了“Normalizer-Free" ResNets,在初始化時抑制殘差分支並使用 Scaled Weight Standardization 去除均值漂移。輔以額外的正則化方法,這些非歸一化網絡在ImageNet上可以取得和BN ResNets 相媲美的表現,但是在大batch size下不穩定且效果不如EfficientNets。本文的貢獻如下:

  1,提出了自適應梯度裁剪技術(AGC ),根據梯度範數與參數在單元尺度上的比例裁剪梯度,並論證AGC允許訓練更大 batchsize和更強 數據增強的NFNets

  2,設計了一系列 Normalizer-Free ResNets,稱之爲 NFNets,在ImageNet上取得了SOTA的指標,NFNet-F1的準確率和EfficientNet-B7相近,訓練時間快 8.7倍,且最大的NFNet在使用額外數據預訓練的前提下獲得了 86.5%的SOTA指標

  3,當使用3億帶標註數據預訓練的前提下,NFNets比BN網絡在ImageNet上取得了更高的驗證集準確率。在微調後,最佳模型取得了 89.2%的Top1的準確率。

 

 2,理解 Batch Normalization

  爲了在沒有Batch Normalization的情況下訓練網絡可以達到有競爭性的精度,我們必須理解Batch Bormalization在訓練期間帶來的好處,並且確定要恢復這些benefit的替代策略,在這裏我們列出了先前工作確定的四個主要好處。

  1,BN減小了殘差分支的規模,跳躍連接和BN是研究人員得以訓練更深的網絡。這主要得益於BN置於殘差分支時減小了其隱含激活層的規模,使得信號偏向skip path 直接傳輸,有助於訓練超深的網絡。

  2,BN消除了 mean-shift:激活函數是非對稱且均值非零的,使得訓練初期激活後的特徵值會變大且均爲正數,batch normalization恰好可以消除這一問題。

  3,BN起到一定的正則化效應:由於batch normalization 訓練時用的是 minibatch 統計信息,相當於爲當前 batch 引入了噪聲,起到正則化的作用,可以防止過擬合,提高準確率。

  4,BN允許高效的大Batch訓練:batch normalization 能夠平滑loss曲線,可以使用更大的學習率和 batch size 進行訓練。

  這裏再結合自己對Batch Normalization 的理解做一些筆記:

  衆所周知,BN是由谷歌提出的一種訓練優化方法。BatchNorm就是深度神經網絡訓練過程中使得每一層神經網絡的輸入保持相同分佈的。因爲在訓練模型的過程中,如果深度學習包含很多隱層的網絡結構,那麼各層參數都在變,所以每個隱層都會面臨covariate shift 問題(即隱層的輸入分佈老是變來變去,這就是所謂的”Internal Convariate Shift")

  Normalization 就是數據標準化(歸一化,規範化),Batch就是批量,結合起來就是批量標準化,Batch在CNN中就是訓練網絡中所設定的圖片數量 batch size。Normalization 的過程,引用其論文的解釋就是:

 

   我們知道,在正向傳播的時候,通過可學習的 gamma 和 bate 參數可以求出新的分佈值,而在反向傳播的時候,通過鏈式求導方式,可以求出 gamma 和 beta 以及相關權重。

  網絡訓練中以 batch size 爲最小單元不斷迭代,很顯然,新的batch size進入網絡,由於每一次的 batch 有差異,實際是通過變量,以及滑動平均來記錄均值與方差。訓練完成後,推斷階段時通過 gamma,beta以及記錄的均值與方差計算BN層輸出。結合論文中給出的使用過程進行解釋:

 

   BN自從提出後,因爲小改起來特別方便,很快就作爲深度學習的標準工具應用在各種場合,BN雖然好,但是也存在一些侷限和問題,比如當Batch size太小時效果不佳,對於RNN等動態網絡無法有效應用BN等。

GELU的學習

  GELU 激活函數是使用在Google AI's BERT 和 OpenAI's GPT模型,這些模型的結果在各種各樣的NLP任務中都達到了 SOTA的結果。

  GELU的使用技巧:當訓練過程中使用gelu作爲激活函數進行訓練的時候,建議使用一個帶有動量(momentum)的優化器

  GELU激活函數公式如下:

 

   x是輸入值,而X是具有零均值和單位方差的高斯隨機變量。 P(X<=x) 是X小於或等於給定值x的概率。

 3,走向移除Batch Normalization

  許多作者試圖在不進行歸一化的情況下,通過恢復上述批量歸一化的一個或多個好處,將深度ResNets訓練到具有競爭力的精度。這些工作中的大多數通過引入小常數或可學習標量來抑制初始化時殘差分支上的活動規模(Hanin&Rol-nick,2018;張等人,2019a;De Smith,2020;Shao等人,2020)。此外,張等人(2019a)和De Smith(2020)觀察到,非正規化ResNets的性能可以通過額外的正規化來提高。然而,僅恢復批量歸一化的這兩個好處不足以在具有挑戰性的基準上實現有競爭力的測試精度(De&Smith,2020)。

  在這項工作中,我們採用並建立在“無歸一化ResNets”(NF ResNets)(Brock et al.,2021)的基礎上,這是一類預激活ResNets(He et al.,2016a),可以在沒有歸一化層的情況下進行競爭性訓練和測試準確性。NF ResNets使用以下形式的殘差塊hi+1=h+f(h;/B;),其中h表示的輸入殘差塊,f表示由第i個殘差分支計算的函數。函數f;被參數化爲在初始化時保持方差,使得所有i的Var(f(z)=Var(z)。標量o指定在每個殘差塊(在初始化時)之後激活的方差增加的速率,並且通常被設置爲一個小值,如a=0.2。標量3是通過預測it殘差塊3的輸入的標準偏差來確定的,其中Var(h+1)=Var(h,)+2,除了轉換塊(發生空間下采樣),其中跳躍路徑對縮小的輸入(h,/B,)進行操作,並且在轉換塊之後將預期方差重置爲h+1=1+a2。擠壓激發層的輸出(Hu等人,2018)乘以2。根據經驗,Brock等人(2021)發現,在結束時將可學習標量初始化爲零也是有益的每個剩餘分支('SkipInit'(De Smith,2020))。

  此外,Brock等人(2021)通過引入標度權重標準化(對權重標準化的一個小修改(Huang et al.,2017;Qiao et al.,2019)),防止了隱藏激活的平均偏移的出現。該技術將卷積層重新參數化爲:

   其中u,=(1/N)∑,Wio=(1/N)∑(Wg-)和N表示扇入。激活函數還通過非線性特定標量增益y進行縮放,這確保了y縮放的激活函數和縮放權重標準化層的組合是保方差的。對於ReLU,y=/2/(1-(1/)(Arpit等人,2016)。我們請讀者參考Brock等人(2021)瞭解如何計算其他非線性的y。

  通過額外的正則化(Dropout(Srivastava et al.,2014)和隨機深度(Huang et al.,2016)),Normalizer Free ResNets與ImageNet上批量規格化預激活ResNets以1024的批量大小實現的測試精度相匹配。當批處理大小很小時,它們也顯著優於批處理規範化的同類產品,但對於大批處理大小(4096或更高),它們的性能不如批處理規範的網絡。至關重要的是,它們與EfficientNets等最先進網絡的性能不匹配(Tan&Le,2019;Gong等人,2020)。

 

  這篇論文的研究基於作者之前的 Normalizer-Free ResNets(NF-ResNets)進行拓展,NF-ResNets在去掉 normalization層後依然可以有相當不錯的訓練和測試準確率。NF-ResNets的核心是採用 residual block。

  此外,NF-ResNet的另一個核心是 Scaled Weight Standardization,用於解決激活層帶來的 mean-shift現象,對於卷積層做了如下權值重新初始化。

 

4,AGC(自適應梯度裁剪模塊)

  梯度裁剪技術常用於語言模型來穩定訓練,最近的研究表明,與梯度下降相比,它允許以更大的學習率進行訓練從而加速收斂。這對於條件較差的損失或大批量訓練尤爲重要,因爲在這些設置中,最佳學習率往往會受到最大學習率的限制。因此作者假定梯度裁剪有利於NFNet的大批尺度訓練。梯度裁剪往往是對梯度的範數進行約束來實現的,對於梯度向量 G=∂ L / ∂ θ 而言,L表示損失值, θ 表示模型所有參數向量,標準的裁剪算法會在更新 θ 之前以如下的公式裁剪梯度:

  上式的 λ 是必須調整的超參數,根據經驗,作者發現雖然這個裁剪算法能夠以比以前更高的批尺度進行訓練,但訓練穩定性對裁剪閾值 λ的選擇極爲敏感,在改變模型深度,批尺度或學習率時都需要精調閾值。

  爲了解決這個問題作者引入了自適應梯度裁剪算法 AGC,下面詳細闡述這個算法,記 W€ R 爲第 l 層的權重矩陣, G €  R爲對應於 W 的梯度矩陣, ||*||F 表示F範數,即有:

   AGC算法的動機源於觀察到梯度與權重的範數比,這其實是一個單次梯度下降對原始權重影響的簡單度量。舉個例子,如果使用無動量的梯度下降算法,有:

   那麼第 l 層的參數更新公式爲:

   其中 h 表示學習率。

  直觀上我們認爲如果 ||ΔW|| / || W|| 很大,那麼訓練就會變得不穩定,這就啓發了一種基於 ||G|| F /  ||W||F 的梯度裁剪策略,然而實際上,逐單元的梯度範數和參數範圍比會比逐層的效果好,因此定義第 l 層上第 i 個單元的梯度矩陣 Gi(表示G的第i行)的裁剪公式如下,其中 λ 是一個標量超參數,定義 ||Wi||F = max(||Wi||F),這避免 0 初始化參數總是裁剪爲 0,對於卷積濾波器中的參數,我們在扇入範圍(包括通道和空間維度)上評估逐單元範數。

   使用上述的 AGC 模塊,NFNet 能夠以高達 4096 的批尺寸訓練同時使用 RandAugment 這樣的數據增強策略,不適用 AGC 模塊,NFNet 是無法這樣訓練的。注意,最優裁剪參數 λ 可能取決於優化器的選擇,學習率和批大尺寸。經驗上,batch size越大,λ 就應該越小。

 

   上圖是論文針對AGC做的兩個消融實驗,左圖a表示實驗BN的 ResNet以及使用和不使用AGC的NFNet之間的對比,實驗表面AGC使得NFNet有着媲美BN網絡的效果,而且批尺寸越小,AGC收益越低。右圖b則表示不同批尺寸不同 λ 選擇的效果,結果表面,當批尺寸較大的時候,應該選擇較小的 λ 以穩定訓練。

 

 

 

 

4.1. 用於自適應梯度削波(AGC)的消融

  我們現在介紹了一系列旨在測試AGC效果的消融。我們在ImageNet上對預激活的NF-ResNet-50和NF-ResNet-200進行了實驗,使用具有Nesterov動量的SGD在256到4096的批量範圍內訓練了90個epoch。如Goyal等人(2017)所述,我們對批量大小256使用0.1的基本學習率,其與批量大小線性縮放。我們考慮一系列入 值[0.01,0.02,0.04,0.08,0.16]。

   在圖2(a)中,我們將批量歸一化的ResNets與具有和不具有AGC的NF ResNets進行了比較。我們顯示了每個批次大小在最佳剪切閾值A下的測試準確性。我們發現AGC有助於將NF ResNets擴展到大批量,同時在ResNet50和ResNet200上保持與批量歸一化網絡相當或更好的性能。正如預期的那樣,當批量較小時,使用AGC的好處較小。在圖2(b)中,我們展示了性能

  對於不同的剪裁閾值入 在ResNet50上的一系列批量大小中。我們看到,較小(更強)的剪裁閾值對於較高批量的穩定性是必要的。我們在附錄D中提供了更多消融細節。

  接下來,我們研究AGC是否對所有層都有利。使用批量大小4096和剪裁閾值入=0.01,我們從第一卷積、最終線性層和任何給定殘差級集合中的每個塊的不同組合中去除AGC。例如,一個實驗可以去除線性層中的剪切以及第二和第四階段中的所有塊。出現了兩個關鍵趨勢:首先,最好不要剪裁最後的線性層。其次,通常可以在不剪裁初始卷積的情況下進行穩定訓練,但當以批量大小4096以1.6的默認學習率進行訓練時,必須剪裁所有四個階段的權重以實現穩定性。對於本文的其餘部分(以及圖2中的消融),我們將AGC應用於除最終線性層之外的每一層。

 

5.無歸一化器架構,提高了準確性和訓練速度

  在上一節中,我們介紹了AGC,這是一種梯度裁剪方法,使我們能夠在大批量和強數據增強的情況下進行有效訓練。有了這項技術,我們現在尋求設計具有最先進精度和訓練速度的無歸一化器架構。

  圖像分類的當前技術狀態通常由EfficientNet模型家族(Tan&Le,2019)持有,該模型基於反向瓶頸塊的變體(Sandler et al.,2018),具有源自神經架構搜索的主幹和模型縮放策略。這些模型經過優化,在最小化參數和FLOP計數的同時最大限度地提高了測試精度,但其較低的理論計算複雜性並不能轉化爲現代加速器上訓練速度的提高。儘管與ResNet-50相比,EffNet BO的FLOPS減少了10倍,但在GPU或TPU上訓練時,它具有相似的訓練延遲和最終性能。

   選擇哪種指標進行優化——理論FLOPS、目標設備上的推理延遲或加速器上的訓練延遲是一個偏好問題,每個指標的性質將產生不同的設計要求。在這項工作中,我們選擇專注於手動設計模型

  針對現有加速器上的訓練延遲進行了優化,如Radosavovic等人(2020)所述。未來的加速器可能能夠充分利用EfficientNets等模型在很大程度上無法實現的潛在訓練速度,因此我們認爲這一方向不應被忽視(Hooker,2020),但我們預計,在當前硬件上開發訓練速度提高的模型將有利於加速研究。我們注意到,GPU和TPU等加速器傾向於支持密集計算,儘管這兩個平臺之間存在差異,但它們有足夠的共同點,爲一個設備設計的模型可能會在另一個設備上快速訓練。

   因此,我們通過手動搜索設計趨勢來探索模型設計的空間,這些設計趨勢相對於設備上的實際訓練延遲對ImageNet上的前1名的排列前沿產生了改進。本節描述了我們發現效果良好的更改(更多細節見附錄C),而我們發現效果不佳的想法見附錄E。這些更改的摘要如圖3所示,它們對保持準確性的影響如表2所示。

 

   NFNets系列如上,類似於EfficientNets一樣,深度,分辨率以及不同的Dropout。這一些網絡基於SE-ResNeXt-D,使用GELU作爲激活函數,並處於對硬件性能與特點的考慮將3*3卷積的group width設爲 128,並修改深度模式爲 [1, 2, 6, 3]的倍數,修改 ResNets 的通道模式 [ 256, 512, 1024, 2048] 至 [ 256, 512, 1536, 1536],使用了FixRes。

  NFNet的命名規則,如NFNet-F0 對應的 stage 使用的 block 數爲 [1, 2, 6, 3],NFNet-F1 對應 [ 2, 4, 12, 6],NFNet-F6 對應 [7, 14, 42, 21]。

 

   我們從SE-ResNeXt-D模型開始(Xie等人,2017;Hu等人,2018;He等人,2019)和GELU激活(Hendrycks&Gimpel,2016),我們發現這是Normalizer Free Networks的一個驚人的強基線。我們做了以下更改。首先,我們將3×3卷積中的組寬度(每個輸出單元連接的通道數)設置爲128,而與塊寬度無關。較小的組寬度降低了理論FLOPS,但計算密度的降低意味着在許多現代加速器上沒有實現實際的加速。例如,在TPU3上,組寬度爲8列的SE-ResNeXt-50與組寬度爲128列的SE-ResNeXt-50以相同的速度運行,但每個設備的批量大小爲128或更大(Google,2021),這通常由於內存限制而無法實現。

   接下來,我們對模型主幹進行兩次更改。首先,我們注意到ResNets的默認深度縮放模式(例如,增加深度以從ResNet50構建ResNet101或ResNet200的方法)涉及非均勻增加第二層中的層數。和第三階段,同時在第一和第四階段中保持3個塊,其中“階段”是指激活寬度相同且分辨率相同的殘差塊序列。我們發現這種策略是次優的。早期階段的層以更高的分辨率運行,需要更多的內存和計算,並傾向於學習本地化的任務通用特徵(Krizhevsky et al.,2012),而後期階段的層則以較低的分辨率工作,包含模型的大部分參數,並學習更多的任務特定特徵(Raghu et al.,2017a)。然而,對早期階段過於吝嗇(例如通過激進的下采樣)可能會影響性能,因爲模型需要足夠的能力來提取良好的局部特徵(Raghu等人,2017b)。還希望有一個簡單的縮放規則來構建更深層次的變體(Tan&Le,2019)。考慮到這些原則,在確定簡單模式[1,2,6,3](指示要分配給每個階段的瓶頸塊數量)之前,我們探索了最小模型變體FO的幾種骨幹選擇。我們通過將每個階段的深度乘以標量N來構建更深的變量,例如,變量F1具有深度模式[2,4,12,6],而變量F4具有深度模式[5,10,30,15]。

  此外,我們重新考慮中的默認寬度模式 ResNets,其中第一級具有256個通道,這些通道在每個後續級加倍,從而產生模式[256,512,1024,2048]。採用上述深度模式,我們考慮了一系列替代模式(靈感來自Radosavovic等人(2020),但發現只有一種選擇比默認模式更好:[256,512,1531,6536]。這種寬度模式旨在提高第三階段的能力,同時在第四階段略微降低能力,大致保持訓練速度。與我們選擇的深度模式和ResNets的默認設計一致,我們發現第三階段往往是增加容量的最佳位置,我們假設這是因爲這個階段足夠深,可以有一個大的感受野和訪問更深層次的特徵,同時具有比最後階段略高的分辨率。

   我們還考慮了瓶頸殘差塊本身的結構。我們考慮了各種預先存在的和新的修改(見附錄E),但發現最好的改進來自於在第一個修改之後添加額外的3×3分組conv(伴隨非線性)。這種額外的卷積對FLOPS的影響最小,對目標加速器的訓練時間幾乎沒有影響。

  我們還發現,隨着模型容量的增加,增加正則化強度是有幫助的。然而,修改權重衰減或隨機深度率是無效的,相反,我們根據Tan Le(2019)對Dropout的下降率進行了縮放(Srivastava et al.,2014)。這一步驟尤其重要,因爲我們的模型缺乏批規範化的隱式正則化,並且沒有顯式正則化往往會顯著地過擬合。我們得到的模型具有很高的性能,儘管針對訓練延遲進行了優化,但在FLOP與準確性方面(儘管不是在參數與準確性方面),仍與更大的EfficientNet變體保持競爭力,如附錄A中的圖4所示。

  作者發現:

  1,位於淺層的殘差塊通常分辨率較高,需要更多內存和計算資源,傾向學習一般的特徵。位於深層的殘差塊分辨率較低,包含模型的大部分參數,傾向於學習特定特徵。對早期階段採用激進的下采樣會損害性能,模型需要足夠容量提取好的局部特徵。

  2,對於ResNet  backbone 而言,採樣固定的寬度,縮放深度和訓練分辨率可以提高速度隨着模型容量的增加,有助於增加正則化強度。

  3,與批量歸一化模型相比,無歸一化模型更適合在非常大規模的數據集上進行預訓練後進行微調。

  所以論文以待GLEU激活函數的 SE-ResNeXt-D模型作爲 Normalizer-Free網絡的基礎,除訓練加入AGC外,主要做了以下改進:

  • 將3*3卷積變爲分組卷積,每組的維度固定爲 128, 組數由卷積的輸入維度決定。更小的分組維度可以降低理論的計算量,但計算密度的降低導致不能很好的利用設備稠密計算的優勢,實際不會帶來更多加速。
  • ResNet的深度擴展(從ResNet50擴展至ResNet200) 主要集中在 stage2和stage3,而stage1和stage4保持3個block的形式。這樣的做法不是最優的,因爲不管低層特徵或高層特徵,都需要足夠的空間去學習。因此,論文先制定最小的 F0 網絡的各 stage的block數爲 [1, 2, 6, 3],後續更大的網絡都是在此基礎上以倍數擴展。
  • ResNet的各stage 維度爲 [256, 512, 1024, 2048],經過測試之後,改爲 [256, 512, 1536, 1536], stage3採用更大的容量,因爲其足夠深,需要更大的容量去收集特徵,而stage4不增加深度主要是爲了保持訓練速度。

 

5.1. 總結

  我們的訓練配方可以總結如下:首先,將Brock等人的Normalizer Free設置應用於SE-ResNeXt-D,具有修改的寬度和深度模式,以及第二個空間卷積。其次,將AGC應用於除分類器層的線性權重之外的每個參數。對於批量大小1024到4096,請設置入= 0.01,並利用強正則化和數據擴充。有關每個型號變體的附加信息,請參見表1。

6 實驗

6.1 在ImageNet上評估NFNets 

  現在,我們將注意力轉向在ImageNet上評估我們的NFNet模型,首先是在批量大小爲4096的360個時期進行訓練時,對我們的架構修改進行消融。我們使用動量係數爲0.9的Nesterov動量,如第4節所述,AGC 0.01的削波閾值,以及在通過餘弦退火衰減到零之前在5個時期內從0線性增加到1.6的學習率(Loshchilov-Hutter,2017)。從表2的前三行中,我們可以看到,我們對模型所做的兩個更改都會導致性能的輕微改進,而訓練延遲只有微小的變化(延遲請參見附錄中的表6)。

  接下來,我們評估了逐步添加更強增強的效果,將MixUp(Zhang et al.,2017)、RandAugment(RA,(Cubuk et al.,2020)和Cut-Mix(Yun et al.,2019)相結合。我們應用了4層RA,並根據Cubuk等人(2020)的說法,根據圖像的分辨率縮放幅度。我們發現,這種縮放特別重要,因爲如果幅度相對於圖像大小設置得太高(例如,在分辨率爲224的圖像上使用20的幅度),那麼大多數增強圖像將完全空白。有關這些震級的完整說明以及如何選擇這些震級,請參見附錄A。我們在表2中顯示,這些數據增強大大提高了性能。最後,在表2的最後一行中,我們還展示了使用默認ResNet階段寬度燒蝕的完整模型的性能,表明我們在第三和第四階段略微修改的模式在直接比較下確實有所改進。

  爲了完整起見,在附錄的表6中,我們還報告了當使用批處理規範化而不是NF策略進行訓練時,我們的模型架構的性能。與NF模型相比,這些模型的測試精度略低,訓練速度慢20%至40%,即使在使用高度優化的批處理規範化實現而不進行跨副本同步的情況下也是如此。此外,我們發現較大的模型變體F4和F5
在使用批量歸一化、使用或不使用AGC進行訓練時不穩定。我們將此歸因於使用bfloat16訓練來在內存中擬合這些較大模型的必要性,這可能會引入數值不精確性,與批量歸一化統計的計算交互較差。

  我們在表3中提供了六種模型變體(NFNet FO到F5)的大小、訓練延遲(在具有tensorcores的TPU3和V100上)和ImageNet驗證準確性的詳細總結,以及與具有類似訓練延遲的其他模型的比較。我們的NFNet-F5模型達到了86.0%的前1級驗證準確率,比之前的技術狀態EfficientNet-B8 with MaxUp(Gong et al.,2020)提高了一小部分,我們的NFNet-F1模型與EfficientNet-B7 with RA(Cubuk et al.,2019)的84.7%相匹配,同時訓練速度快8.7倍。有關如何測量訓練延遲的詳細信息,請參閱附錄A。

  我們的模型還受益於最近提出的清晰度感知最小化(SAM)(Foret等人,2021)。SAM不是我們標準培訓渠道的一部分,因爲默認情況下它會使培訓時間翻倍,通常只能用於分佈式培訓。然而,我們對SAM程序進行了一個小的修改,將這一成本降低到增加了20-40%的訓練時間(在附錄a中解釋),並用它來訓練我們的兩個最大的模型變體,結果是NFNet-F5達到了86.3%的top 1,而NFNet-F6達到了86.5%的top 1。在沒有額外數據的情況下,大大提高了ImageNet上現有的技術水平。

  最後,我們還評估了我們的數據挖掘策略在EfficientNets上的性能。我們發現,雖然RA大大提高了EfficientNets相對於基線增強的性能,但將層數增加到2層以上或添加MixUp和CutMix並不能進一步提高它們的性能,這表明我們的性能改進很難通過簡單地使用更強的數據增強來獲得。我們還發現,使用帶餘弦退火的SGD代替帶階躍衰減的RMSProp(Tieleman&Hinton,2012)會嚴重降低EfficientNet的性能,這表明我們的性能改進也不僅僅是因爲選擇了不同的優化器。

  我們在這個大型數據集上預訓練了10個時期的一系列批處理歸一化和NF ResNets,然後使用2048的批處理大小和0.1的小學習率同時微調ImageNet上的所有層,並進行15000步的餘弦退火,以獲得範圍[2224320384]內的輸入圖像分辨率。如表4所示,Normalizer-Free網絡在每一種情況下都優於其批量歸一化網絡,通常以大約1%的絕對前1的幅度。這表明,在遷移學習機制中,去除批量歸一化可以直接提高最終性能。

  我們使用我們的NFNet模型進行了同樣的實驗,預訓練了一個NFNet-F4和一個稍寬的變體,我們稱之爲NFNet-F4+(見附錄C)。如附錄表5所示,經過20個時期的預訓練,我們的NFNet-F4+獲得了89.2%的ImageNet前1級準確率。這是迄今爲止使用額外訓練數據實現的第二高驗證精度,僅次於最近的半監督學習基線(Pham et al.,2020),也是使用遷移學習實現的最高精度。

  圖3展示了六個不同的NFNets(F0-F5)與其他模型在模型大小,訓練延遲和ImageNet驗證準確率方面的對比情況。NFNets-F5達到了 86%的SOAT top-1準確率,相比於 EfficientNet-B8有了一定提升;NFNet-F1的測試準確率與 EfficientNet-B7相媲美,同時訓練速度提升了 8.7倍。NFNet-F6+SAM 達到了 86.5% 的 top-1 準確率。

   NFNets和其他模型在 ImageNet 數據集上的準確率對比。延遲是指在TPU或者GPU(V100)上運行單個完整訓練步驟所需要的毫秒時間。

  此外,研究者使用了一個3億標註圖像的數據集對 NFNet的變體進行了預訓練,並針對 ImageNet進行微調。最終,NFNet-F4+在 ImageNet 上獲得了 89.2%的top1 準確率。這是迄今爲止通過額外訓練數據達到的第二高的驗證準確率,僅次於目前最強大的半監督學習基線和通過遷移學習達到的最高準確率。

總結

  我們首次展示了在沒有歸一化層的情況下訓練的圖像識別模型,不僅可以匹配大規模數據集上最佳BN模型的分類精度,而且大大超過他們,同時仍然可以更快的訓練。爲了實現這一點,我們引入了自適應梯度裁剪(AGC),這是一種簡單的剪裁算法,可以穩定大批量訓練,並使我們能夠通過強大的數據增強來優化非歸一化網絡。利用這種技術和簡單的架構設計原則,我們開發了一系列模型,無需額外數據即可在ImageNet上獲得最先進的性能,同時比競爭方法的訓練速度要快得多。我們還表面,與批量標準化模型相比,無標準化模型更適合在超大規模數據集上進行預訓練後微調。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章