iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0

接續上一篇。

Recurrent neural network

那大家所熟知的 RNN 是怎麼回事呢?我們把假設改了一下:

  • 狀態都是 連續 的。
  • 時間是離散的。
  • 內在狀態是不能被觀察的,外在狀態是可被觀察的。
  • 以一個 隨機向量 作為一個狀態。
  • 允許在每個時間點給輸入
  • 引入非線性

首先,在這邊的狀態會以一個向量做表示,大家應該也知道 RNN 的 input 是一個向量,當中的狀態也是一個向量,最後的 output 也是一個向量。而這些向量當中的的值都是連續的 https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbb%7BR%7D%5En(假設向量大小為 n),不像上面的模型都是離散的 k(假設有 k 個狀態),所以在空間上的大小可以說是擴大非常多。

接下來我們來看看時間的狀態轉換:

在 RNN 中一樣含有內在狀態,但不同的是 RNN 可以在每個時間點上給輸入向量(https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7Bx%5E%7B(t)%7D%7D),所以可以根據前一個時間點的內在狀態(https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7Bh%5E%7B(t)%7D%7D)跟輸入向量去計算輸出,或是外在狀態(https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7By%5E%7B(t)%7D%7D)。

所以大家會在一些論文上看到模型的狀態關係式長下面這個樣子:

https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7Bh%5E%7B(t)%7D%7D%20%3D%20f(%5Cmathbf%7Bx%5E%7B(t)%7D%7D%2C%20%5Cmathbf%7Bh%5E%7B(t-1)%7D%7D)%20%3D%20%5Cmathbf%7Bx%5E%7B(t)%7D%7D%20W_x%20%2B%20%5Cmathbf%7Bh%5E%7B(t-1)%7D%7D%20W_h%20%2B%20%5Cmathbf%7Bb%7D

https://chart.googleapis.com/chart?cht=tx&chl=%5Cmathbf%7By%5E%7B(t)%7D%7D%20%3D%20g(%5Cmathbf%7Bh%5E%7B(t)%7D%7D)%20%3D%20sigm(%5Cmathbf%7Bh%5E%7B(t)%7D%7D%20W_y)

這邊特別引入了非線性的轉換(https://chart.googleapis.com/chart?cht=tx&chl=sigm)來讓模型更強大。

隨著從一開始的馬可夫模型到這邊應該對這幾個模型有點感覺,其實 RNN 可以說是很大的突破,在假設上放了很多元素讓模型變得更強大。

Long short-term memory

人們為了改進 RNN這個模型的記憶性,希望他可以記住更遠以前的東西,所以設計了 LSTM 來替換他的 hidden layer 的運作模式,後期更有 GRU,還有人說只需要 forget gate 就有很強大的效能的 MGU。這些都是對於記憶性做的改進,個人覺得這些在工程上的貢獻比較大,真正學術上的突破其實還好。

今天的整理就先到這邊啦!


上一篇
23 Markov chain 及 HMM
下一篇
25 Recurrent model 之死
系列文
機器學習模型圖書館:從傳統模型到深度學習31

尚未有邦友留言

立即登入留言