RNN & LSTM === ## RNN (Recurrent neural network) RNN 遞歸神經網路的關鍵特點是在設計神經網路時,考量到「時間」的因素,因此模型能把前一個時間點的輸出當作「記憶」帶進下一個時間點。而這樣有「記憶功能」設計目的是為了要處理序列資料,像是語言、音樂、時間序列等。 #### 舉例 下面用晚餐吃什麼來做例子,假設每天的晚餐有三種選項:pizza, sushi, waffles 1. 每天晚餐的選項是會有規律的變換,如下圖:  2. 除了用昨天的結果來預測今天,還可以用前天的結果預測昨天在拿來預測今天(這裡可以看出時間序列的概念)  晚餐的結果可以變成用one-hot vector表示,如下圖:  3. 前面晚餐選項的圖變成用vector來呈現  4. 對於今天的預測結果可以再拿來預測明天  5. 每一天的預測結果都可以拿來預測下一天,所有時間串起來的圖會像以下這樣  以上這樣就是RNN架構的基本概念解釋。用運算式呈現會像以下這樣:  - 有一串輸入序列 input sequence:$[x₁, x₂, x₃, ..., xₜ]$ - 隨著每個時間步 $t$,只會輸入一個element $xₜ$ - 由上一個 $h_{t-1}$ 和現在的 $x_t$ 綜合計算出隱藏狀態hidden state(memory)$h_t$ - 最後有一個最終輸出 $y_t$ :::info $h_t = tanh(W_x * x_t + W_h * h_{t-1}+ b)$ $y_t = softmax(h_t)$ ::: :::danger RNN在輸入序列很長的狀況下,會有一些問題: - 因為hidden state一層疊一層的關係,導致最一開始(最早)的資訊慢慢被削弱。 - 這樣長期記憶的做法可能會引發梯度消失/爆炸的問題。 因此就有了LSTM的架構。 ::: ## LSTM (Long short-term memory) LSTM 長短期記憶的架構有幾個重要的新元素: - 記憶單元 cell state $C_t$ - 忘記閘 forget gate:決定保留多少舊記憶 - 更新閘 add gate:決定要加入多少新資訊 - 輸入閘 input gate:將新資訊加入記憶中 - 輸出閘 output gate:決定輸出多少記憶為 $h_t$  1. **記憶單元 cell state** 可以想像成是一個貫穿所有單元的一條道路,將資訊從一個單元帶到下一個單元  2. **忘記閘 forget gate** 從前一層的輸出帶進來的資訊 $h_{t-1}$,以及這一層新增加的資訊 $x_i$,去看有多少比例要被忘掉 :::info 使用sigmoid,輸出範圍$0-1$ - 1 → 完全保留 - 0 → 完全忘記 ::: 此時 $C_t$ 先更新為 $C_{t-1}*f_t$  3. **更新閘 add gate** 決定什麼要被記錄下來 - $iₜ = σ(W_i * [hₜ₋₁, xₜ] + b_i)$:這個公式是要計算有多少資訊要留下。(跟忘記閘的計算有點像) - $C̃ₜ/g_t = tanh(W_C * [hₜ₋₁, xₜ] + b_C)$:這個是決定有多少資訊 $Ct$ 要用來更新記憶單元。 (重要程度) :::info - 使用sigmoid,輸出範圍$[0,1]$ --> 控管閘門,要不要過去 - 使用tanh,輸出範圍$[-1,1]$ --> 控管重要程度 所以在這裡是資訊的**重要程度**乘上**有沒有存在的必要** - 重要程度:$g_t$ - 存在必要:$i_t$ 課本中的$j_t$ => $j_t = g_t*i_t$ :::  4. **輸入閘 inout gate** input gate 是更新記憶單元 $c_t$ --> $c_t = k_t+j_t$ 可以想成:忘記部分舊的 + 加入部分新的  5. **輸出閘 output gate** 從上一步驟的結果 $Ct$,再透過 sigmoid & activation function 的調控,來決定最終要用作明天預測的「記憶」是什麼。  ## References 1. [淺談遞歸神經網路 (RNN) 與長短期記憶模型 (LSTM)](https://tengyuanchang.medium.com/%E6%B7%BA%E8%AB%87%E9%81%9E%E6%AD%B8%E7%A5%9E%E7%B6%93%E7%B6%B2%E8%B7%AF-rnn-%E8%88%87%E9%95%B7%E7%9F%AD%E6%9C%9F%E8%A8%98%E6%86%B6%E6%A8%A1%E5%9E%8B-lstm-300cbe5efcc3) 2. [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) 3. [遞歸神經網路(RNN)和長短期記憶模型(LSTM)的運作原理](https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_rnns_lstm_work.html)
×
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