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+引用)和WideResNets(https://arxiv.org/abs/1605.07146,~1000引用)都沒有使用這個結果。甚至在何愷明最近的一篇論文中,也沒有使用這個結果。
按理說,何愷明這篇論文應該是這個領域被引用最多的論文之一,原始ResNet的結果真的沒有被復現出來嗎?在繼續討論之前,讓我們先來回顧一下ResNet的思想,以及它之所以強大的原因。
重新審視ResNet:計算機視覺最流行的架構之一
2015年,ResNet大大吸引了人們的眼球。實際上,早在ILSVRC2012分類競賽中,AlexNet取得勝利,深度殘差網絡(deepResidualNetwork)就成為過去幾年中計算機視覺和深度學習領域最具突破性的工作。ResNet使得訓練深達數百甚至數千層的網絡成為可能,而且性能仍然優異。
由于其表征能力強,ResNet在圖像分類任務之外的許多計算機視覺應用上也取得了巨大的性能提升,例如對象檢測和人臉識別。
自2015年以來,許多研究對ResNet架構進行了調整和改進。其中最著名的一些ResNet變體包括:
何愷明等人提出的ResNeXt
康奈爾大學、清華大學和Facebook聯合提出的DenseNet
谷歌MobileNet
孫劍團隊ShuffleNet
顏水成團隊的雙通道網絡DPN
最近南開大學、牛津大學等提出的 Res2Net
……
那么ResNet 的核心思想是什么呢?
根據泛逼近定理(universalapproximationtheorem),如果給定足夠的容量,一個單層的前饋網絡就足以表示任何函數。但是,這個層可能是非常大的,而且網絡容易過擬合數據。因此,研究界有一個共同的趨勢,就是網絡架構需要更深。
從AlexNet的提出以來,state-of-theart的CNN架構都是越來越深。雖然AlexNet只有5層卷積層,但后來的VGG網絡和GoogLeNet分別有19層和22層。
但是,如果只是簡單地將層堆疊在一起,增加網絡的深度并不會起太大作用。這是由于難搞的梯度消失(vanishinggradient)問題,深層的網絡很難訓練。因為梯度反向傳播到前一層,重復相乘可能使梯度無窮小。結果就是,隨著網絡的層數更深,其性能趨于飽和,甚至開始迅速下降。
網絡深度增加導致性能下降
在ResNet之前,已經出現好幾種處理梯度消失問題的方法,例如,2015年C.Szegedy等人提出的GoogLeNet在中間層增加一個輔助損失(auxiliaryloss)作為額外的監督,但遺憾的是,沒有一個方法能夠真正解決這個問題。
ResNet的核心思想是引入一個“恒等捷徑連接”(identityshortcutconnection),直接跳過一層或多層,如下圖所示:
一個殘差塊
何愷明等人于2015年發表的論文《用于圖像識別的深度殘差學習》(DeepResidualLearningforImageRecognition)中,認為堆疊的層不應該降低網絡的性能,因為我們可以簡單地在當前網絡上堆疊identity映射(層不處理任何事情),并且所得到的架構性能不變。這表明,較深的模型所產生的訓練誤差不應比較淺的模型的誤差更高。作者假設讓堆疊的層擬合一個殘差映射(residualmapping)要比讓它們直接擬合所需的底層映射更容易。上面的殘差塊(residualblock)顯然仍讓它做到這點。
ResNet 的架構
那么這次質疑“不能復現”的結果是什么呢?討論點集中在原始論文中的表3和表4:
表3:ImageNet驗證集上10-crop測試的錯誤率
表4:ImageNet驗證集上sigle-model的錯誤率結果
由于其結果優異,ResNet迅速成為各種計算機視覺任務最流行的架構之一。
新智元昨天發表的文章《對 ResNet 本質的一些思考》,對ResNet做了較深入的探討。作者表示:
不得不贊嘆KaimingHe的天才,ResNet這東西,描述起來固然簡單,但是對它的理解每深一層,就會愈發發現它的精妙及優雅,從數學上解釋起來非常簡潔,非常令人信服,而且直切傳統痛點。
ResNet本質上就干了一件事:降低數據中信息的冗余度。
具體說來,就是對非冗余信息采用了線性激活(通過skipconnection獲得無冗余的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,如我的GitHubrepo所展示),(ii)22.85%(10-crop,論文中的表3),(iii)20.74%(full-conv,multi-scale,論文中的Table4)。論文中使用的(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是近年來被復現得最多的架構之一。在我的GitHubrepo中發布的ResNet-50模型是第一次訓練的ResNet-50,盡管如此,它仍然十分強大,并且在今天的許多計算機視覺任務中仍然是預訓練的骨干。我認為,ResNet的可復現性經受住了時間的考驗。
Reddit用戶ajmooch指出:
你忘記了測試時數據增強(test-timeaugmentation,TTA)。表4中的數字來自于不同scales的multi-crop的平均預測(以計算時間為代價優化精度),而其他論文中的數字是single-crop的。
表3列出了10-crop測試的數據。表4的數字更好,所以它肯定不是singlecrop的數字。我的猜測是n-crop,可能還包括其他增強,比如翻轉圖像。
這個帖子讀起來有點像指責,我不喜歡。ResNet因為在ImageNet測試集上表現出色而著名,而ImageNet測試集隱藏在服務器上,他們沒有辦法在那里處理這些數字。ResNet是我能想到的被復現最多的架構之一。它顯然是合理的。在開始批評別人之前,我們應該先了解我們在批評什么。
在何愷明加入FAIR之前,FAIRTorch-7團隊獨立復現了ResNet:https://github.com/facebook/fb.resnet.torch
經過訓練的ResNet18、34、50、101、152和200模型,可供下載。我們包括了使用自定義數據集,對圖像進行分類并獲得模型的top5預測,以及使用預訓練的模型提取圖像特征的說明。
他們的結果如下表:
經過訓練的模型比原始ResNet模型獲得了更好的錯誤率。
但是,考慮到:
這個實現與ResNet論文在以下幾個方面有所不同:
規模擴大(Scaleaugmentation):我們使用了GooLeNet中的的規模和長寬比,而不是ResNet論文中的scaleaugmentation。我們發現這樣的驗證錯誤更好。
顏色增強(Coloraugmentation):除了在ResNet論文中使用的AlexNet風格的顏色增強外,我們還使用了AndrewHoward提出的的亮度失真(photometricdistortions)。
權重衰減(Weightdecay):我們將權重衰減應用于所有權重和偏差,而不僅僅是卷積層的權重。
Stridedconvolution:當使用瓶頸架構時,我們在3x3卷積中使用stride2,而不是在第一個1x1卷積。
何愷明的GitHub有Caffe模型訓練的原始版本和更新版本的resnet,而且報告的也不同:
(https://github.com/KaimingHe/deep-residual-networks/blob/master/README.md)
也許他的GitHub報告中的方法與論文不一致,但為了可重復性而不使用相同的方法也有點奇怪。
也許arxiv或repo應該使用一致的數字進行更新,或者更好的是,使用多次獨立運行的平均值。
但是隨著SOTA的改進和該領域的發展,其他人花費資源來產生舊的結果的動機就更少了。人們寧愿使用他們的資源來復現當前的SOTA或嘗試其他新想法。
許多人引用它是因為它的概念本身,而不是為了報告排行榜分數。
-
梯度
+關注
關注
0文章
30瀏覽量
10318 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
45982 -
resnet
+關注
關注
0文章
12瀏覽量
3158
原文標題:經典ResNet結果不能復現?何愷明回應:它經受住了時間的考驗
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論