目前為止,我們使用的都是固定網(wǎng)絡(luò)架構(gòu),即在CIFAR10上用單個GPU最快的DAWNBench記錄,經(jīng)過簡單改變,我們將網(wǎng)絡(luò)達(dá)到94%精度的時間從341秒縮短至154秒。今天,我們要研究其他的替代性架構(gòu)。
讓我們先回顧下目前所用的網(wǎng)絡(luò):
粉色的殘差塊包含了一個identity shortcut并保留了輸入的空間和通道維度:
淺綠色的下采樣模塊將空間分辨率降低兩倍,輸出通道的數(shù)量增加一倍:
加入殘差模塊的原因是通過在網(wǎng)絡(luò)中創(chuàng)建shortcut讓優(yōu)化變得更簡單。我們希望較短的路徑代表相對容易訓(xùn)練的淺層子網(wǎng)絡(luò),而較長的路徑可以增加網(wǎng)絡(luò)的能力和計算深度。這樣一來,研究最短路徑如何通過網(wǎng)絡(luò)孤立訓(xùn)練,并且如何采取措施進(jìn)行改進(jìn)似乎是合理的。
清除長分支會生成一下主要網(wǎng)絡(luò),其中除了第一個網(wǎng)絡(luò),所有的卷積網(wǎng)絡(luò)的步長都為2:
在接下來的實(shí)驗(yàn)中,我們會訓(xùn)練20個epoch,利用比之前學(xué)習(xí)速率更快速的版本訓(xùn)練,因?yàn)榫W(wǎng)絡(luò)較小,收斂得更快。復(fù)現(xiàn)這一結(jié)果的代碼在此:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb

對最短的路徑網(wǎng)絡(luò)訓(xùn)練20個epoch,在36秒內(nèi)的測試精度僅達(dá)到55.9%。刪除掉重復(fù)的批標(biāo)準(zhǔn)化ReLU群組,將訓(xùn)練時間縮短到32秒,但是測試精度仍然不變。
這一網(wǎng)絡(luò)有個嚴(yán)重的缺陷,即下采樣卷積有1×1的核以及為2的步長,所以與其擴(kuò)大接受域,它們反而會拋棄信息。如果我們用3×3的卷積替換,測試精度在36秒的訓(xùn)練后達(dá)到了85.6%。
我們還能繼續(xù)對下采樣進(jìn)行優(yōu)化,使用3×3、步長為1的卷積,并且后面跟一個池化層。我們選擇最大池化和2×2的窗口大小,43秒訓(xùn)練后的測試精度為89.7%。用平均池化法得到相似的結(jié)果,但時間稍長。
分類器前的最后一個池化層是全局平均池化層和最大池化層的連接,從原始網(wǎng)絡(luò)中得來。我們用更標(biāo)準(zhǔn)的全局最大池化層替換它,并且將最終的卷積層的輸出維度變?yōu)樵瓉淼膬杀?,對輸入維度進(jìn)行補(bǔ)償,最終在47秒內(nèi),測試精度達(dá)到了90.7%。注意,這一階段的平均池化層并不如最大池化層。
默認(rèn)情況下,在PyTorch0.4中,初始批規(guī)范化的范圍在0到1之間隨機(jī)選擇。初始接近0的通道可能被浪費(fèi),所以我們用常數(shù)1來替代。這導(dǎo)致通過網(wǎng)絡(luò)中的信號更大。為了補(bǔ)償,我們提出了一種整體恒定懲罰對分類器進(jìn)行重新調(diào)整。對這一額外超參數(shù),大致的手動優(yōu)化值是0.125。經(jīng)過這些改變,經(jīng)過20個epoch的訓(xùn)練,網(wǎng)絡(luò)在47秒內(nèi)達(dá)到了91.1%的測試精度。
下表總結(jié)了我們上文中提到的各種改進(jìn)步驟:

現(xiàn)在的網(wǎng)絡(luò)看起來沒什么問題了,接下來我們要進(jìn)行收益遞減,添加一些圖層。目前網(wǎng)絡(luò)僅有5個圖層(四個卷積,一個全連接層),所以還不確定我們是否需要?dú)埐罘种?,或者添加額外的層后能否得到94%的目標(biāo)精確度。
如果只增加寬度似乎不可行。如果我們讓通道維度增加一倍,訓(xùn)練60個epoch后,可以達(dá)到93.5%的精確度,但是會用321秒。
在增加網(wǎng)絡(luò)深度方面,我們還面臨著多種問題,例如不同的殘差分支類型、深度和寬度以及新的超參數(shù),例如初始范圍和殘差分支的偏見。為了讓結(jié)果更進(jìn)一步,我們要嚴(yán)格限制搜索空間,所以,不能調(diào)整任何新的超參數(shù)。
特別的是,我們要考慮兩種類型的網(wǎng)絡(luò)。第一種是選擇性地在每個最大池化層后添加一個卷積層。第二種是添加一個含有兩部分3×3卷積的殘差塊,其中有identity shortcut,也是在最大池化層之后添加。
我們在最后卷積模塊后、全局最大池化層之前插入了一個2×2的最大池化層。是否添加新層要根據(jù)不同情況決定,我們還考慮混合兩種類型,但這并沒有提升性能,所以我們就不在此展開了。
下圖是第一種網(wǎng)絡(luò)示例,其中我們在第二個最大池化層之后添加了額外的卷積:
下圖是第二種網(wǎng)絡(luò)示例,其中我們在第一和第三層之后添加了殘差分支:
現(xiàn)在要開始“暴力”架構(gòu)搜索了!我們訓(xùn)練了15種網(wǎng)絡(luò)(經(jīng)過改進(jìn)的原始網(wǎng)絡(luò)和上述兩類網(wǎng)絡(luò)中每類的7種變體),各訓(xùn)練20個epoch,另外還對比了訓(xùn)練22個epoch的結(jié)果,了解訓(xùn)練時間增長和更深的網(wǎng)絡(luò)架構(gòu)之間的差別。如果每個實(shí)驗(yàn)僅運(yùn)行一次,就會花費(fèi)30分鐘的計算時間。但不幸的是,每次最終測試精度的標(biāo)準(zhǔn)偏差約為0.15%。所以為了得出準(zhǔn)確的結(jié)果,我們會對每個實(shí)驗(yàn)運(yùn)行10次,將每個數(shù)據(jù)點(diǎn)的標(biāo)準(zhǔn)偏差控制在0.05%左右。即便如此,不同架構(gòu)之間從20到22個epoch運(yùn)行后改進(jìn)率之間的差異主要可能是噪音。
以下是結(jié)果,點(diǎn)表示20個epoch和精確度,線條的延伸表示22個epoch的結(jié)果:

與運(yùn)用更深層的架構(gòu)所得到的進(jìn)步相比,訓(xùn)練更長時間所得到的進(jìn)步速度似乎很慢。在測試的框架中,最有前景的或許是Residual:L1+L3。網(wǎng)絡(luò)在66秒內(nèi)達(dá)到了93.8%的精確度,如果我們將訓(xùn)練擴(kuò)展到24個epoch,平均精確度為94.08%,訓(xùn)練時間為79秒。
目前為止,我們已經(jīng)得到了一個9層的深度殘差網(wǎng)絡(luò),能在79秒內(nèi)達(dá)到94%的訓(xùn)練精確度,幾乎將訓(xùn)練時間縮短了一半。最后還有一個問題:我們是否真的需要?dú)埐罘种Р拍茏寽y試精確度達(dá)到94%?答案顯然是否定的。例如,單一的分支網(wǎng)絡(luò)Extra:L1+L2+L3能在180秒、60個epoch內(nèi)達(dá)到95%的精確度,加上正則化或更寬的版本后,精確度會更高。但是至少在現(xiàn)在最快的是一個殘差網(wǎng)絡(luò)。
結(jié)語
本文結(jié)束前,讓我們再簡單回顧一下研究的目的。很多觀點(diǎn)認(rèn)為,訓(xùn)練模型在CIAFR10上達(dá)到94%的測試精確度是無意義的行為,應(yīng)為現(xiàn)在最高的精確度都達(dá)到98%了(另外還有人認(rèn)為現(xiàn)在ImageNet才是“唯一”的數(shù)據(jù)集,其他實(shí)驗(yàn)只是浪費(fèi)時間罷了)。
事實(shí)上,我們可以通過9層網(wǎng)絡(luò)在24個epoch內(nèi)達(dá)到94%的精確度,這也再次說明我們的目標(biāo)門檻過低。另一方面,人類在CIFAR10上的表現(xiàn)也在94%左右,所以這一情況并不清楚。
在某種程度上,現(xiàn)在的精確度是一種“病態(tài)”的目標(biāo),只追求更大的模型、調(diào)整更多超參數(shù)、更多數(shù)據(jù)增強(qiáng)或者更長的訓(xùn)練時間,讓各種工作之間的比較更難。另外,在訓(xùn)練或結(jié)構(gòu)設(shè)計上的創(chuàng)新會帶來額外的超參數(shù)維度,并且調(diào)整這些參數(shù)可能會導(dǎo)致有關(guān)訓(xùn)練更好的隱式優(yōu)化,否則這些與研究中的擴(kuò)展無關(guān)。如果基礎(chǔ)模型的外顯超參數(shù)的維度空間較低,那么通常被認(rèn)為是最佳的對比試驗(yàn)無法解決該問題。這種情況的結(jié)果是,最先進(jìn)的模型難以進(jìn)行比較、復(fù)現(xiàn)、重建。
有了這些問題,我們認(rèn)為任何能輕易在各項(xiàng)實(shí)驗(yàn)中進(jìn)行比較的都是有益的。我們相信創(chuàng)建有競爭力的基準(zhǔn)也是應(yīng)對挑戰(zhàn)的一種方法。資源的限制讓各實(shí)驗(yàn)之間的比較更公平,減少了為了培訓(xùn)所需要做的調(diào)整。模型多余的復(fù)雜性可能會受到資源限制基線的懲罰,哪些明確控制相關(guān)參數(shù)的方法通常會獲勝。
最近,根據(jù)模型推理時間或模型大小公布曲線越來越多。這對于優(yōu)化和解決上面的問題來說都是積極的方法,但我們相信訓(xùn)練時間所帶來的額外正則化會有更多好處。另一方面,優(yōu)化訓(xùn)練時間并不考慮推理成本是否是次優(yōu)的,這也是為什么我們的訓(xùn)練時間結(jié)構(gòu)總是包含測量每個epoch中測試集的時間,并且我們避免了類似測試時間增強(qiáng)等技術(shù),它可以在推理時減少訓(xùn)練時間。
-
gpu
+關(guān)注
關(guān)注
28文章
5099瀏覽量
134468 -
網(wǎng)絡(luò)架構(gòu)
+關(guān)注
關(guān)注
1文章
99瀏覽量
13361
原文標(biāo)題:如何訓(xùn)練你的ResNet(四):網(wǎng)絡(luò)架構(gòu)對訓(xùn)練時間的影響
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
深度學(xué)習(xí)與圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)分享:CNN經(jīng)典網(wǎng)絡(luò)之-ResNet
優(yōu)化神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法有哪些?
如何進(jìn)行高效的時序圖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練
YOLOv6中的用Channel-wise Distillation進(jìn)行的量化感知訓(xùn)練
【CANN訓(xùn)練營第三季】基于Caffe ResNet-50網(wǎng)絡(luò)實(shí)現(xiàn)圖片分類
形象的理解深度網(wǎng)絡(luò)架構(gòu)?
索尼發(fā)布新的方法,在ImageNet數(shù)據(jù)集上224秒內(nèi)成功訓(xùn)練了ResNet-50
百度大腦EdgeBoard計算卡基于Resnet50/Mobile-SSD模型的性能評測
首個關(guān)于深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練相關(guān)的理論證明
基于改進(jìn)U-Net網(wǎng)絡(luò)建立HU-ResNet模型
PyTorch教程8.6之殘差網(wǎng)絡(luò)(ResNet)和ResNeXt
MATLAB如何使用訓(xùn)練好的網(wǎng)絡(luò)
怎么對神經(jīng)網(wǎng)絡(luò)重新訓(xùn)練
基于瑞芯微RK3576的resnet50訓(xùn)練部署教程

網(wǎng)絡(luò)架構(gòu)對ResNet訓(xùn)練時間有什么影響
評論