論文遭質疑怎麼辦?大神何愷明現身教學
【新智元導讀】ResNet原始結果無法復現?大神何愷明的經典之作受到了網友質疑,不過何愷明本人現身解答之後,讓真理越辯越明。
大神何愷明受到了質疑。
今天,Reddit 上一位用戶對何愷明的ResNet提出質疑,他認為:
何愷明 2015 年的原始殘差網路的結果沒有被複現,甚至何愷明本人也沒有。
網友稱,他沒有發現任何一篇論文復現了原始 ResNet 網路的結果,或與原始殘差網路論文的結果進行比較,並且所有的論文報告的數字都比原始論文的更差。
論文中報告的 top1 錯誤率的結果如下:
- ResNet-50 @ 20.74
- resnet - 101 @ 19.87
- resnet - 152 @ 19.38
何愷明等人在2015年提出ResNet之後,ResNet很快成為計算機視覺最流行的架構之一,這篇論文已經被引用了超過20000次。
不過,網友稱,DenseNet (https://arxiv.org/abs/1608.06993, 3000 + 引用) 和 Wide ResNets (https://arxiv.org/abs/1605.07146, ~1000 引用) 都沒有使用這個結果。甚至在何愷明最近的一篇論文中,也沒有使用這個結果。
按理說,何愷明這篇論文應該是這個領域被引用最多的論文之一,原始 ResNet 的結果真的沒有被複現出來嗎?在繼續討論之前,讓我們先來回顧一下ResNet的思想,以及它之所以強大的原因。
重新審視 ResNet:計算機視覺最流行的架構之一
2015 年,ResNet 大大吸引了人們的眼球。實際上,早在 ILSVRC2012 分類競賽中,AlexNet 取得勝利,深度殘差網路(deep Residual Network)就成為過去幾年中計算機視覺和深度學習領域最具突破性的工作。ResNet 使得訓練深達數百甚至數千層的網路成為可能,而且性能仍然優異。
由於其表徵能力強,ResNet 在圖像分類任務之外的許多計算機視覺應用上也取得了巨大的性能提升,例如對象檢測和人臉識別。
自 2015 年以來,許多研究對 ResNet 架構進行了調整和改進。其中最著名的一些 ResNet 變體包括:
- 何愷明等人提出的 ResNeXt
- 康奈爾大學、清華大學和 Facebook 聯合提出的 DenseNet
- 谷歌 MobileNet
- 孫劍團隊 ShuffleNet
- 顏水成團隊的雙通道網路 DPN
- 最近南開大學、牛津大學等提出的 Res2Net
- ……
那麼 ResNet 的核心思想是什麼呢?
根據泛逼近定理(universal approximation theorem),如果給定足夠的容量,一個單層的前饋網路就足以表示任何函數。但是,這個層可能是非常大的,而且網路容易過擬合數據。因此,研究界有一個共同的趨勢,就是網路架構需要更深。
從 AlexNet 的提出以來,state-of-the art 的 CNN 架構都是越來越深。雖然 AlexNet 只有 5 層卷積層,但後來的 VGG 網路和 GoogLeNet 分別有 19 層和 22 層。
但是,如果只是簡單地將層堆疊在一起,增加網路的深度並不會起太大作用。這是由於難搞的梯度消失(vanishing gradient)問題,深層的網路很難訓練。因為梯度反向傳播到前一層,重複相乘可能使梯度無窮小。結果就是,隨著網路的層數更深,其性能趨於飽和,甚至開始迅速下降。
網路深度增加導致性能下降
在 ResNet 之前,已經出現好幾種處理梯度消失問題的方法,例如,2015 年 C. Szegedy 等人提出的 GoogLeNet 在中間層增加一個輔助損失(auxiliary loss)作為額外的監督,但遺憾的是,沒有一個方法能夠真正解決這個問題。
ResNet 的核心思想是引入一個 「身份捷徑連接」(identity shortcut connection),直接跳過一層或多層,如下圖所示:
一個殘差塊
何愷明等人於 2015 年發表的論文《用於圖像識別的深度殘差學習》(Deep Residual Learning for Image Recognition)中,認為堆疊的層不應該降低網路的性能,因為我們可以簡單地在當前網路上堆疊身份映射(層不處理任何事情),並且所得到的架構性能不變。這表明,較深的模型所產生的訓練誤差不應比較淺的模型的誤差更高。作者假設讓堆疊的層擬合一個殘差映射(residual mapping)要比讓它們直接擬合所需的底層映射更容易。上面的殘差塊(residual block)顯然仍讓它做到這點。
ResNet 的架構
那麼這次質疑「不能復現」的結果是什麼呢?討論點集中在原始論文中的表3和表4:
表3:ImageNet驗證集上10-crop測試的錯誤率
表4:ImageNet驗證集上sigle-model的錯誤率結果
由於其結果優異,ResNet 迅速成為各種計算機視覺任務最流行的架構之一。
新智元昨天發表的文章《對 ResNet 本質的一些思考》,對 ResNet 做了較深入的探討。作者表示:
不得不讚歎 Kaiming He 的天才,ResNet 這東西,描述起來固然簡單,但是對它的理解每深一層,就會愈發發現它的精妙及優雅,從數學上解釋起來非常簡潔,非常令人信服,而且直切傳統痛點。
ResNet 本質上就幹了一件事:降低數據中信息的冗餘度。
具體說來,就是對非冗餘信息採用了線性激活(通過 skip connection 獲得無冗餘的 identity 部分),然後對冗餘信息採用了非線性激活(通過 ReLU 對 identity 之外的其餘部分進行信息提取 / 過濾,提取出的有用信息即是殘差)。
其中,提取 identity 這一步,就是 ResNet 思想的核心。
何愷明回應ResNet結果不能復現
再回到文章開頭的討論:原始 ResNet 的結果真的無法復現嗎?
針對網友的質疑,不少人在帖子下回復,可以總結為兩個方面:
- ImageNet 有多種測試策略,後來的論文在復現ImageNet時採用的是當時流行的策略,而非 ResNet 原始論文的策略;
- 後來的論文在訓練時採用了一些與原始論文不同的優化技巧,使得結果甚至比原始 ResNet 論文的結果更好
何愷明本人也第一時間作出回復:
ImageNet 上有幾種測試策略:(i) single-scale, single-crop 測試; (ii) single-scale, multi-crop 或 fully-convolutional 測試;(iii) multi-scale, multi-crop 或 fully-convolutional 測試;(iv) 多個模型集成。
在這些設置下,這篇論文的 ResNet-50 模型的 top-1 錯誤率為:(i) 24.7% (1-crop,如我的 GitHub repo 所展示), (ii) 22.85% (10-crop,論文中的表 3),(iii) 20.74% (full -conv, multi-scale, 論文中的 Table 4)。論文中使用的 (ii) 和 (iii) 的描述見第 3.4 節。
當時是 2015 年,(ii) 和 (iii) 是最流行的評估設置。策略 (ii) 是 AlexNet 的默認值 (10-crop), (ii) 和 (iii) 是 OverFeat、VGG 和 GoogleNet 中常用的設置。Single-crop 測試在當時並不常用。
2015/2016 年後,Single-crop 測試開始流行。這在一定程度上是因為社區已經變成一個對網路精度的差異很感興趣的環境 (因此 single-crop 足以提供這些差異)。
ResNet 是近年來被複現得最多的架構之一。在我的 GitHub repo 中發布的 ResNet-50 模型是第一次訓練的 ResNet-50,儘管如此,它仍然十分強大,並且在今天的許多計算機視覺任務中仍然是預訓練的骨幹。我認為,ResNet 的可復現性經受住了時間的考驗。
Reddit用戶ajmooch指出:
你忘記了測試時數據增強 (test-time augmentation, TTA)。表 4 中的數字來自於不同 scales 的 multi-crop 的平均預測 (以計算時間為代價優化精度),而其他論文中的數字是 single-crop 的。
表 3 列出了 10-crop 測試的數據。表 4 的數字更好,所以它肯定不是 single crop 的數字。我的猜測是 n-crop,可能還包括其他增強,比如翻轉圖像。
這個帖子讀起來有點像指責,我不喜歡。ResNet 因為在 ImageNet 測試集上表現出色而著名,而 ImageNet 測試集隱藏在伺服器上,他們沒有辦法在那裡處理這些數字。ResNet 是我能想到的被複現最多的架構之一。它顯然是合理的。在開始批評別人之前,我們應該先了解我們在批評什麼。
谷歌大腦工程師hardmaru也回復道:
在何愷明加入 FAIR 之前, FAIR Torch-7 團隊獨立復現了 ResNet:https://github.com/facebook/fb.resnet.torch
經過訓練的 ResNet 18、34、50、101、152 和 200 模型,可供下載。我們包括了使用自定義數據集,對圖像進行分類並獲得模型的 top5 預測,以及使用預訓練的模型提取圖像特徵的說明。
他們的結果如下表:
經過訓練的模型比原始 ResNet 模型獲得了更好的錯誤率。
但是,考慮到:
這個實現與 ResNet 論文在以下幾個方面有所不同:
- 規模擴大 (Scale augmentation):我們使用了 GooLeNet 中的的規模和長寬比,而不是 ResNet 論文中的 scale augmentation。我們發現這樣的驗證錯誤更好。
- 顏色增強 (Color augmentation):除了在 ResNet 論文中使用的 AlexNet 風格的顏色增強外,我們還使用了 Andrew Howard 提出的的亮度失真 (photometric distortions)。
- 權重衰減 (Weight decay):我們將權重衰減應用於所有權重和偏差,而不僅僅是卷積層的權重。
- Strided convolution:當使用瓶頸架構時,我們在 3x3 卷積中使用 stride 2,而不是在第一個 1x1 卷積。
何愷明的 GitHub 有 Caffe 模型訓練的原始版本和更新版本的 resnet,而且報告的也不同:
(https://github.com/KaimingHe/deep-residual-networks/blob/master/README.md)
也許他的 GitHub 報告中的方法與論文不一致,但為了可重複性而不使用相同的方法也有點奇怪。
也許 arxiv 或 repo 應該使用一致的數字進行更新,或者更好的是,使用多次獨立運行的平均值。
但是隨著 SOTA 的改進和該領域的發展,其他人花費資源來產生舊的結果的動機就更少了。人們寧願使用他們的資源來複現當前的 SOTA 或嘗試其他新想法。
許多人引用它是因為它的概念本身,而不是為了報告排行榜分數。
※夢碎月球!谷歌月球挑戰明星航天器墜毀,離月球僅150米!
※如何一次上完北大、清華、浙大、中科院?請看Github課程共享計劃
TAG:新智元 |