當(dāng)廢人真的好快樂
不學(xué)習(xí)不去實驗室的日子也太舒坦了吧!
所以小李又拖到現(xiàn)在才來更新了
——————————
論文名稱:《Deep Residual Learning for Image Recognition》
論文地址:https://arxiv.org/pdf/1512.03385.pdf
論文翻譯:https://blog.csdn.net/c_chuxin/article/details/82948733
論文代碼:https://github.com/tornadomeet/ResNet
Background
按慣例先說一下背景:深度卷積網(wǎng)絡(luò)近幾年來在圖像分類任務(wù)上取得了巨大突破趴生,它是通過綜合中座菠、低蛾绎、高層特征以及分類器來形成的,不少實驗結(jié)果表明瘪贱,網(wǎng)絡(luò)深度對于性能來說是及其重要的,通過增加層數(shù)(即加深網(wǎng)絡(luò))在一定程度上可以豐富網(wǎng)絡(luò)學(xué)習(xí)到的特征期贫。憑著這一基本準(zhǔn)則CNN分類網(wǎng)絡(luò)自Alexnet發(fā)展到了VGG的16乃至19層,后來更有了Googlenet的22層廷区。那么現(xiàn)在有一個問題:是不是簡單地通過加深網(wǎng)絡(luò)就可以獲得更好的性能和更高的精準(zhǔn)率?答案是否贾铝,通過后來的實驗我們可以發(fā)現(xiàn)深度CNN網(wǎng)絡(luò)達(dá)到一定深度后再一味地增加層數(shù)并不能帶來進(jìn)一步地分類性能提高隙轻,反會容易造成由梯度消失和梯度爆炸引起的網(wǎng)絡(luò)不收斂問題。
這個問題可以通過歸一初始化與中間初始化來解決垢揩。(如下圖所示)
步驟解釋:
1.計算樣本均值玖绿。
2.計算樣本方差。
3.樣本數(shù)據(jù)標(biāo)準(zhǔn)化處理叁巨。
4.進(jìn)行平移和縮放處理斑匪。引入了γ和β兩個參數(shù)。來訓(xùn)練γ和β兩個參數(shù)锋勺。引入了這個可學(xué)習(xí)重構(gòu)參數(shù)γ蚀瘸、β狡蝶,讓我們的網(wǎng)絡(luò)可以學(xué)習(xí)恢復(fù)出原始網(wǎng)絡(luò)所要學(xué)習(xí)的特征分布。
即第一圖:x先經(jīng)過Wh1的線性變換后得到s1贮勃,將s1再減去batch的平均值μB贪惹,將s2乘以γ調(diào)整數(shù)值大小,再加上β增加偏移后得到s3
通過歸一初始化與中間初始化解決了網(wǎng)絡(luò)不收斂的問題寂嘉,但是又有了新的問題奏瞬,這個時候發(fā)現(xiàn)網(wǎng)絡(luò)出現(xiàn)了退化問題,如下圖泉孩。由圖可知56層網(wǎng)絡(luò)比20層的網(wǎng)絡(luò)錯誤率更高硼端,可猜測這種退化并不是由過擬合造成的,在一個合理的深度模型中增加更多的層卻導(dǎo)致了更高的錯誤率寓搬。退化問題表明了珍昨,求解器在通過多個非線性層來估計恒等映射上可能是存在困難的。因而订咸,論文推測是優(yōu)化器出了了問題曼尊。
Idea
因而,我們假設(shè)有一個淺層網(wǎng)絡(luò)脏嚷,如果通過向上堆積新層來建立深層網(wǎng)絡(luò)骆撇,前提是這些增加的層什么也不學(xué)習(xí),僅僅復(fù)制淺層網(wǎng)絡(luò)的特征父叙,即這樣新層是恒等映射(對任意集合A神郊,如果映射f:A→A定義為f(a)=a,即規(guī)定A中每個元素a與自身對應(yīng)趾唱,則稱f為A上的恒等映射)涌乳。
在這種情況下,深層網(wǎng)絡(luò)應(yīng)該至少和淺層網(wǎng)絡(luò)性能一樣甜癞,也不應(yīng)該出現(xiàn)退化現(xiàn)象夕晓。
因而,基于這個問題論文作者提出了殘差學(xué)習(xí)框架(Resnet).
Resnet
Model
H(x)是底層映射
F(x)多層堆疊的非線性層來擬合的映射
x是原始映射
原始的網(wǎng)絡(luò)直接擬合所需要的函數(shù)H(x)悠咱,而殘差塊則擬合殘差函數(shù)蒸辆,即:F(x)=H(x)?x,F(xiàn)(x)它擬合的是底層映射與輸入的差值析既,最后通過把輸入與殘差相加求得底層映射躬贡,間接擬合所需要的函數(shù),即:H(x)=F(x)+x眼坏。相加操作是通過一條shortcut來實現(xiàn)拂玻。
這邊有個問題補(bǔ)充說明一下:為什么要通過間接擬合學(xué)習(xí)我們所需要的函數(shù)H(x)?
網(wǎng)絡(luò)退化問題說明了優(yōu)化器在優(yōu)化非線性層擬合恒等函數(shù)時會有困難,而當(dāng)擬合殘差函數(shù)時,如果恒等函數(shù)是最優(yōu)解檐蚜,那么優(yōu)化器只需要將非線性層權(quán)重參數(shù)置零即可魄懂。也就是說:將殘差推至零比用一堆非線性層擬合恒等映射更容易,優(yōu)化器會更容易優(yōu)化殘差函數(shù)熬甚。除此逢渔,如下圖所示,我們可以看到變化對F的影響遠(yuǎn)遠(yuǎn)大于G乡括,說明引入殘差后的映射對輸出的變化更敏感肃廓,這樣是有利于網(wǎng)絡(luò)進(jìn)行傳播的,更快收斂Deep residual Learning
如上圖诲泌,一個殘差塊可以如上第一個式子表示盲赊,x和y表示這些層的輸入和輸出,F(xiàn)函數(shù)表示要學(xué)習(xí)的殘差映射敷扫。整體的一個網(wǎng)絡(luò)結(jié)構(gòu)大致如下:{注:上圖式子中的σ代表ReLU}
ResNet通過直接將輸入信息繞道傳到輸出哀蘑,保護(hù)信息的完整性,網(wǎng)絡(luò)只需要學(xué)習(xí)輸入葵第、輸出差別的那一部分绘迁,簡化學(xué)習(xí)目標(biāo)和難度.shortcut
shortcut在resnet起著至關(guān)重要的作用,它執(zhí)行了一個相加的操作卒密,Shortcut的作用是簡單地執(zhí)行恒等映射缀台,將恒等映射的輸入添加到堆層的輸出,引入shortcut既不需要額外的參數(shù)哮奇,也沒有計算復(fù)雜性膛腐。
shortcu兩種情況如上圖所示:
1.在BB1中只有卷積層,圖片大小沒有改變鼎俘,也就是等式中的x和F需要具有相同維度哲身,可以直接相加:y=F(x)+x
2.在BB2中,圖片尺寸縮小了一半贸伐,維度不匹配勘天,因此不可以直接相加:y=F(x)+Wsx.
論文的作者給了兩種解決方法:
1.shortcut仍然使用恒等映射,在增加的維度上使用0來填充捉邢,這樣做不會增加額外的參數(shù)脯丝;
2.使用一個投影矩陣Ws來匹配維度(通過1×1卷積)
Experiments
這篇論文實驗涉及較多 這邊簡要記錄幾個
*Network Architectures
實驗一:
Plain Network的設(shè)計是借鑒了VGG nets的思想,并且遵循以下兩種原則:
1歌逢、輸出特征圖大小不變時巾钉,卷積核數(shù)量不變翘狱;
2秘案、特征圖大小縮小一半時,卷積核數(shù)量就增加一倍,以保持每層的時間復(fù)雜度。除此之外阱高,VGG通過Max Pooling下采樣赚导,而這里通過步長為2的卷積層直接下采樣,同時Plain Network最后通過Average Pooling來獲得最后的特征赤惊,并且通過softmax層來獲得最后1000維的預(yù)測吼旧。Residual Network是在Plain Network的基礎(chǔ)上加入shortcut connection來形成殘差學(xué)習(xí)模塊,為了匹配維度未舟,這里考慮兩種不同操作:
1圈暗、在增加的維度上使用0來填充,這樣做不會增加額外的參數(shù)裕膀;
2员串、投影映射 (通過1x1卷積層來增加維度。)
對比結(jié)果:
1.plain-18 VS plain-34昼扛,展示了退化問題寸齐。說明了退化問題不是因為梯度消失,另外也不能簡單地增加迭代次數(shù)來使其收斂抄谐,增加迭代次數(shù)仍然會出現(xiàn)退化問題渺鹦。
2。ResNet-18 VS ResNet-34不會出現(xiàn)退化問題蛹含,ResNet-34明顯表現(xiàn)的比ResNet-18和plain-34好毅厚,證明了殘差學(xué)習(xí)解決了隨網(wǎng)絡(luò)深度增加帶來的退化問題。因此可以通過增加深度來獲取更高的精度 在極深網(wǎng)絡(luò)中挣惰,residual learning 是有效的卧斟。
3.同等深度的plain-18和ResNet-18,殘差網(wǎng)絡(luò)更容易優(yōu)化憎茂,收斂更快珍语。實驗二:
網(wǎng)絡(luò)構(gòu)造同上一個實驗,這里是比較對于同等映射維度不匹配時竖幔,匹配維度的兩種方法的優(yōu)劣板乙,其中:
A: 用 zero-padding shortcut 來增加維度,且所有的 shortcut 無需額外的參數(shù)
B:用 projection shortcut 來增加維度拳氢,一般采用1x1的卷積募逞。其他的 shortcut 用于 identity mapping
C :所有的 shortcut 都用 projectio
實驗證明,投影法會比zero padding表現(xiàn)稍好一些馋评。因為zero padding的部分沒有參與殘差學(xué)習(xí)放接。將維度匹配或不匹配的同等映射全用投影法會取得更稍好的結(jié)果,但是考慮到不增加復(fù)雜度和參數(shù)free留特,不采用這種方法.實驗三
瓶頸結(jié)構(gòu)的構(gòu)造
考慮到時間花費問題纠脾,這里將原來的殘差學(xué)習(xí)結(jié)構(gòu)改為瓶頸結(jié)構(gòu)玛瘸,如上圖。
對于每個殘差函數(shù)F苟蹈,我們使用一個由3層組成的堆棧糊渊,而不是2層。
這三層分別是1×1慧脱、3×3和1×1卷積渺绒,其中1×1層負(fù)責(zé)減小然后增加(恢復(fù))維數(shù),使3×3層成為輸入/輸出維數(shù)較小的瓶頸菱鸥。此時投影法映射帶來的參數(shù)成為不可忽略的部分(因為輸入維度的增大)宗兼,所以要使用zero padding的恒等映射。
替換原本ResNet的殘差學(xué)習(xí)結(jié)構(gòu)氮采,同時也可以增加結(jié)構(gòu)的數(shù)量针炉,網(wǎng)絡(luò)深度得以增加,生成了ResNet-50扳抽,ResNet-101篡帕,ResNet-152。
通過下圖結(jié)果可以看到贸呢,隨著深度增加镰烧,因為解決了退化問題,性能不斷提升楞陷,可以享受增加的深度中獲得的顯著的精確性怔鳖。實驗四
Exploring Over 1000 layers
在Cifar-10上嘗試了1202層的網(wǎng)絡(luò),結(jié)果在訓(xùn)練誤差上與一個較淺的110層的相近固蛾,但是測試誤差要比110層大1.5%结执。作者認(rèn)為是采用了太深的網(wǎng)絡(luò),發(fā)生了過擬合艾凯。
把resent與其他深層窄模型献幔,如FitNet和 Highway做了對比
結(jié)果:具有更少的參數(shù),然而卻達(dá)到了最好的結(jié)果
參考:25組-Deep Residual Learning for Image Recognition
resnet論文閱讀