在開發(fā)以卷積神經(jīng)網(wǎng)絡(luò)(CNN)為核心的機(jī)器學(xué)習(xí)模型時(shí),我們通常會先使用固定的資源成本,構(gòu)建最初的模型,然后增加更多資源(層數(shù))擴(kuò)展模型,從而獲得更高的準(zhǔn)確率。
著名的 CNN 模型 ResNet(深度殘差網(wǎng)絡(luò)),就可以用增加層數(shù)的方法從ResNet-18 擴(kuò)展到 ResNet-200。谷歌的 GPipe 模型也通過將基線 CNN 擴(kuò)展 4 倍,在 ImageNet 數(shù)據(jù)庫上達(dá)到 84.3% 的準(zhǔn)確率,力壓所有模型。
一般來說,模型的擴(kuò)大和縮小都是任意增加 CNN 的深度或?qū)挾?,抑或是使用分辨率更大的圖像進(jìn)行訓(xùn)練和評估。雖然這些傳統(tǒng)方法提高準(zhǔn)確率的效果不錯(cuò),但大多需要繁瑣的手動調(diào)整,還可能無法達(dá)到最佳性能。
因此,谷歌AI團(tuán)隊(duì)最近提出了新的模型縮放方法“復(fù)合縮放(Compound Scaling)”和配套的 EfficientNet 模型。他們使用復(fù)合系數(shù)和 AutoML 從多個(gè)維度均衡縮放 CNN,綜合考慮深度和寬度等參數(shù),而不是只單純地考慮一個(gè),使得模型的準(zhǔn)確率和效率大幅提升,圖像識別的效率甚至可以大幅提升 10 倍。
這項(xiàng)新方法的根本優(yōu)勢在于實(shí)踐起來非常簡單,背后的原理很好理解,甚至讓人懷疑為什么沒有被更早發(fā)現(xiàn)。該研究成果以論文的形式被 ICML 2019(國際機(jī)器學(xué)習(xí)大會)接收,名為 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks。EfficientNet 模型的相關(guān)代碼和 TPU 訓(xùn)練數(shù)據(jù)也已經(jīng)在 GitHub 上開源。
尋找復(fù)合系數(shù)
為了弄清楚神經(jīng)網(wǎng)絡(luò)縮放之后的效果,谷歌團(tuán)隊(duì)系統(tǒng)地研究了改變不同維度對模型的影響,維度參數(shù)包括網(wǎng)絡(luò)深度、寬度和圖像分辨率。
首先他們進(jìn)行了柵格搜索(Grid Search)。這是一種窮舉搜索方法,可以在固定資源的限定下,列出所有參數(shù)之間的關(guān)系,顯示出改變某一種維度時(shí),基線網(wǎng)絡(luò)模型會受到什么樣的影響。換句話說,如果只改變了寬度、深度或分辨率,模型的表現(xiàn)會發(fā)生什么變化。
圖 | 以基線網(wǎng)絡(luò)為基礎(chǔ),列出所有維度變化對模型的影響(來源:谷歌 AI)
綜合考慮所有情況之后,他們確定了每個(gè)維度最合適的調(diào)整系數(shù),然后將它們一同應(yīng)用到基線網(wǎng)絡(luò)中,對每個(gè)維度都進(jìn)行適當(dāng)?shù)目s放,并且確保其符合目標(biāo)模型的大小和計(jì)算預(yù)算。
簡單來說,就是分別找到寬度、深度和分辨率的最佳系數(shù),然后將它們組合起來一起放入原本的網(wǎng)絡(luò)模型中,對每一個(gè)維度都有所調(diào)整。從整體的角度縮放模型。
與傳統(tǒng)方法相比,這種復(fù)合縮放法可以持續(xù)提高模型的準(zhǔn)確性和效率。在現(xiàn)有模型 MobileNet 和 ResNet 上的測試結(jié)果顯示,它分別提高了 1.4% 和 0.7% 的準(zhǔn)確率。
高效的網(wǎng)絡(luò)架構(gòu)和性能
縮放模型的有效性也依賴于基線網(wǎng)絡(luò)(架構(gòu))本身。
因?yàn)?,為了進(jìn)一步提高性能,谷歌 AI 團(tuán)隊(duì)還使用了 AutoML MNAS 框架進(jìn)行神經(jīng)架構(gòu)搜索,優(yōu)化準(zhǔn)確性和效率。AutoML 是一種可以自動設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)的技術(shù),由谷歌團(tuán)隊(duì)在 2017 年提出,而且經(jīng)過了多次優(yōu)化更新。使用這種技術(shù)可以更簡便地創(chuàng)造神經(jīng)網(wǎng)絡(luò)。
由此產(chǎn)生的架構(gòu)使用了移動倒置瓶頸卷積(MBConv),類似于 MobileNetV2 和 MnasNet 模型,但由于計(jì)算力(FLOPS)預(yù)算增加,MBConv 模型體積略大。隨后他們多次縮放了基線網(wǎng)絡(luò),組成了一系列模型,統(tǒng)稱為 EfficientNets。
圖 | EfficientNet-B0 基線網(wǎng)絡(luò)架構(gòu)(來源:谷歌 AI)