雷鋒網 AI 科技評論:港中文最新論文研究表明目前的深度神經網絡即使在人工標註的標準資料庫中訓練(例如 ImageNet),性能也會出現劇烈波動。這種情況在使用少批量數據更新神經網絡的參數時更為嚴重。研究發現這是由於 BN(Batch Normalization)導致的。BN 是 Google 在 2015 年提出的歸一化方法。至今已有 5000+次引用,在學術界和工業界均被廣泛使用。港中文團隊提出的 SN(Switchable Normalization)解決了 BN 的不足。SN 在 ImageNet 大規模圖像識別數據集和 Microsoft COCO 大規模物體檢測數據集的準確率,還超過了最近由 Facebook 何愷明等人提出的組歸一化 GN(Group Normalization)。原論文請參考 arXiv:1806.10779 和代碼 Github。
背景解讀:*ImageNet 是大規模圖像識別資料庫。由史丹福大學李飛飛教授在 2009 年建立。在 ImageNet 中識別率的競賽,被稱為計算機視覺的奧林匹克競賽。*Microsoft COCO 是目前使用最廣泛的物體檢測與分割數據集。每年舉辦的 COCO Challenge 吸引了大量國內外著名企業與實驗室參與,包括 Google,Facebook,Berkely 等等。*BN(批歸一化)是由 Google 在 2015 年提出的一種歸一化方法。至今已經被引用了 5000 餘次,在學術界與工業界廣泛使用。幾乎所有主流神經網絡結構都使用了BN,例如微軟亞洲研究院提出的殘差神經網絡(ResNet,CVPR 2016 best paper)和由康奈爾大學提出的 DenseNet(CVPR 2017 best paper)。*SN 是港中文團隊最新提出的歸一化方法。其在 ImageNet 的識別率超越了其它歸一化方法。使用 SN 訓練的 ResNet50 達到了 77.5% 的 top-1 識別率。這是目前在 ResNet50 模型上匯報的最高結果,超過了主流深度學習平臺所提供的模型,例如 TensorFlow、PyTorch、Caffe 等。值得注意的是,這個結果甚至超過了 101 層的殘差神經網絡模型。該模型已經開源並提供下載。
我們先從一張圖來看批歸一化 BN 遇到的瓶頸。下圖縱軸表示一個 ResNet 神經網絡模型在 ImageNet 中的圖像識別準確率(越高越好),橫軸表示訓練時更新網絡的樣本數量從大到小排列。藍色線、紅色線、和綠色線分別表示使用 Google 的 BN,Facebook 的 GN 和港中文提出的 SN 訓練模型的準確率。可以看出,當用於更新網絡的樣本數量(又稱「批量」)減小時,BN 模型的識別率急劇下降。例如批量等於 16 時,BN 模型相比 SN 模型識別率下降了 11%。當批量等於 8 時,BN 模型的圖像識別率跌至 50% 以下。
BN 導致性能下降?
BN(批歸一化)是一種歸一化方法。歸一化一般指把數據的分布變成一個均值為 0 和方差為 1 的分布。要達到此目的,BN 在進行歸一化操作時需要估計訓練數據的均值和方差。由於訓練數據量很大(ImageNet 有上百萬數據),估計這些統計量需要大量的運算。因此,這兩個統計量一般是利用一小批數據來估計的。然而,當批量較小時,例如上圖的 32,這些統計量估計不準確,導致識別率開始明顯下降。正如需要估計全校的平均分,只統計一個班級是不準確的。因此,BN 會導致性能損失。
既然 BN 在小批量當中效果變差,我們能否避免使用小批量進行訓練呢?
為什麼需要小批量學習?
原因有兩點。首先,在深度神經網絡的訓練過程中,往往需要更新數億級別的參數,而在很多實際應用中需要訓練的圖片大小又很大(例如 1000x1000 以上),使得能夠放到 GPU 中的圖片數量很少(通常小於 2)。這種情況經常出現在物體檢測、場景分割、和視頻識別等任務當中,它們在自動駕駛和視頻監控中有廣泛應用。然而,如前面的圖所示,網絡訓練時的樣本數量減少(小批量),使訓練變得困難。總體來說,批量越小,訓練過程越不穩定。Facebook 提出的組歸一化(GN)正是為了解決上述問題。
圖為物體檢測與分割示例
其次,深度神經網絡一般使用大量 GPUs 進行訓練。訓練方法可以分為兩大類:同步訓練與異步訓練。同步訓練代表網絡參數的更新需要在多個 GPU 當中同步;異步訓練是一種去中心化的方法。它比同步訓練的好處在於,網絡參數的更新可以在每個 GPU 當中單獨進行,不需要同步。然而,由於網絡佔用大量內存,單獨一塊 GPU 只能放下少量訓練樣本,妨礙了參數在一塊 GPU 中更新,使得異步訓練無法進行。
從上述原因得知,一種對批量不敏感的技術是非常必要的。
港中文的解決方案
為了解決上述問題,港中文團隊提出了自適配歸一化 SN(Switchable Norm)。它統一了現有的歸一化方法,例如批歸一化 BN,實例歸一化 IN(Instance Norm 在 16 年提出並在 arXiv:1607.08022 公開),層歸一化 LN(Layer Norm 由 Geoffrey Hinton 等在 16 年提出在 arXiv:1607.06450 公開),和組歸一化 GN 等。SN 允許為神經網絡中不同的歸一化層自動學習不同的歸一化操作。與強化學習不同,SN 使用可微分學習,使得選擇歸一化操作能夠和優化網絡參數同時進行,保證優化效率的同時還保持高性能。下圖為自適配歸一化的直觀解釋。它通過學習不同的歸一化方法的權重係數來選擇不同的操作。
如何解決 BN 的問題
下圖左邊表示一個神經網絡的子網絡,而一個完整的神經網絡往往由多達幾十個子網絡構成。前面提到的 ResNet 和 DenseNet 也可以歸為這種結構。在一個子網絡裡,可以有多個 BN 層。換句話說,一個神經網絡可以有上百個 BN 層。
我們稱一個 BN 所在的層為一個歸一化層。那麼為什麼在主流神經網絡結構中,所有的歸一化層都只採用 BN 呢?
目前幾乎所有的神經網絡的全部歸一化層都使用同樣的歸一化操作。這是因為手工為每一個歸一化層指定操作需要進行大量的實驗驗證,耗時耗力。
由於這個問題,使得深度學習系統達不到最優性能。直觀地說,港中文團隊相信歸一化操作應該可以通過學習得到;不同的歸一化層應該允許自由的使用不同的歸一化操作。如上圖右邊所示,子網絡中的所有歸一化層會使用 SN。它能夠為每一個歸一化層學習歸一化策略,可能是 BN,IN,LN,GN 或者它們的組合。
SN 學習不同歸一化策略的組合,避免了 BN 對小批量特別敏感的問題。
如最前面的圖所示,當批量逐漸減小時,SN 的識別率保持最優。
SN 與 GN 的比較
組歸一化 GN 是由 Facebook 何愷明等最新提出的歸一化方法。該方法為了解決批歸一化 BN 在小批量優化時性能下降明顯的問題。直觀地說,批量越小,訓練越不穩定,訓練得到的模型識別率越低。何愷明團隊通過大量的實驗驗證了 GN 的有效性:例如在 ImageNet 當中,GN 在小批量條件下獲得的識別率遠遠高於 BN 的識別率。但是,在正常批量條件下,GN 的識別率並不如 BN。
如前面所說,SN 是為了解決在神經網絡不同的歸一化層中自動學習歸一化操作而提出的。港中文團隊發現,SN 與 GN 一樣能夠在小批量條件下獲得高識別率。並且,SN 在正常批量條件下超過 GN,甚至還超過了 BN。例如,在批量為 256 的情況下,用 SN 來訓練的 ResNet50 在 ImageNet 的精度可以達到 77.5% 以上,而用 GN 和 BN 來訓練的網絡的精度分別為 75.9% 和 76.4%。
結果
港中文團隊驗證了自適配歸一化 SN 在多個視覺任務中的性能,包括圖像識別、物體檢測、物體分割、視頻理解、圖像風格化和循環神經網絡如神經網絡結構搜索。下面以物體檢測為例,比較 SN,BN 和 GN 在 Microsoft COCO 物體檢測數據集中的檢測結果。
與圖像分類不同,對於物體檢測和分割任務,每個 GPU 中圖片的數量通常只有 1 到 2 張。在這種情況下,BN 的效果會明顯下降。而 SN 能夠有效拓展到不同的檢測模型,以及不同的深度學習平臺上。下表展示了 SN 在 Mask R-CNN 和 Faster R-CNN 上的結果,可以看到 SN 在各項精度指標下保持了領先。
原論文同時展示了 SN 在圖像風格化,以及網絡結構搜索上的效果,詳情可見論文。
相關文獻:
1. BN: S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015
2. GN: Y. Wu and K. He. Group normalization. arXiv:1803.08494, 2018
3. SN:Ping Luo, Jiamin Ren, Zhanglin Peng,Differentiable Learning-to-Normalize via Switchable Normalization,arXiv:1806.10779,2018