???深層網(wǎng)絡(luò)一般很難訓(xùn)練寺鸥,要么梯度彌散要么梯度爆炸谷浅。但是我們考慮這樣一個(gè)事實(shí):假設(shè)我們有一個(gè)淺層網(wǎng)絡(luò)秘血,網(wǎng)絡(luò)是很同意訓(xùn)練的。現(xiàn)在我們不斷增加新層來建立深層網(wǎng)絡(luò)紧唱,一個(gè)極端的情況是增加的層什么也不學(xué)習(xí)活尊,僅僅只是拷貝淺層的輸出,即這樣的新層是恒等映射(Identity mapping)琼蚯。這樣網(wǎng)絡(luò)至少可以和淺層一樣酬凳,不應(yīng)該出現(xiàn)退化的問題。殘差學(xué)習(xí)的思路基于這個(gè)遭庶。
???對(duì)于一個(gè)堆疊層結(jié)構(gòu)宁仔,當(dāng)輸入為時(shí)候,學(xué)習(xí)到的特征記為
峦睡,現(xiàn)在我們希望可以學(xué)習(xí)到殘差
翎苫,這樣其實(shí)原始的學(xué)習(xí)特征為
。之所以這樣是因?yàn)闅埐顚W(xué)習(xí)相比原始特征直接學(xué)習(xí)更容易榨了。當(dāng)殘差為0時(shí)煎谍,此時(shí)堆疊層僅僅做了恒等映射,至少網(wǎng)絡(luò)性能不會(huì)下降龙屉。事實(shí)上呐粘,殘差不可能為0满俗,這樣堆疊層就會(huì)在輸入特征基礎(chǔ)上學(xué)習(xí)到新的特征延旧。殘差單元如圖所示茸苇。
???為什么殘差學(xué)習(xí)相對(duì)更容易,從直觀上來看殘差學(xué)習(xí)需要學(xué)習(xí)的內(nèi)容少趁猴,因?yàn)闅埐钜话惚容^小痘儡,學(xué)習(xí)難度小點(diǎn)辕万。從數(shù)學(xué)角度來說,首先殘差單元可以表示成:
???其中沉删, 和
分別表示第
個(gè)殘差單元的輸入和輸出(ps:每個(gè)殘差單元一般包含多層結(jié)構(gòu))渐尿。
是殘差函數(shù),表示學(xué)習(xí)到的殘差矾瑰,而
表示恒等映射砖茸,
是relu激活函數(shù)∨寡ǎ基于上式渔彰,我們求得從淺層
到深層
的學(xué)習(xí)特征為:
???
???鏈?zhǔn)角髮?dǎo)可知:
公式中的第一個(gè)因子表示損失函數(shù)到達(dá)L的梯度,小括號(hào)中的1表示短路機(jī)可以無損的傳播梯度推正,而另外一項(xiàng)殘差梯度則需要經(jīng)過待遇weights的層,梯度不是直接傳過來的宝惰。殘差梯度不會(huì)那么巧全為-1植榕,而且就算其比較小,有1的存在也不會(huì)導(dǎo)致梯度消失尼夺。所以殘差學(xué)習(xí)會(huì)更容易尊残。
???吳恩達(dá)說,激活函數(shù)用的relu淤堵,如果
為負(fù)數(shù)寝衫,那么前面這塊為0,只剩下
拐邪,只是把
賦值給
慰毅,首先對(duì)網(wǎng)絡(luò)性能沒有什么影響,然后
到
這段的網(wǎng)絡(luò)還可能學(xué)到一些特征扎阶。如果
和
的維度不相同汹胃,比如,
為256維东臀,
為128維着饥,那么增加一個(gè)
,它為[256, 128]維惰赋,
就可以得到需要輸出的維度宰掉。
???至于resnet的結(jié)構(gòu),我就不說了,這個(gè)沒啥好講的轨奄。
感謝這位博主的博客[https://zhuanlan.zhihu.com/p/31852747]孟害。