iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 26
0

今日目標

  • 了解 LSTM 內部結構

介紹

之前提到了 LSTM 可以有效的解決 gradient vanishing 的問題,那到底其中的結構有什麼魔法呢?讓我們從以下的內部結構圖來看一下.

Cell State

LSTM 的第一個定義是 cell 裡面會存著狀態 (state) : C(t) ,而 C(t) 會跟上個時間點 C(t-1) 有關,當然在時間點 t 會對其做些修改,然後再繼續傳遞給下一個時間點 t+1.

lstm_inner1

Forget Gate

第二個特性是其中會有一個 forget gate 來決定上一個時刻的 C(t-1) 中的內容哪些要保留哪些要留下來,而這是由 H(t-1) 以及 X(t) 經過一個 sigmoid 所決定的,其輸出的內容是一個 0 到 1 的數,0 代表完全捨棄;1 代表完全留下.而這個結果會乘上 C(t-1) 來決定過去的狀態有哪些要被留下,以及留下的程度.

http://ithelp.ithome.com.tw/upload/images/20170114/20103494UYeGfMbtxE.png

lstm_inner2

Input Gate

接著要決定的事情是在 cell 狀態裡面要加入哪些新的資訊,其中新的資訊由 X(t) 以及 H(t-1) 經過 tanh 產生,而資訊的強弱程度則由 X(t) 以及 H(t-1) 經過 sigmoid 來決定.

http://ithelp.ithome.com.tw/upload/images/20170114/20103494VR9PGTAVQc.png

最後新的 cell 狀態 C(t) 會由舊狀態 (C(t-1)) 和其遺忘的程度 (f(t)) 加上新訊息 (i(t)) 所決定.

http://ithelp.ithome.com.tw/upload/images/20170114/20103494klgDYCMZOl.png

lstm_inner3

Output Gate

最後還需要來決定輸出 H(t),其會由 cell 的狀態加上一些操作來決定.首先它會把 C(t) 乘上一個 tanh 來把它的數值轉換到 -1 以及 1 之間,之後乘上 H(t-1) 以及 X(t) 經過 sigmoid 的值,以此決定輸出數值的強弱程度.到此就完成了一個標準的 LSTM.

http://ithelp.ithome.com.tw/upload/images/20170114/201034941PbYMzuPa8.png

lstm_inner4

小結

經由圖解以及數學式了解了一個基本的 LSTM 內部基本結構,

問題

嘗試使用基本的 tensorflow op 來實現此 LSTM 結構.

學習資源連結


上一篇
Tensorflow Day25 Recurrent Neural Network with MNIST
下一篇
Day 27
系列文
tensorflow 學習筆記30

尚未有邦友留言

立即登入留言