iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 7
0

\祝我生日快樂/

Long Short-term Memory

以上都是以最基本的RNN延伸出的模型,但其實看到這裡可能會覺得很奇怪,因為如果前面的資料已經跑過去很多時,Output的值可能會越來越大,或者是每個hidden layer能夠參考的記憶只有上一個資料。於是Long Short-term Memory可以將這些問題都解決。

https://ithelp.ithome.com.tw/upload/images/20190919/20103852egJJ4aIUN0.png

在LSTM中的Memory cell中除了原本的Input之外,還有三個不同的Gate分別為:

  • Input Gate,是否將資料傳進Memory中
  • Forget Gate,會決定是否將Memory的值儲存起來運用到下一次
  • Output Gate,是否將資料從Memory輸出

而這些Gate的函數都會經由Machine訓練而來,不用擔心為什麼會出現這些東西:)

這三個Gate會決定數值的行蹤。每個Gate都有它的Signal,而這些數值都是從原本的Input來的。每一個Gate都會決定當前的資料要不要繼續放到下一個步驟或是要不要儲存到下一次的計算,當這個Gate接近1時,資料會繼續傳遞,而當Gate接近0時,資料就不會繼續傳遞。

總之,這個神經元會有4個input、1個Output及一個數值儲存在Memory cell中。

請把 dash 放在 Shortterm 中,原本的Short-term Memory只能記住上一個資料,而LSTM只要不把Forget get關掉就可以讓資料一直傳遞下去。 - 李宏毅

https://ithelp.ithome.com.tw/upload/images/20190920/201038527mx6NgOg0l.png

不過這裡還是簡短說明一下:

Input Gate, Forget Gate, Output Gate會被Zi, Zf, Zo這三個參數影響,而每個Gate都會有各自的Function(是ML出來的結果),所以三個值都會經過Function變成f(Zi), f(Zf), f(Zo),而這三個值會介於0和1之間,決定這個Gate要不要開啟。

那就和輸入Z來一起經過一個LSTM的Memory cell吧!

  1. 將Z經過g(x)得到Z = g(Z)
  2. Z被f(Zi)決定要不要通過:Z = Z*f(Zi)
  3. Z通過Memory cell並決定要不要紀錄資料:c = Z = Z + c*f(Zf)
  4. Z經過h(x)得到Z = h(Z)
  5. Z被f(Zo)決定要不要輸出:Z = Z*f(Zo)
  6. 將Z輸出

特別解釋Forget Gate,如果被打開時代表記得,被關閉時代表遺忘,和一般的認知不同要注意一下。

其實李宏毅在影片中的第30分鐘開始約7分鐘都是在「手動模擬」LSTM單一個細胞在處理一串資料時的動作,只要看完基本上就可以了解LSTM的意義了。(投影片真的做很久qq


上一篇
【Day 06】RNN學習筆記 Part II
下一篇
【Day 08】RNN學習筆記 Part IV
系列文
我是高中生,我學ML和NLP20

尚未有邦友留言

立即登入留言