基於pytorch實現HighWay Networks之Highway Networks詳解


(一)簡述---承接上文---基於pytorch實現HighWay Networks之Train Deep Networks##

上文已經介紹過Highway Netwotrks提出的目的就是解決深層神經網絡訓練困難的問題,以及簡單的解釋了為什么深層神經網絡會出現梯度消失和梯度爆炸的問題,這里詳細的介紹一些Highway Networks以及使用pytorch實現Highway Networks。

(二)Highway Networks##

  • 什么是Highway Networks?

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

  • Notation

(.)操作代表的是矩陣按位相乘

sigmoid函數:sigmoid= 1/(1+e^(-x) )

  • Highway Networks formula

普通的神經網絡由L層組成,用H將輸入的x轉換成y,忽略bias。H是非線性激活函數,但是,通常呀可以采用其他的形式,像convolutional和recuerrent。

對於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,原始信息全部轉換,不在保留原始信息,僅僅相當於一個普通的神經網絡。

  • 搭建Highway Networks策略

上文已經說過,x,y,H,T的維度必須是一致的,這里提供了兩種策略:

采用sub-sampling或者zero-padding(下采樣或者是補零的操作)。

使用普通的線性層改變維度,不使用Highway。

  • 個人實驗結果

在相同的參數情況下測試了不同深度的神經網絡對於情感分析5分類任務的准確率,從圖中可以看出淺層神經網絡對比變化不是很明顯,5層的話就有了一些變化,准確率相差了一個點左右。由於硬件資源,更加深的深層神經網絡還沒有測試。

  • Paper 實驗結果

從論文的實驗結果來看,當深層神經網絡的層數能夠達到50層甚至100層的時候,loss也能夠下降的很快,猶如幾層的神經網絡一樣,與普通的深層神經網絡形成了鮮明的對比。

  • Demo

在pytorch上實現了多個Highway Networks,其中包括單純的Highway Networks,以及convolution Highway Networks、LSTm Highway Networks以及Highway Networks的一些變種。

Highway Networks implement in pytorch

References

Notation

**歡迎轉載、轉載請注明出處。http://www.cnblogs.com/bamtercelboo/p/7581364.html **


免責聲明!

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



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