ResNeXt
ResNeXt(Xie、Girshick、Dollar、Tu 與 He,2017)藉由加入一個新的、正交的方式來讓網路更強大,從而精煉了 ResNet。擴展網路的兩個經典軸是深度(更多層)與寬度(每層更多通道)。ResNeXt 引入了第三個軸,它稱之為基數(cardinality):每個區塊內部平行變換分支的數目。它不是讓單一瓶頸做完所有工作,而是把計算分裂成許多(例如 32 個)相同、較窄的分支,每個執行一個小型瓶頸變換,然後在加上殘差捷徑之前把它們的輸出相加。論文一個引人注目的經驗發現是:在固定的計算預算下,增加基數比加深或加寬網路更為有效。
這與 Inception 模組是同一套「分裂—變換—合併」哲學,但有一個關鍵簡化:在 Inception 中每個分支都不同、都是人工設計的,而在 ResNeXt 中每個分支都相同,因此一個區塊僅由兩個數字定義——基數與每分支寬度。這種一致性讓 ResNeXt 易於設計、擴展與推理,同時保留多分支的好處。概念上,每個區塊計算的是同一輸入的許多聚合變換之和,這正是論文題為「聚合殘差變換」(Aggregated Residual Transformations)的原因。
優雅的實作細節是:一組相同的平行分支恰好就是一個分組卷積(grouped convolution)。分組卷積把輸入通道分割成 G 組,各組分別卷積,這在計算上與執行 G 個獨立分支再串接完全相同,所以 ResNeXt 區塊可以實作成夾在 1x1 卷積之間的單一高效分組 3x3 卷積。這讓分組卷積再度成為主流工具(它在 AlexNet 中只是作為 GPU 記憶體的權宜之計而出現),而基數的想法影響了後來的高效設計。ResNeXt 骨幹在偵測與分割系統中變得受歡迎,因為它「每 FLOP 準確率」的優勢在那裡很重要。
留意這筆帳:ResNeXt 區塊藉由加寬瓶頸同時把它分成數組,讓總 FLOPs 與參數量大致與可比的 ResNet 區塊相當,所以準確率的提升來自基數本身,而非花了更多計算。在固定預算下,基數與寬度彼此權衡。