【算法類】【算法介紹】deepCNNs之基於深度利用的模型:Highway,ResNet,Inception-V3/V4,Inception-ResNet,ResNext,densenet

1、Highway Networks

1.1 爲什麼要引入Highway Networks?

我們知道,在深度神經網絡中,網絡層數是至關重要的,更深的網絡層可以達到更好的效果。但是當網絡加深時,容易出現學習困難的現象,常見的就是梯度消失/梯度爆炸。

1.2 什麼是梯度消失/梯度爆炸?

在更新參數的時候,前面的層正常更新,後面的層不進行更新了。
舉個例子:
在這裏插入圖片描述
假設我們有一個深度神經網絡,其中隱藏層爲4個。我們可以寫出每一個節點的公式:
C=sigmoid(W_4*H_3 +b_4)

H_3=sigmoid(W_3*H_2 +b_3)

H_2=sigmoid(W_2*H_1 +b_2)

H_1=sigmoid(W_1*x +b_1)

若是對w1求導,可以得到:
在這裏插入圖片描述
我們知道,f(x) = sigmoid(x),f’(x) = sigmoid(x)(1 - sigmoid(x))。sigmoid(x)會將函數映射到0-1之間的一個數字,所以上述公式得到的結果會是幾個0-1之間的數相乘,會導致在更新參數w1時參數幾乎不會更新,會產生梯度消失的現象。
那什麼是梯度爆炸呢,其實同理,就是導數結果是一個大於1的數,經過很多層的相乘,會得到一個非常大的一個更新結果,叫做梯度爆炸

1.3 解決辦法:highway networks

Highway Netowrks是允許信息高速無阻礙的通過各層,它是從Long Short Term Memory(LSTM) recurrent networks中的gate機制受到啓發,可以讓信息無阻礙的通過許多層,達到訓練深層神經網絡的效果,使深層神經網絡不在僅僅具有淺層神經網絡的效果。

普通神經網絡的激活流程是:
在這裏插入圖片描述
對於Highway Networks,增加了兩個非線性轉換層,T(transform gate) 和 C(carry gate),T表示輸入信息被轉換的部分,C表示的是原始信息x保留的部分 ,其中 T=sigmoid(wx + b)
在這裏插入圖片描述
爲了計算方便,這裏定義了 C = 1 - T
在這裏插入圖片描述
需要注意的是x, y, H, T的維度必須一致,幾個公式相比,公式3要比公式1靈活的多,可以考慮一下特殊的情況,T= 0的時候,y = x,原始信息全部保留,T = 1的時候,Y = H,原始信息全部轉換,不在保留原始信息,僅僅相當於一個普通的神經網絡。

在這裏插入圖片描述
在這裏插入圖片描述

2、ResNet

2.1爲什麼要引入ResNet?

其實和highway Network一樣,隨着網絡層數的加深,模型的誤差會隨着深度的增加而增加,這種情況並非過擬合,過擬合是訓練集效果好,測試集效果差。但是神經網絡隨着深度的增加,訓練集誤差率逐漸增大,測試集誤差率也逐漸增大,導致誤差增大。所以提出了ResNet。

2.2 ResNet模型架構

在這裏插入圖片描述
具體模型如上圖所示。
ResNet提出了兩種mapping:一種叫identity mapping,指的就是上圖中”彎彎的曲線”,另一種residual mapping,指的就是除了”彎彎的曲線“那部分,所以最後的輸出是 y=F(x)+x 。
identity mapping顧名思義就是指本身,即x,而residual mapping指的是“差”,也就是y−x,所以殘差指的就是F(x)部分。

那麼爲什麼這種方式可以減少誤差呢?

理論上,對於“隨着網絡加深,準確率下降”的問題,Resnet提供了兩種選擇方式,也就是identity mapping和residual mapping,如果網絡已經到達最優,繼續加深網絡,residual mapping將被push爲0,只剩下identity mapping,這樣理論上網絡一直處於最優狀態了,網絡的性能也就不會隨着深度增加而降低了。

個人理解

其實ResNet和highway Network在形式上有一些類似的地方,都是通過加入一些信息是的最終的損失函數看起來不是那麼“深”(由於加入了identity mapping的緣故),借用乾貨 | 深度詳解ResNet及其六大變體的話說就是Resnet 是highway Network的一種特例。但是本人對這塊還是理解的有些模糊,準備再看一些博客進行深入的理解。

3、Inception V3/V4

V3相較於V2除了在一些參數方面的調整,最重要的是加入了“分解”,比如,將7 * 7的卷積分解爲一層1 * 7 的卷積和7 * 1的卷積,這麼做的好處是可以加快模型的訓練,同時可以增加網絡的深度。

V4主要是在模型的結構上做了一些調整,使模型看起來更加的簡潔
在這裏插入圖片描述

4、Inception-ResNet

顧名思義,是Inception網絡和ResNet網絡結合使用的一種網絡結構,先看下Inception-ResNet的殘差部分:
在這裏插入圖片描述
此圖爲整體架構圖

在這裏插入圖片描述

5、ResNext

下面來介紹ResNext,ResNet可以說是Inecption和VGG結合的升級版本,VGG是單純的增加了網絡的層數,而Inecption在增加層數的同時,增加了split-transform-merge的思想。但是Inecption和ResNet都有一個問題,就是可泛化性,這兩個模型都對參數設置較爲死板,同樣的模型參數如果換到其他的數據集則表現出不好的效果,需要再次調參

而ResNext的模型泛化性就比較好,可擴展性比較強,可以認爲是在增加準確率的同時基本不改變或降低模型的複雜度。

下面是ResNet和RexText的對比圖
在這裏插入圖片描述

6、denseNet

densenet也是一種深層神經網絡,以下是架構圖:
在這裏插入圖片描述
可以看到,densenet有如下特點,即對於每一層,都與前幾層輸出有關。其相對於之前深度模型有如下優點:
(1) 相比ResNet擁有更少的參數數量.

(2) 旁路加強了特徵的重用.

(3) 網絡更易於訓練,並具有一定的正則效果.

(4) 緩解了gradient vanishing和model degradation的問題.

參考

基於pytorch實現HighWay Networks之Train Deep Networks
ResNet解析
ResNeXt算法詳解
DenseNet詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章