FAIR何愷明等人提出組歸一化:替代批歸一化,不受批量大小限制
文章選自arXiv,作者:吳育昕、何愷明,機器之心編譯。
自 Facebook 在 2017 年 6 月發布 1 小時訓練 ImageNet 論文以來,很多研究者都在關注如何使用並行訓練來提高深度學習的訓練速度,其研究所使用的批尺寸也呈指數級上升。近日,FAIR 研究工程師吳育昕、研究科學家何愷明提出了批歸一化(Group Normalization)方法,試圖以小批尺寸實現快速神經網路訓練,這種方法對於硬體的需求大大降低,並在實驗中超過了傳統的批歸一化方法。
批歸一化(Batch Norm/BN)是深度學習中非常有效的一個技術,極大地推進了計算機視覺以及之外領域的前沿。BN 通過計算一個(迷你)批量中的均值與方差來進行特徵歸一化。眾多實踐證明,它利於優化且使得深度網路易於收斂。批統計的隨機不確定性也作為一個有利於泛化的正則化項。BN 已經成為了許多頂級計算機視覺演算法的基礎。
儘管取得了很大的成果,BN 也會因為歸一不同批尺寸的獨特行為而有缺點。特別是,BN 需要用到足夠大的批大小(例如,每個工作站採用 32 的批量大小)。一個小批量會導致估算批統計不準確,減小 BN 的批大小會極大地增加模型錯誤率(圖 1)。結果導致,如今許多模型都使用較大的批訓練,它們非常耗費內存。反過來,訓練模型時對 BN 效力的極度依賴性阻礙了人們用有限內存探索更高容量的模型。
計算機視覺任務(包括檢測、分割、視頻識別和其他基於此的高級系統)對批大小的限制更加嚴格。例如,Fast/er 和 Mask R-CNN 框架 [12, 46, 18] 使用的批大小為 1 或 2 張圖像,為了更高的解析度,其中 BN 通過變換為線性層而被「固定」[20];在 3D 卷積視頻分類中 [59, 6],時空特徵的出現導致時間長度和批大小之間的權衡。BN 的使用通常要求這些系統在模型設計和批大小之間作出妥協。
本文提出了組歸一化(Group Normalization,GN)作為批歸一化(BN)的替代。作者發現很多經典的特徵例如 SIFT[38] 和 HOG[9] 是分組的特徵並涉及分組的歸一化。例如,一個 HOG 向量是多個空間單元的輸出,其中每個單元由一個歸一化的方向直方圖表徵。類似地作者提出了 GN 作為層將通道分組並在每個組中將特徵歸一化(見圖 2)。GN 並沒有利用批量的維度,它的計算是獨立於批量大小的。
GN 在大範圍的批量大小下都能表現得很穩定(見圖 1)。當批量大小為 2 個樣本時,在 ImageNet 訓練的 ResNet-50 上,相比於 BN 的對應變體,GN 獲得的誤差率要小 10%。在常規的批量大小設置下,GN 獲得的性能和 BN 相當(相差約 0.5%),並超越了其它的歸一化變體 [3,60,50]。此外,雖然批量大小可能被改變,而 GN 的設置則可以從預訓練階段遷移到微調階段。在 COCO 目標檢測和分割任務的 Mask R-CNN 上,以及在 Kinetics 視頻分類任務的 3D 卷積網路上,相比於 BN 的對應變體,GN 都能獲得提升或者超越的結果。GN 在 ImageNet、COCO 和 Kinetics 上的有效性表明 GN 是 BN 的有力競爭者,而 BN 在過去一直在這些任務上作為主導的方法。
目前已有的優化方法包括層歸一化(LN)[3] 和實例歸一化(IN)[60](如圖 2 所示),它們也避免了在批量維度上的歸一化。這些方法對於訓練序列模型(RNN/LSTM)或生成模型(GAN)很有效。本文的實驗研究表明,LN 和 IN 在視覺識別上的成功率都是很有限的,而 GN 則能獲得更好的結果。相反地,GN 也許還能替代 LN 和 IN,在序列或生成模型上得到應用。這已經超越了本文的內容,但這些方向都是值得探索的。
組歸一化
視覺表徵的各個通道其實並不完全獨立。SIFT [38]、HOG [9] 和 GIST [40] 的經典特徵都設計為按分組來表徵,其中每一組通道由一些直方圖(histogram)構成。這些特徵通常通過在每個直方圖或每個方向上執行分組歸一化而得到處理。VLAD [29] 和 Fisher Vectors (FV) [43] 等高級特徵同樣也是分組的特徵,其中每一組特徵可以認為是關於集群(cluster)計算的子向量。
類似的,我們沒必要將深度神經網路視為非結構化的向量。例如,對於網路的第一個卷積層 conv1,期望卷積核和其水平翻轉在自然圖像上呈現相似的卷積核反饋分布是合理的。如果 conv1 正好近似學習到這一對卷積核,或將水平翻轉與其它轉換設計到架構中 [11, 8],那麼我們可以將這些卷積核的對應通道一同歸一化。
神經網路的較高層級會有更加抽象的特徵,它們的行為也變得不那麼直觀。然而,除了方向(SIFT [38]、HOG [9] 或 [11, 8])外,還有很多可以導致分組的因素,例如頻率、形狀、照明和紋理等。此外,它們的係數可以相互獨立。實際上,神經科學中廣泛接受的計算模型是在所有細胞反饋中執行歸一化 [21, 51, 54, 5],「具有各種感受野中心(覆蓋視覺範圍)和各種時空頻率調諧」(p183, [21]);這不僅發生在初級視覺皮層,同樣可以發生在「整個視覺系統」[5]。受到這些研究工作地啟發,我們為深度神經網路提出了一般分組歸一化方法。
實現
GN 可以通過 PyTorch [41] 和 TensorFlow [1] 中的幾行代碼輕鬆實現,二者均支持自動微分。圖 3 是基於 TensorFlow 的代碼。實際上,我們僅需要指定均值和方差的計算方式,恰當的坐標軸由歸一化方法定義。
實驗結果
圖 6:VGG-16 上 conv5 3 輸出(在歸一化和 ReLU 之前)的演進特徵分布,以 {1, 20, 80, 99} 百分比位置的返回值進行結果展示。右側表格顯示了 ImageNet 驗證誤差(%)。模型是以 32 張圖片/GPU 的吞吐量進行訓練的。
表 4:在 COCO 數據集上的目標檢測和分割結果,使用 Mask R-CNN(ResNet-50 C4)。BN*表示 BN 被凍結。
表 5:在 COCO 數據集上的目標檢測和分割結果,使用 Mask R-CNN(ResNet-50 FPN 以及 4conv1fc 邊框)。BN*表示 BN 被凍結。
圖 7:Kinetics 中,輸入長度為 32 幀的誤差曲線。FAIR 的研究人員展示了 ResNet-50 I3D 分別應用 BN(左側)和 GN(右側)的驗證誤差率,批量大小為 8 和 4 clips/GPU。實驗監控的驗證誤差率是通過和訓練集相同的數據增強得到的 1-clip 誤差率。
論文:Group Normalization
論文鏈接:https://arxiv.org/abs/1803.08494
批歸一化(BN)是深度學習發展史中的一項里程碑技術,使得大量神經網路得以訓練。但是,批量維度上的歸一化也衍生出一些問題——當批量統計估算不準確導致批量越來越小時,BN 的誤差快速增大,從而限制了 BN 用於更大模型的訓練,也妨礙了將特徵遷移至檢測、分割、視頻等計算機視覺任務之中,因為它們受限於內存消耗,只能使用小批量。在本論文中,我們提出了作為批歸一化(BN)簡單替代的組歸一化(GN)。GN 把通道分為組,並計算每一組之內的均值和方差,以進行歸一化。GN 的計算與批量大小無關,其精度也在各種批量大小下保持穩定。在 ImageNet 上訓練的 ResNet-50 上,當批量大小為 2 時,GN 的誤差比 BN 低 10.6%。當使用經典的批量大小時,GN 與 BN 相當,但優於其他歸一化變體。此外,GN 可以自然地從預訓練階段遷移到微調階段。在 COCO 的目標檢測和分割任務以及 Kinetics 的視頻分類任務中,GN 的性能優於或與 BN 變體相當,這表明 GN 可以在一系列不同任務中有效替代強大的 BN;在現代的深度學習庫中,GN 通過若干行代碼即可輕鬆實現。
推薦閱讀:
TAG:人工智慧 | 深度學習DeepLearning | 計算機視覺 |