ResNet
ResNet要解決的問題
深度學習網路的深度對最後的分類和識別的效果有著很大的影響,所以正常想法就是能把網路設計的越深越好,但是事實上卻不是這樣,常規的網路的堆疊(plain network)在網路很深的時候,效果卻越來越差了。並且深度網路的深度越深那麼其訓練就越難,ResNet提出可以說是挑戰深度網路的深度極限,通過採用一定的辦法解決深度問題!模型的深度加深,學習能力增強,因此更深的模型不應當產生比它更淺的模型更高的錯誤率。而這個“退化”問題產生的原因歸結於優化難題,當模型變複雜時,SGD的優化變得更加困難,導致了模型達不到好的學習效果。出現梯度彌散的概率增加!
這裡其中的原因之一即是網路越深,梯度消失的現象就越來越明顯,網路的訓練效果也不會很好。
但是現在淺層的網路(shallower network)又無法明顯提升網路的識別效果了,所以現在要解決的問題就是怎樣在加深網路的情況下又解決梯度消失的問題。
ResNet的解決方案
ResNet引入了殘差網路結構(residual network),通過殘差網路,可以把網路層弄的很深,據說現在達到了1000多層,最終的網路分類的效果也是非常好,殘差網路的基本結構如下圖所示
通過在輸出個輸入之間引入一個shortcut connection,而不是簡單的堆疊網路,這樣可以解決網路由於很深出現梯度消失的問題,從而可可以把網路做的很深,ResNet其中一個網路結構如下圖所示
之前一直在探究殘差網路提出的由來,作者是基於先前的什麼知識才提出殘差網路的,咋一看感覺殘差網路提出的很精巧,其實就是很精巧,但是現在感覺非要從殘差的角度進行解讀感覺不太好理解,真正起作用的應該就是shortcut連線了,這才是網路的關鍵之處。
對ResNet的解讀
基本的殘差網路其實可以從另一個角度來理解,這是從另一篇論文裡看到的,如下圖所示:
殘差網路單元其中可以分解成右圖的形式,從圖中可以看出,殘差網路其實是由多種路徑組合的一個網路,直白了說,殘差網路其實是很多並行子網路的組合,整個殘差網路其實相當於一個多人投票系統(Ensembling)。下面來說明為什麼可以這樣理解
刪除網路的一部分
如果把殘差網路理解成一個Ensambling系統,那麼網路的一部分就相當於少一些投票的人,如果只是刪除一個基本的殘差單元,對最後的分類結果應該影響很小;而最後的分類錯誤率應該適合刪除的殘差單元的個數成正比的,論文裡的結論也印證了這個猜測。
下圖是比較VGG和ResNet分別刪除一層網路的分類錯誤率變化
下圖是ResNet分類錯誤率和刪除的基本殘差網路單元個數的關係
ResNet的真面目
ResNet的確可以做到很深,但是從上面的介紹可以看出,網路很深的路徑其實很少,大部分的網路路徑其實都集中在中間的路徑長度上,如下圖所示:
從這可以看出其實ResNet是由大多數中度網路和一小部分淺度網路和深度網路組成的,說明雖然表面上ResNet網路很深,但是其實起實際作用的網路層數並沒有很深,我們能來進一步闡述這個問題,我們知道網路越深,梯度就越小,如下圖所示
而通過各個路徑長度上包含的網路數乘以每個路徑的梯度值,我們可以得到ResNet真正起作用的網路是什麼樣的,如下圖所示
我們可以看出大多數的梯度其實都集中在中間的路徑上,論文裡稱為effective path。
從這可以看出其實ResNet只是表面上看起來很深,事實上網路卻很淺。
所示ResNet真的解決了深度網路的梯度消失的問題了嗎?似乎沒有,ResNet其實就是一個多人投票系統。
轉載:
http://blog.csdn.net/buyi_shizi/article/details/53336192
相關文章
- ResNet程式碼精讀
- 深度殘差網路(ResNet)
- resnet到底是個啥
- 0609-搭建ResNet網路
- PyTorch ResNet 使用與原始碼解析PyTorch原始碼
- ResNet50-SSD300模型圖模型
- 深入解析 ResNet:實現與原理
- 殘差神經網路-ResNet神經網路
- 如何使用 resnet 生成圖片向量?
- 2張圖理解resnet核心思想
- Backbone 網路-ResNet 論文解讀
- 你的 ResNet 是時候更新了
- Backbone 網路-ResNet v2 詳解
- 索尼大法好,224秒在ImageNet上搞定ResNet-50
- PaddlePaddle動態圖實現Resnet(眼底篩查為例)
- 經典的CNN模型架構-LeNet、AlexNet、VGG、GoogleLeNet、ResNetCNN模型架構Go
- pytorch模型定義常用函式以及resnet模型修改案例PyTorch模型函式
- tesla-t4 GPU 推理 resnet50 比 CPU 快多少?GPU
- ResNet50的貓狗分類訓練及預測
- ResNet詳解:網路結構解讀與PyTorch實現教程PyTorch
- 輕鬆學Pytorch-使用ResNet50實現影像分類PyTorch
- 讀ResNet網路文獻後的一些要點梳理
- 詳解ResNet 網路,如何讓網路變得更“深”了
- 基於pytorch實現Resnet對本地資料集的訓練PyTorch
- 從VGG到ResNet,你想要的MXNet預訓練模型輕鬆學模型
- 轉載:ResNet50網路結構圖及結構詳解
- 基礎入門,怎樣用PaddlePaddle優雅地寫VGG與ResNet
- 使用自己的資料集訓練MobileNet、ResNet實現影象分類(TensorFlow)
- ResNet架構可逆!多大等提出效能優越的可逆殘差網路架構
- 深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet深度學習神經網路CNN
- 從Inception v1到Inception-ResNet,一文概覽Inception家族的「奮鬥史」
- 徹底解決梯度爆炸問題,新方法不用反向傳播也能訓練ResNet梯度反向傳播
- 【論文筆記】張航和李沐等提出:ResNeSt: Split-Attention Networks(ResNet改進版本)筆記
- ONNX Runtime入門示例:在C#中使用ResNet50v2進行影像識別C#
- 一文讀懂物體分類AI演算法:LeNet-5 AlexNet VGG Inception ResNet MobileNetAI演算法
- 深度學習——手動實現殘差網路ResNet 辛普森一家人物識別深度學習
- 【CANN訓練營第三季】基於Caffe ResNet-50網路實現圖片分類
- 從ResNet的誕生講起:美公司在北京的AI研究所出了成果,中美究竟誰受益更多?AI