EfficientNet Paper 介紹
很多時候對模型scale的調整會影響模型最終的效能,像是可能在比較大型的模型上面,增加模型的深度會提申模型的表現,或是當提升了輸入圖片的解析度時,可能也會需要更深的模型來對影像作分析。
因此這篇paper,提出了一個全新的 basic model EfficientNet,並提出一個自動去計算模型大小的方法,平衡一個模型的 deep, width, resource
- deep (d)=> 模型有幾層layer
- width (w)=> filter數量
- resource (r=> 輸入圖片的解析度
先來看如何自動調整模型的scale,本篇paper將目標定義公式如下,透過調整 d,w,r 最大化 basic mode N 的 accuracy :

並符合下列3個限制:


第二根第三則是對模型整體所使用的記憶體量有限制以及模型的FLOPs有限制。FLOPs的意思是去計算一個模型重頭到尾需要幾次的福點數計算,以一個 3x3 的 convolution kernel 來說,每計算一個值(不是整個output feature)就需要做 3x3+3x3–1次的福點數運算。

此外,本篇paper提出了用compound scaling method ,來平衡 d,w,r 3個參數 :

可以看到前面對模型scale的調整,並不會去動模型的結構(有幾個不同的layer,以及layer間的順序),因此原本的 basic model的架構就十分重要,而本篇paper使用 automl 的方式建造basic model EfficientNet,他的 search space 訂為

其中,T是目標的FLOPs (400 M),w是一個超參數 = 0.07,去調整 ACC 跟 FLOPs 兩者的比重
用automl的方法第一個產出的model為 EfficientNet-B0 ,並將這個模型作為baseline model,透過兩個step來對模型做scale up

Neural Architecture Search (NAS)
再給定的search space中,根據設定好的目標(optimization goal),找到最好的Neural Network,本篇論文的search space跟MnasNet相同:
在最早期的paper “NEURAL ARCHITECTURE SEA REINFORCEMENT LEARNING “,將一個模型的structure視為一個可變長度的list,並使用RNN(controler)來預測該模型架構裡的每一個元件,並將valid dataset的accuracy視為reforencement的回饋分數,用來update RNN controler,使得controler可以有越來越高的機率選到可以讓accuracy更高的architectures。

由於著個方法的訓練時間太長,導致在大資料及上不可用,因此後來有研究改為search一個cell並且做多次的堆疊,但這樣導致模型結構單調,而本篇論文參考MnasNet,會將一個CNN模型拆分成多個block,每個block都會在search一個自己的cell出來,並判斷該cell在block要堆疊幾次,用reinforcement learning去學習,
EfficientNet Architecture Search
每一個block的search space為 :
- convolution layer : regular conv, depthwise conv, mobil inverted bottleneck conv
- kernel size: 3x3, 5x5
- Squeeze-and-excitation ratio(SERation): 0, 0.25
- Skip ops(SkipOp): pooling, indentity residual, no skip
- search spaceFi {0.75, 1.0, 1.25} (前一層的?倍)
- Number of lyaers per block Ni (預設為3)