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