改進卷積神經網絡,你需要這14種設計模式
深度學習領域近來已經發展出大量的新架構,而如何選擇使用這些新架構提升卷積神經網絡的性能就顯得越發重要了。機器之心之前報道過提交 ICLR 2017 的論文: 解析深度卷積神經網絡的14種設計模式 也正是關注于此。而本文在描述14種設計模式之余更加注重于闡述構建和訓練卷積網絡的小技巧。
自從 2011 年深度卷積神經網絡(CNN)在圖像分類任務中優于人類開始,它們就成為了計算機視覺任務中的行業標準,這些任務包括圖像分割、目標檢測、場景標記、跟蹤以及文本檢測等等。
然而,訓練神經網絡的技巧并不容易掌握。與之前的機器學習方法一樣,細節是最恐怖的地方,然而在卷積神經網絡中有更多的細節需要去管理:你所用的數據和硬件的限制是什么?你應該以哪種網絡作為開始呢?AlexNet、VGG、GoogLeNet 還是 ResNet 呢?甚至 ResNet 里面還有 ResNet 分支選項。你應當建立多少與卷積層相對應的密集層?你使用哪種激活函數?即使你選擇了廣為流行的 ReLU,你也還要選擇是不是使用普通的 ReLU、Very Leaky ReLU、RReLU、PReLU 或通用版本的 ELU。
最難優化的參數之一就是學習率(learning rate),它是調節神經網絡訓練的最重要的超參數。學習率太小,可能導致你永遠不會收斂到一個解決方案,學習率太大,可能導致你剛好跳過了最優解。即便是適應性學習率的方法,也可能在計算上過于昂貴,這取決于你的硬件資源。
設計的選擇和超參數的設定會嚴重地影響 CNN 的訓練和表現,然而對于剛進入深度學習領域的人而言,建立一種設計架構的直覺所需要的資源是稀缺的,而且是分散的。
每個人都知道 VGG 是緩慢而龐大的,但是,倘若你正確地調節它,你仍然可以生成最先進的結果以及高性能的商用應用。圖片來源:Canziani, et al
著重于實際調節的主要書籍是《神經網絡:權衡技巧(Neural Networks: Tricks Of The Trade)》,作者:Orr & Muller,最初出版于 2003 年,再版于 2012 年。關于深度學習的熱潮始于 2012 年《紐約時報》報導的 Geoffrey Hinton 的團隊在 Merck Drug Discovery Challenge 上的驚人成功,所以最近幾年先進的研究是缺失的。
幸運的是,美國海軍研究室的研究員 Leslie Smit 等人已經發表了關于卷積神經網絡架構改進和技術提升的系統性研究。下面列舉一些他所強調的最重要的一些設計模式。
關于圖像分類的卷積神經網絡設計模式
根據 Smith 的觀點,這「14 種原創設計模式可以幫助沒有經驗的研究者去嘗試將深度學習與各種新應用相結合」。盡管高級人工智能研究員可以依靠直覺、經驗以及針對性的實驗,但這些建議對于剩下的沒有機器學習博士學位的人來說是一個很好的起點。
1)架構要遵循應用
你也許會被 Google Brain 或者 DeepMind 這些奇特的實驗室所發明的那些耀眼的新模型所吸引,但是其中許多在你的用例或者業務環境中要么是不可能實現,要么是實現起來非常不現實。你應該使用對你的特定應用最有意義的模型,這種模型或許比較簡單,但是仍然很強大,例如 VGG。
較新的架構可能在學術性的基準測試上會更加準確,但是你應該選擇你自己理解的并且最適合你的應用的架構。圖片來源:Canziani 等。
2)網絡路徑的激增
每年的 ImageNet Challenge 的冠軍都會使用比上一屆冠軍更加深層的網絡。從 AlexNet 到 Inception,再到 ResNet,Smith 注意到了「網絡中路徑數量倍增」的趨勢,并且「ResNet 可以是不同長度的網絡的指數集合」。
3)爭取簡單
然而,更大的并不一定是更好的。在名為「Bigger is not necessarily better」的論文中,Springenberg 等人演示了如何用更少的單元實現最先進的結果。參考:https://arxiv.org/pdf/1412.6806.pdf
4)增加對稱性
無論是在建筑上,還是在生物上,對稱性被認為是質量和工藝的標志。Smith 將 FractalNet 的優雅歸功于網絡的對稱性。
5)金字塔式的形狀
你也許經常在表征能力和減少冗余或者無用信息之間權衡。卷積神經網絡通常會降低激活函數的采樣,并會增加從輸入層到最終層之間的連接通道。
6)過度訓練
另一個權衡是訓練準確度和泛化能力。用類似 drop-out 或者 drop-path 的方法進行正則化可以提高泛化能力,這是神經網絡的重要優勢。請在比你的實際用例更加苛刻的問題下訓練你的網絡,以提高泛化性能。
7)全面覆蓋問題空間
為了擴展你的訓練數據和提升泛化能力,請使用噪聲和數據增強,例如隨機旋轉、裁剪和一些圖像操作。
8)遞增的特征構造
隨著網絡結構越來越成功,它們進一部簡化了每一層的「工作」。在非常深層的神經網絡中,每一層僅僅會遞增的修改輸入。在 ResNets 中,每一層的輸出和它的輸入時很相似的,這意味著將兩層加起來就是遞增。實踐中,請在 ResNet 中使用較短的跳變長度。
9)標準化層的輸入
標準化是另一個可以使計算層的工作變得更加容易的方法,在實踐中被證明可以提升訓練和準確率。批量標準化(batch normalization)的發明者認為原因在于處理內部的協變量,但是 Smith 認為,「標準化把所有層的輸入樣本放在了一個平等的基礎上(類似于一種單位轉換),這允許反向傳播可以更有效地訓練」。
10)輸入變換
研究表明,在 Wide ResNets 中,性能會隨著連接通道的增加而增強,但是你需要權衡訓練代價與準確度。AlexNet、VGG、Inception 和 ResNets 都在第一層使用了輸入變換以讓輸入數據能夠以多種方式被檢查。
11)可用的資源決指引著層的寬度
然而,可供選擇的輸出數量并不是顯而易見的,這依賴于你的硬件能力以及期望的準確度。
12)Summation Joining
Summation 是一種常用的合并分支的方式。在 ResNets 中,使用總和作為連接的機制可以讓每一個分支都能計算殘差和整體近似。如果輸入跳躍連接一直存在,那么 summation 會讓每一層學到正確地東西(例如與輸入的差別)。在任何分支都可以被丟棄的網絡(例如 FractalNet)中,你應該使用這種方式類保持輸出的平滑。
13)下采樣變換
在池化的時候,利用級聯連接(concatenation joining)來增加輸出的數量。當使用大于 1 的步長時,這會同時處理連接并增加連接通道的數量。
14)用于競爭的 Maxout
Maxout 被用在你只需要選擇一個激活函數的局部競爭網絡中。使用求和以及平均值會包含所有的激活函數,所以不同之處在于 maxout 只選擇一個「勝出者」。Maxout 的一個明顯的用例是每個分支具有不同大小的內核,而 Maxout 可以包含尺度不變性。
提示與技巧
除了這些設計模式之外,還出現了幾個最新的技巧和訣竅,以減少架構的復雜性和訓練時間,并且可以使用有噪聲的標簽。
1)使用調優過的預訓練網絡
「如果你的視覺數據和 ImageNet 相似,那么使用預訓練網絡會幫助你學習得更快」,機器學習公司 Diffbot 的 CEO Mike Tung 解釋說。低水平的卷積神經網絡通常可以被重復使用,因為它們大多能夠檢測到像線條以及邊緣這些模式。將分類層用你自己的層替換,并且用你特定的數據去訓練最后的幾個層。
2)使用 freeze-drop-path
Drop-path 會在訓練的迭代過程中隨機地刪除一些分支。Smith 測試了一種相反的方法,它被稱為 freeze-path,就是一些路徑的權重是固定的、不可訓練的,而不是整體刪除。因為下一個分支比以前的分支包含更多的層,并且正確的內容更加容易近似得到,所以網絡應該會得到更好的準確度。
3)使用循環的學習率
關于學習率的實驗會消耗大量的時間,并且會讓你遇到錯誤。自適應學習率在計算上可能是非常昂貴的,但是循環學習率不會這樣。使用循環學習率(CLR)時,你可以設置一組最大最小邊界,在邊界范圍內改變學習率。Smith 甚至還在論文《Cyclical Learning Rates for Training Neural Networks》中提供了計算學習率的最大值和最小值的方法。參考:https://arxiv.org/pdf/1506.01186.pdf
4)在有噪聲的標簽中使用 bootstrapping
在現實中,很多數據都是混亂的,標簽都是主觀性的或者是缺失的,而且預測的對象可能是訓練的時候未曾遇到過的。Reed 等人在文章《TRAINING DEEP NEURAL NETWORKS ON NOISY LABELS WITH BOOTSTRAPPING》中描述了一種給網絡預測目標注入一致性的方法。直觀地講,這可以奏效,通過使網絡利用對環境的已知表示(隱含在參數中)來過濾可能具有不一致的訓練標簽的輸入數據,并在訓練時清理該數據。參考:https://arxiv.org/pdf/1412.6596
5)采用有 Maxout 的 ELU,而不是 ReLU
ELU 是 ReLU 的一個相對平滑的版本,它能加速收斂并提高準確度。與 ReLU 不同,ELU 擁有負值,允許它們以更低的計算復雜度將平均單位激活推向更加接近 0 的值,就像批量標準化一樣參考論文《FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS)》,https://arxiv.org/pdf/1511.07289.pdf。如果您使用具有全連接層的 Maxout,它們是特別有效的。