【深度学习】后ResNet时代的顶流EfficientNet
感興趣的可以直接看視頻,第一次做視頻有很多瑕疵
其實,我對于EfficientNet流派的網(wǎng)絡(luò)是排斥的,暴力搜索的方法看起來跟創(chuàng)新背道而馳,總覺得不太光彩,這對于深度學(xué)習(xí)的良性發(fā)展會產(chǎn)生一定的負(fù)面影響,EfficientNet可能是這個算力爆炸時代的必經(jīng)之路吧,對工業(yè)界來說還是有一定的可取之處的。
下面來介紹一下EfficientNet和EfficientNetV2的設(shè)計思路,幾個問題放在最后討論
01
EfficientNet
經(jīng)驗上想要提升網(wǎng)絡(luò)的精度和速度,就需要對width、depth和resolution三個維度進行平衡。那么如何同時對這三個維度進行平衡可以得到限制條件下最佳網(wǎng)絡(luò)架構(gòu)呢,之前的方法基本上都是對這三個維度的其中一個或者其中兩個進行調(diào)參,通過實驗來確定最佳的網(wǎng)絡(luò)結(jié)構(gòu),顯然這種手工得到的最佳很可能是局部最優(yōu),于是EfficientNet通過神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)的方式同時對這三個維度進行平衡,搜索得到最優(yōu)網(wǎng)絡(luò)架構(gòu)。
問題定義
首先將網(wǎng)絡(luò)架構(gòu)搜索定義成一個復(fù)合模型縮放優(yōu)化問題,需要同時得到最優(yōu)的width、depth和resolution。
假設(shè)一層卷積運算定義為??,??維度為??,那么一個網(wǎng)絡(luò)架構(gòu)可以定義為:
??
其中i表示第i個stage,??表示第i個stage的卷積層數(shù)。
跟以往的網(wǎng)絡(luò)架構(gòu)設(shè)計不同的是,EfficientNet的網(wǎng)絡(luò)搜索過程不改變??的結(jié)構(gòu),只對width、depth和resolution三個維度進行縮放,然而在memory和flop是的限制條件下,搜索空間還是太大了,為了進一步縮小搜索空間,EfficientNet的所有卷積層統(tǒng)一進行縮放,即搜索出來的一組depth、width和resolution參數(shù)同時應(yīng)用于所有卷積層。
通過上述假設(shè)定義,EfficientNet的網(wǎng)絡(luò)架構(gòu)搜索變成了一個帶限制條件的多目標(biāo)優(yōu)化問題。
??
其中w,d,r分別是width、depth和resolution三個維度的縮放系數(shù)。
問題定義完成后,就需要設(shè)計NAS搜索必需的三個東西:搜索空間、搜索策略和性能評估策略。
搜索空間
EfficientNet的最小搜索單元使用的是MBConv,整個網(wǎng)絡(luò)架構(gòu)搜索空間和MnasNet相同。先通過MnasNet得到最原始的EfficientNet-B0,然后通過復(fù)合縮放得到最優(yōu)的EfficientNet-B0,最后得到一系列EfficientNet模型。
如上圖所示,復(fù)合縮放主要由width、depth和resolution三個維度決定。(a)是一個baseline網(wǎng)絡(luò)架構(gòu),(b)、(c)、(d)分別是對width、depth和resolution三個維度進行縮放,(e)是對width、depth和resolution三個維度進行復(fù)合縮放。比如(b)可以理解為width擴大2倍,(c)可以理解為depth擴大2倍,(d)可以理解為resolution擴大2倍,然后所有卷積層的縮放比例是一致的。
為了得到一系列不同大小的模型,EfficientNet提出compound scaling方法,通過一個復(fù)合系數(shù)來對width、depth和resolution三個維度進行統(tǒng)一縮放
??
??通過一個小的grid search得到,直觀上,??用來控制資源限制下的整體模型縮放,??用來控制depth、width和resolution三個維度的平衡。
因為網(wǎng)絡(luò)架構(gòu)的計算消耗主要由卷積決定的,那么一個搜索得到的網(wǎng)絡(luò)架構(gòu)比起baseline相當(dāng)于FLOPS縮放了??倍。
4個縮放系數(shù)巧妙的將難以統(tǒng)一起來表示的depth、width和resolution給統(tǒng)一起來了,構(gòu)成了一個可搜索的復(fù)合縮放搜索空間。
搜索策略
通過MnasNet相同的搜索方式搜索出最原始的EfficientNet-B0。EfficientNet通過兩個搜索步驟,先確定最優(yōu)的EfficientNet-B0,然后再確定EfficientNet-B1到EfficientNet-B7,兩個步驟如下:
先將??固定為1,然后通過一個小的grid srach搜索得到最優(yōu)的??三個縮放系數(shù)。EfficientNet-B0最優(yōu)的縮放系數(shù)分別為??。
然后固定住??,縮放??獲得EfficientNet-B1到EfficientNet-B7。
最原始的EfficientNet-B0結(jié)構(gòu)如上圖所示。
性能評估策略
性能評估策略和MnasNet保持一致,使用
??
作為優(yōu)化目標(biāo),T和w作為平衡因子。
在當(dāng)時大幅度超過之前的網(wǎng)絡(luò)架構(gòu),如AmoebaNet、SENet等。
然而,深度可分離卷積當(dāng)年用來降低參數(shù)量和FLOPS的操作,卻成了使EfficientNet變慢的重要因素,為后續(xù)EfficientNetV2埋下了伏筆。
02
EfficientNetV2
EfficientNetV2指出了EfficientNet存在的三個問題:
EfficientNet在非常大的圖片上訓(xùn)練速度慢。因為計算資源是固定的,圖片尺寸的增大意味著更小的batch size,導(dǎo)致訓(xùn)練速度變慢。EfficientNetV2通過提出的Progressive Learning解決這個問題。
淺層的深度可分離卷積導(dǎo)致訓(xùn)練速度變慢。雖然深度可分離卷積比起普通卷積有更小的參數(shù)量和FLOPS,但是深度可分離卷積需要保存的中間變量比普通卷積多,大量時間花費在讀寫數(shù)據(jù)上,導(dǎo)致訓(xùn)練速度變慢。EfficientNetV2通過將淺層的MBConv替換成Fused-MBConv來解決這個問題。
每個stage的縮放系數(shù)相同是次優(yōu)的。因為不同stage對訓(xùn)練速度和參數(shù)效率的貢獻是不相同的。EfficientNetV2通過使用非均勻縮放策略來逐漸增加深層stage的層數(shù)。
Training-Aware NAS
為了解決2和3問題,EfficientNetV2提出了Training-Aware NAS。
搜索空間
搜索空間和MnasNet類似,EfficientNetV2的搜索空間為:operation types {MBConv、Fused-MBConv},kernel size {3x3, 5x5},expansion ratio {1, 4, 6},為了縮小搜索空間,去掉了不必要的操作,并且復(fù)用MnasNet搜索得到的通道數(shù)。
其中MBConv和Fused-MBConv結(jié)構(gòu)如下
Fused-MBConv將MBConv的3x3深度可分離卷積和1x1卷積合并成一個3x3的普通卷積。
搜索策略
因為搜索空間已經(jīng)足夠小了,可以在更大(EffcientNet-B4大小相當(dāng))的網(wǎng)絡(luò)上使用random search進行搜索。
搜索得到的EfficientNetV2-S架構(gòu)如下:
和EfficientNet相比較,有4點不同:
在淺層使用Fused-MBConv
更小的expansion ratio
堆疊更多層3x3的MBConv
移除掉最后一個stride為1的stage
和EfficientNet類似,使用復(fù)合縮放的方法來得到EfficientNetV2-M/L。這一步還做了兩點優(yōu)化:
1.將最大推理圖片尺寸限制在480以下
2.在后面的stage逐漸添加更多的層
性能評估策略
結(jié)合模型精度A、歸一化后的訓(xùn)練時間S和參數(shù)大小P三個參數(shù),構(gòu)造了性能評估策略:
??
Progressive Learning
作者做了個實驗,當(dāng)圖像尺寸較小時,數(shù)據(jù)增強效果較弱,精度最好;但對于更大的圖像,數(shù)據(jù)增強效果越強,精度越好。實驗證明隨著圖像尺寸的變大,需要更強的正則化來防止過擬合。
上圖展示了作者提出的progressive learning的訓(xùn)練過程: 在訓(xùn)練的早期,使用較小的圖像和弱正則化來訓(xùn)練網(wǎng)絡(luò),使網(wǎng)絡(luò)能夠輕松快速地學(xué)習(xí)簡單的表示。然后,隨著圖像大小的逐漸增加,也逐漸增加更強的正則化,使學(xué)習(xí)更加困難。
EfficientNet和EfficientNetV2的對比
最終的實驗結(jié)果,訓(xùn)練速度上大幅度超過之前的網(wǎng)絡(luò)架構(gòu),并且精度進一步提升。
幾個問題
深度可分離卷積為什么會導(dǎo)致速度變慢?
雖然深度可分離卷積比起普通卷積有更小的參數(shù)量和FLOPS,但是深度可分離卷積需要保存的中間變量比普通卷積多,大量時間花費在讀寫數(shù)據(jù)上,導(dǎo)致訓(xùn)練速度變慢。
詳細(xì)解析: Phoenix Li:FLOPs與模型推理速度
自適應(yīng)正則化為什么有效?
這里講一下我的理解,如上圖所示,隨著epoch的增加,圖像尺寸越大,帕累托最優(yōu)前沿越往向上移動,需要更強的正則化來使網(wǎng)絡(luò)性能接近帕累托最優(yōu)前沿。
帕累托解析: 木木松:多目標(biāo)優(yōu)化之帕累托最優(yōu)
總結(jié)
EfficientNetV2還是延續(xù)了EfficientNet的風(fēng)格,利用強大的計算資源暴力搜索,得到一些看不懂的超參,令人驚喜的地方在于對訓(xùn)練速度的改進。EfficientNet槽點固然很多,但是不可否認(rèn),它對于工業(yè)界的影響力之大。
時至今日,對手換了一批又一批,EfficientNet還是那個EfficientNet,一個只有谷歌能玩的游戲。多年以后人們還會記得那個讓人又愛又恨的網(wǎng)絡(luò)。
Reference
[1]?EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks Mingxing
[2]?EfficientNetV2: Smaller Models and Faster Training
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:總結(jié)
以上是生活随笔為你收集整理的【深度学习】后ResNet时代的顶流EfficientNet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何解决Win11系统蓝牙鼠标经常掉线
- 下一篇: 【深度学习】transformer 真的