ResNet 詳解
背景簡(jiǎn)介
深度網(wǎng)絡(luò )隨著(zhù)層數不斷加深,可能會(huì )引起梯度消失/梯度爆炸的問(wèn)題:
- “梯度消失”:指的是即當梯度(小于1.0)在被反向傳播到前面的層時(shí),重復的相乘可能會(huì )使梯度變得無(wú)限小。
- “梯度爆炸”:指的是即當梯度(大于1.0)在被反向傳播到前面的層時(shí),重復的相乘可能會(huì )使梯度變得非常大甚至無(wú)限大導致溢出。
隨著(zhù)網(wǎng)絡(luò )深度的不斷增加,常常會(huì )出現以下兩個(gè)問(wèn)題:
- 長(cháng)時(shí)間訓練但是網(wǎng)絡(luò )收斂變得非常困難甚至不收斂
- 網(wǎng)絡(luò )性能會(huì )逐漸趨于飽和,甚至還會(huì )開(kāi)始下降,可以觀(guān)察到下圖中56層的誤差比20層的更多,故這種現象并不是由于過(guò)擬合造成的。
這種現象稱(chēng)為深度網(wǎng)絡(luò )的退化問(wèn)題。
ResNet深度殘差網(wǎng)絡(luò ),成功解決了此類(lèi)問(wèn)題,使得即使在網(wǎng)絡(luò )層數很深(甚至在1000多層)的情況下,網(wǎng)絡(luò )依然可以得到很好的性能與效
率。
參差網(wǎng)絡(luò )
ResNet引入殘差網(wǎng)絡(luò )結構(residual network),即在輸入與輸出之間(稱(chēng)為堆積層)引入一個(gè)前向反饋的shortcut connection,這有點(diǎn)類(lèi)似與電路中的“短路”,也是文中提到identity mapping(恒等映射y=x)。原來(lái)的網(wǎng)絡(luò )是學(xué)習輸入到輸出的映射H(x),而殘差網(wǎng)絡(luò )學(xué)習的是
。殘差學(xué)習的結構如下圖所示:
另外我們可以從數學(xué)的角度來(lái)分析這個(gè)問(wèn)題,首先殘差單元可以表示為:
其中
和
分別表示的是第 l 個(gè)殘差單元的輸入和輸出,注意每個(gè)殘差單元一般包含多層結構。 F 是殘差函
數,表示學(xué)習到的殘差,而h表示恒等映射, f 是ReLU激活函數?;谏鲜?,我們求得從淺層 l 到深層 L 的學(xué)習特征為:
利用鏈式規則,可以求得反向過(guò)程的梯度:
式子的第一個(gè)因子表示的損失函數到達 L 的梯度,小括號中的1表明短路機制可以無(wú)損地傳播梯度,而另外一項殘差梯度則需要經(jīng)過(guò)帶
有weights的層,梯度不是直接傳遞過(guò)來(lái)的。殘差梯度不會(huì )那么巧全為-1,而且就算其比較小,有1的存在也不會(huì )導致梯度消失。所以殘
差學(xué)習會(huì )更容易。
實(shí)線(xiàn)、虛線(xiàn)就是為了區分這兩種情況的:
-
實(shí)線(xiàn)的Connection部分,表示通道相同,如上圖的第一個(gè)粉色矩形和第三個(gè)粉色矩形,都是3x3x64的特征圖,由于通道相同,所以采
用計算方式為H(x)=F(x)+x -
虛線(xiàn)的的Connection部分,表示通道不同,如上圖的第一個(gè)綠色矩形和第三個(gè)綠色矩形,分別是3x3x64和3x3x128的特征圖,通道不
同,采用的計算方式為H(x)=F(x)+Wx,其中W是卷積操作,用來(lái)調整x維度的。
殘差學(xué)習的本質(zhì)
殘差網(wǎng)絡(luò )的確解決了退化的問(wèn)題,在訓練集和校驗集上,都證明了的更深的網(wǎng)絡(luò )錯誤率越小:
下面是resnet的成績(jì)單, 在imagenet2015奪得冠軍:
