(ML)ResNeXt : Aggregated Residual Transformations for Deep Neural Networks

YEN HUNG CHENG
12 min readSep 10, 2023

--

source

GitHub

Abstract

我們提出了一種用於圖像分類的簡單且高度模組化的網絡架構。我們的網絡通過重複一個構建塊來構造,該塊匯聚了一組具有相同拓撲的變換。我們的簡單設計產生了一個均質的、多分支的架構,只有很少的超參數需要設置。

這種策略引入了一個我們稱之為「基數」cardinality(變換集合的大小)的新維度,作為除深度(depth)和寬度(width)之外的一個重要因素。

在ImageNet-1K 數據集上,我們通過實驗證明,即使在保持複雜性的受限條件下,增加基數能夠提高分類準確性。此外,當增加容量時,增加基數比增加深度或寬度更加有效。我們的模型被稱為ResNeXt。

Introduction

視覺識別(Visual Recognition)領域從「特徵工程」向「網絡工程」轉變。傳統的手工設計特徵被深度學習網絡從大規模數據中自主學習得到的特徵所取代。為了設計更好的網絡架構學習表示, VGG-Nets 和 ResNets 採用堆疊相同形狀的構建塊的簡單有效策略,減少超參數選擇,深度成為關鍵維度。這種簡單規則可以降低過度調參的風險,並在各種視覺和非視覺任務中顯示出強大的泛化能力。

與 VGG-Nets 不同, Inception 模型家族展示了精心設計的拓撲結構在低計算複雜度下可以實現滿意的準確率。Inception 模型的一個關鍵共同特徵是分割-變換-合併策略。輸入被分割成幾個低維嵌入,通過專門的濾波器變換,然後合併。這種架構的表示能力接近大而密集的層,但計算量明顯減少。

source

本文提出了一種簡單的架構,既采用了 VGG/ResNets 的重複層策略,也以簡單可擴展的方式利用了分割-變換-合併策略。一個模塊執行一組變換,每個變換在低維嵌入上進行,輸出相加聚合。使用相同拓撲結構的變換可以任意擴展,而不需要特殊設計。這種簡化的模型與 Inception-ResNet 模塊類似,都連接多條路徑,但是路徑共享相同拓撲,便於擴展。它也可以看作分組卷積的變體,將效率和效果兼顧。

Related Work

Multi-branch convolutional networks

Inception 模型是成功的多分支架構之一,每個分支都經過精心定制。該模型的主要思想是在不同的分支中使用不同大小的卷積核,從而捕捉不同尺度的特徵。這有助於模型更好地適應不同大小的物體或特徵。

ResNet(殘差網路)可以被視為兩個分支的網路,其中一個分支是恆等映射(identity mapping)。這種結構通過引入跨層連接(跳躍連接)來解決梯度消失問題,從而使得訓練更深的網路成為可能。

深度神經決策森林是一種呈樹狀模式的多分支網路,其中每個分支都有學習到的分割函數。這些分割函數將輸入數據分成不同的類別或子空間,從而實現複雜的決策過程。

Grouped convolutions

AlexNet 提出使用分組卷積 (group convolution) 的動機,是為了將模型分佈在兩個 GPU 上進行並行訓練,以緩解單個 GPU 記憶體不足的問題。

具體做法為將輸入特徵圖分成多個組,然後每個組進行獨立的卷積操作。這種方法可以降低模型的計算複雜度,同時也可以在一些特殊情況下提供額外的平行處理能力。

Compressing convolutional networks

壓縮卷積網絡是一種廣泛採用的技術,目的在於減少深度卷積網絡中的冗餘資訊,進而加速運算和壓縮模型大小。其中分解操作是一種常用的手段,可以在空間維度或通道維度上分解卷積核,從而降低模型參數量和計算量。分解有助於減少深層卷積網絡的冗餘資訊。

Ensembling

集成(Ensembling)是一種有效的方法,通常用於提高準確性,其原理是將一組獨立訓練的網絡進行平均,這在識別競賽中被廣泛採用。Veit 等人將單個ResNet解釋為較淺網絡的集成,這是由 ResNet 的加法行為所導致的。我們的方法利用加法來聚合一組變換。

Method

1. Template

我們的網絡由一堆殘差塊組成。 這些塊具有相同的拓撲結構,並且
遵循受 VGG/ResNets 啟發的兩個簡單規則:

(1)(i)如果產生相同尺寸的空間地圖,則這些塊共享相同的超參數(寬度和過濾器尺寸),以及(ii)每次空間地圖被降採樣2倍時,塊的寬度會乘以2倍。

(2) 確保所有塊的計算複雜性(以FLOP,即浮點運算的次數,來衡量)大致相同。

source

左側是 ResNet-50,右側是具有 32×4d 模板的 ResNeXt-50。在模型的結構中,方括號內表示殘差塊的形狀,而方括號外則表示在每個階段上堆疊的塊的數量。”C=32"表示使用32組分組卷積。這兩個模型之間的參數數量和計算複雜度(以FLOP為度量)相似。

2. Revisiting Simple Neurons

神經網絡中的基本單元,即神經元,執行的操作是內積,也就是加權和。這個操作在全連接層和卷積層中都被廣泛使用。內積可以被視為一種聚合轉換,將輸入的數據進行加權總和來獲得輸出:

source

其中 x = [x1, x2, …, xD] 是神經元的 D 通道輸入向量,wi 是第 i 個通道的濾波器權重。

這種操作(通常包括一些輸出非線性)被稱為“神經元”:

source

上述操作可以改寫為以下組合:

  1. 分割: 首先,輸入向量 x 被切分成一系列低維的嵌入,每個嵌入 xi 都是一個一維的子空間。
  2. 轉換: 接下來,對這些低維表示進行變換。在這裡,上述操作中的變換是簡單的縮放,即將每個子空間 xi 乘以對應的權重 wi。
  3. 聚合: 最後,將所有嵌入經過變換後的結果聚合在一起,這是通過對所有嵌入的變換結果進行加總而實現的,表示為 PD。

3. Aggregated Transformations

試圖用一個更通用的函數來替換單個神經元的基本變換(wixi),這個函數本身也可以是一個網絡。與Network-in-Network通過增加網絡深度來擴展網絡不同,作者提出的“Network-in-Neuron”是沿著一個新的維度進行擴展。作者正式將這種聚合變換定義為一個通式。整體思想是將傳統的單層變換擴展為小型子網絡架構:

source

聚合變換中的Ti(x)可以是任意函數,其作用與單個神經元類似,是將x投影到低維嵌入空間然後轉換。C 是要聚合的變換集合的大小,作者稱之為基數(cardinality)。基數 C 與網絡寬度維度 D 類似,但 C 可以是任意數值。文章認為網絡寬度維度與簡單變換 (內積) 數量相關,而基數維度控制更複雜變換的數量。實驗證明基數維度是必要的,且可以比網絡寬度和深度維度更有效。

加入殘差的 function :

source

下圖展示了三種等價的 ResNeXt 塊結構,並且這些結構產生相同的結果:

(a) 是上面圖1中的右側ResNeXt結構,即聚合的殘差轉換。

(b) 類似於Inception-ResNet結構,首先使用 1x1 卷積進行降維,然後再接一個3x3卷積層。不同的是,在這個結構中使用了相同的卷積層,而不是像Inception-ResNet中那樣使用不同的分支。

(c) 使用了分組卷積,將128個通道數分成32組,然後對每組進行3x3卷積運算,最後將結果進行合併。

source

我們注意到,這些改寫只在塊的深度 ≥3 時才會產生非平凡的拓撲結構。

如果 Block 的深度 = 2,這些改寫將導致一個寬而密集的模塊,而不是一個有趣的拓撲結構。

depth = 2

4. Model Capacity

在實驗中會在維持模型複雜度和參數量不變的情況下檢驗不同基數C的值。這樣可以更好地反映模型的固有表現能力。為了最小化對其他超參數的影響,作者選擇通過調整瓶頸層的寬度來平衡參數量,因為這可以隔離塊的輸入輸出。這種策略不改變其他超參數,有助於專注檢驗基數的影響。

source

原始 ResNet 瓶頸塊 有 256 · 64 + 3 · 3 · 64 · 64 + 64 · 256 ≈ 70k 個參數
成比例的 FLOP(在相同的特徵圖大小上)。

ResNeXt 中的模板有:C·(256·d+3·3·d·d+d·256) 個參數,當 C = 32 且 d = 4,也約 ≈ 70k 個參數。

Implementation details

  1. 遵循已發表的 ResNet 代码實現
  2. 使用 ImageNet 數據集,224x224 隨機裁剪圖像
  3. 使用 Identity 對應,除了維度擴增的層使用 1x1 卷積投影
  4. 使用 stride 為 2 的 3x3 卷積下採樣
  5. 在 8 個 GPU 上訓練,batch size 為 32
  6. 使用權重衰減和動量衰減
  7. 從 0.1 學習率開始,分 10 次衰減學習率
  8. 使用 ResNet 權重初始化方法
  9. 模型使用分組卷積形式實現,BatchNorm 後接 ReLU
  10. 比較了不同形式,發現分組卷積形式最簡潔高效

Experiments

Experiments on ImageNet-1K

Cardinality vs. Width

source
source

與 ResNet-50 相比,ResNeXt-50(32×4d)的驗證誤差為 22.2%,即 1.7%
低於 ResNet 基線的 23.9%。

基數 C 在保持複雜性的同時從 1 增加到 32,誤差率不斷降低。 此外,32×4d ResNeXt 還與 ResNet 相比,訓練誤差要低得多,這表明收益並非來自正則化。

Removing shortcuts

source

在移除 shortcut connections 後,可以發現 ResNeXt-50 會使誤差增加 3.9 個百分點,達到 26.1%。而 ResNet-50 對應的情況要差得多 (31.2%)。

ImageNet-5K experiments

source
source

在更大的 ImageNet-5K 上進行了實驗,結果顯示在維持複雜度不變的情況下,ResNeXt相比ResNet可以給出更低的誤差。這證明了 ResNeXt 模型的更強表徵能力。

另外,在 ImageNet-5K 類數據上預訓練的模型,在後續在 ImageNet-1K 類驗證集上的表現與直接在 ImageNet-1K 類上預訓練的模型相當,而前者訓練任務更具挑戰性。這是一個有前景的結果,證明了模型的表徵能力。

Experiments on CIFAR

source
source

在CIFAR數據集上的實驗結果。通過與baseline比較,作者發現在維持模型複雜度不變的情況下,增加基數C更有效地提升性能,優於增加瓶頸層寬度。作者的模型與當時最好的Wide ResNet性能相當,但模型規模更小。在CIFAR-10和CIFAR-100上都取得了當時最佳的結果。實驗再次證明了增加基數這一維度對提升表徵能力是有效的。

Experiments on COCO object detection

source

作者將ResNet/ResNeXt應用在Faster R-CNN框架中進行檢測。在50層的基線上,ResNeXt在不增加複雜度的情況下提升了AP指標。這再次驗證了ResNeXt的有效性。最近Mask R-CNN採用ResNeXt也取得了當時最佳的實例分割與物體檢測結果。實驗表明ResNeXt架構具有良好的泛化性,不僅對圖像分類有效,也能提升檢測任務的性能。

Conclusion

ResNeXt 提出了一種增加模型複雜度的方法,即通過引入基數(cardinality)。通過增加基數,即同一層的多個分支或路徑,ResNeXt 可以在不增加每個分支的寬度或深度的情況下增加模型的複雜度,從而提高模型的表現能力。

在 ImageNet、CIFAR 及 COCO 數據集上的實驗表明,在維持參數量不變的情況下增加基數,可以持續地改善模型的表徵能力。ResNeXt 顯著優於ResNet基線,達到了當時最佳水平。

--

--