# RNN, LSTM [Python] 參考資料: HUNG-YI LEE (李弘毅) Machine Learning (2017,Spring) [課程](https://www.youtube.com/watch?v=xCGidAeyS4M&t=467s&ab_channel=Hung-yiLee)、[投影片](http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/RNN.pdf) ## Recurrent Nerual Network ### Memory Cell * RNN與一般神經網路相比多了 <font color = "6288BD">**Memory Cell**</font> ,可以記憶前面發生的事 (紀錄 hidden layer 值的稱為 Elman Network,紀錄 output 值的稱為 Jordan Network,後者被認為表現較好) 1. 在RNN建立初始就必須給予 <font color = "6288BD">**Memory Cell**</font> 初始值,假設初始值為 0,<font color = "F2BA48"> **input** </font> 就會多一組 <font color = "6288BD">**Memory Cell**</font> 的 <font color = "F2BA48"> **input** </font> ,從  變成   <br> 2. 接著,<font color = "6288BD">**Memory Cell**</font> 會隨著每一次不斷更新成前一組 <font color = "81AB70">**Neuron**</font> 的值, 下一組的 <font color = "F2BA48"> **input** </font> 就會是   <br> 再下一組 <font color = "F2BA48"> **input** </font> 就會是  * Memory Cell 讓 input 每一組的順序 (sequence order) 都有相關聯,如果任意改動順序,結果也會跟著改變  <br> 3. 每一層 hidden layer都會有一個 memory cell 記錄前一次的結果,再進行下一次的計算  <br> 4. 雙向RNN * 把兩個 rnn 的 hidden layer 取出後,再放到一層 output layer 產生最後的結果  <br> ## Long Short-term Memory ### Input Gate, Forget Gate, Memory Cell, Output Gate * LSTM 多了不同的架構 <font color = "F17A49"> **Input Gate** </font> 可以控制hidden layer 或是 output的值能不能被記錄到 <font color = "6288BD">**Memory Cell**</font> <font color = "81AB70">**Forget Gate**</font> 可以控制 <font color = "6288BD">**Memory Cell**</font> 裡面的值是否要更新 <font color = "F2BA48"> **Output Gate** </font> 可以控制 <font color = "6288BD">**Memory Cell**</font> 裡的紀錄能不能在計算的時候被讀取 * LSTM 的 input 就會有 4 個 ( input, 控制 <font color = "F17A49"> **Input Gate** </font> 的訊號, 控制 <font color = "81AB70">**Forget Gate**</font> 的訊號, 控制 <font color = "F2BA48"> **Output Gate** </font> 的訊號 ),output 會有一個  <br> ### 計算流程 (sigmoid 會介於 0 ~ 1 之間,也代表 gate 開啟的訊號)  1. input z 先通過一層 activation function 變成  input gate 的訊號 ,先通過一層 sigmoid 變成  = 0 代表關閉,1 代表開啟 我們會把 input 乘積在一起  2. forget gate 的訊號  會先通過一層 sigmoid 變成  = 0 代表開啟, 1 代表關閉 我們會把 forget gate 和 memory cell 乘在一起  3. memory cell 的值會被更新  4. memory cell 的值會再通過一層 activation function 變成  output gate的訊號  會先通過一層 sigmoid 變成  = 0 代表關閉,1 代表開啟 我們會把 memory cell 和 output gate 乘在一起  當作 output a ###### tags: `Python`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up