# 李宏毅_ATDL_Lecture_6 ###### tags: `Hung-yi Lee` `NTU` `Advance Topics in Deep Learning` [課程撥放清單](https://www.youtube.com/channel/UC2ggjtuuWvxrHHHiaDH1dlQ/playlists) ## Highway Network & Grid LSTM [課程連結](https://www.youtube.com/watch?v=dxB6299gpvI&list=PLJV_el3uVTsPMxPbjeX7PicgWbY7F8wW9&index=6) ### Feedforward v.s. Recurrent ![](https://i.imgur.com/KqXHLcb.png) 在說明`Highway Network`之前先回顧`Feedforward`與`Recurrent` 上圖說明著兩者的計算過程: * Feedforward * 經過`t`層之後得到`y`,每個`f`皆不相同 * 這邊的`t`所指為Layer * 只有一開始有輸入`x` * Recurrent * 同一個`f`不斷計算,最後經過`g`得到`y` * 這邊的`t`所指為`time step` * 每個`time step`皆輸入`x` 把RNN豎直,它就可以是一個`Feedforward` ### GRU -> Highway Network ![](https://i.imgur.com/d49URYU.png) ![](https://i.imgur.com/GAsLjVS.png) `Highway Network`的想法就是要將`RNN`豎直,測試是否可以訓練出一個非常深的`NN`,這邊說明將`GRU`調整為`Highway Network` 上圖為原始`GRU`,下圖為調整之後`GRU` 1. 將每個時步的`x^t`取消掉 2. 將每個時步的`y^t`取消掉 3. 將`h`調整為`a` * 原$h^{t-1}$指第$t-1$個時步的輸出,調整為$a^{t-1}$代表第$t-1$個Layer的輸出 4. 取消`reset gate` * 原`GRU`中每一個時步皆有輸入,因此不重要的事就可以忘掉,但在`Highway Network`中只有最開始有輸入,如果過程中忘掉資訊,後面就沒有任何資訊了。 * 另類想法上,取消`reset gate`也減少大量參數 ### Highway Network ![](https://i.imgur.com/FzclWke.png) 調整架構之後將橫圖豎直,輸入$a^{t-1}$在下,輸出$a^t$在上,在取消掉`reset gate`之後,剩下`update gate` 1. $h'=\sigma(Wa^{t-1})$ 2. `update gate`: $z=\sigma(W'a^{t-1})$ * 操控紅色箭頭處 3. $a^t=z\odot a^{t-1}+(1-z)\odot h$ * `GRU`中,`update gate`是`input gate`與`forget gate`的綜合,因此兩者連動 以上,就是`Highway Network`,後來微軟又出現了`Residual Network`,更精簡的版本,連`Z`都不要了,直接將$a^{t-1}$與$h'$相加得到$a^t$ 有人提過,`Rdsidual Network`就是將`LSTM`豎直。 ### Highway Network ![](https://i.imgur.com/mnlg0O9.png) `Highway Network`可以自動決定要用幾個Layer。 ### Highway Network ![](https://i.imgur.com/aNAGFWn.png) 上圖是將`Highway Network`應用於MNIST與CIFAR-100兩個資料集。 * 橫軸:層數 * 縱軸:Loss 作法上是將一個訓練好擁有50層的`Highway Network`直接拔掉一層,看他在訓練資料集中的變化,如果沒有任何影響,代表它在過程中是直接被pass掉的。 可以發現到,在MNIST中間有一大部份被拿掉之後對結果是沒有影響的,這代表訓練過程模型自己發現到前面幾層才是有用的。 而在CIFAR-100上拿掉幾個Layer都對模型有影響,這是因為CIFAR-100的資料較為複雜 ### Grid LSTM ![](https://i.imgur.com/TW8FG2f.png) ![](https://i.imgur.com/DgfAYFX.png) `LSTM`不止可以豎直,還可以橫向發展,這就是`Grid LSTM`。 左圖是原始`LSTM`,與右邊`Grid LSTM`的差異在於輸入的部份由一個原本的`x`,變化為`a, b`,以此方式同時擁有時間$h$與深度$b$的Memory ### Grid LSTM ![](https://i.imgur.com/PrS4e0x.png) 加入深度的Memory非常直觀,只要將$h, b$並在一起,$c, a$並在一起,其它相同去做計算就可以產生相對應的$c', a', b', h,$ ### 3D Grid LSTM ![](https://i.imgur.com/HMh1dB6.png) 同樣的邏輯也可以套用在3維的情況,左圖是老師畫的,右圖是論文上的。