殘差網絡(ResNets)


殘差網絡(ResNets)(Residual Networks (ResNets))

非常非常深的神經網絡是很難訓練的,因為存在梯度消失和梯度爆炸問題。習跳躍連接(Skip connection),它可以從某一層網絡層獲取激活,然后迅速反饋給另外一層,甚至是神經網絡的更深層。我們可以利用跳躍連接構建能夠訓練深度網絡的 ResNetsResNets 是由殘差塊(Residual block)構建的

 

這是一個兩層神經網絡,在L層進行激活,得到a[l+1],再次進行激活,兩層之后得到a[l+2]。計算過程是從a[l]開始,首先進行線性激活,根據這個公式:z[l+1] = w[l+1]a[l] + b[l+1],通過a[l]算出z[l+1],即a[l]乘以權重矩陣,再加上偏差因子。然后通過 ReLU 非線性激活函數得到 a[l+1]  a[l+1] = g(z[l+1]) 計 算 得 出 。 接 着 再 次 進 行 線 性 激 活 , 依 據 等 式 z[l+2] =w[l+2]a[l+1] + b[l+2],最后根據這個等式再次進行 ReLu 非線性激活,即a[l+2] = g(z[l+2]),這里的g是指 ReLU 非線性函數,得到的結果就是a[l+2]

 

這是一個殘差塊,在殘差網絡中有一點變化,我們將a[l]直接向后,拷貝到神經網絡的深層,在 ReLU 非線性激活函數前加上a[l],這是一條捷徑,這就意味着最后這個等式(a[l+2] = g(z[l+2]))去掉了,取而代之的是另一個 ReLU 非線性函數,仍然對z[l+2] 進行 g函數處理,但這次要加上a[l],即: a[l+2] = g(z[l+2] +a[l]),也就是加上的這個a[l]產生了一個殘差塊。在上面這個圖中,我們也可以畫一條捷徑,直達第二層。實際上這條捷徑是在進行 ReLU非線性激活函數之前加上的,而這里的每一個節點都執行了線性函數和 ReLU 激活函數,以a[l]插入的時機是在線性激活之后,ReLU 激活之前。另一個術語“跳躍連接”,就是指a[l]跳過一層或者好幾層,從而將信息傳遞到神經網絡的更深層。ResNet 網絡就是通過將很多這樣的殘差塊堆積在一起,形成一個很深神經網絡,把它變成 ResNet 的方法是加上所有跳躍連接,每兩層增加一個捷徑,構成一個殘差塊。如圖所示,5 個殘差塊連接在一起構成一個殘差網絡。

 

假設z[l+2] 與a[l]具有相同維度,所以 ResNets 使用了許多 same 卷積,所以這個a[l]的維度等於這個輸出層的維度。之所以能實現跳躍連接是因為 same 卷積保留了維度,所以很容易得出這個捷徑連接,並輸出這兩個相同維度的向量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM