24 Recurrent neural network
接續上一篇。
Recurrent neural network
那大家所熟知的 RNN 是怎麼回事呢?我們把假設改了一下:
- 狀態都是 連續 的。
- 時間是離散的。
- 內在狀態是不能被觀察的,外在狀態是可被觀察的。
- 以一個 隨機向量 作為一個狀態。
- 允許在每個時間點給輸入
- 引入非線性
首先,在這邊的狀態會以一個向量做表示,大家應該也知道 RNN 的 input 是一個向量,當中的狀態也是一個向量,最後的 output 也是一個向量。而這些向量當中的的值都是連續的 $\mathbb{R}^n$(假設向量大小為 n),不像上面的模型都是離散的 $k$(假設有 k 個狀態),所以在空間上的大小可以說是擴大非常多。
接下來我們來看看時間的狀態轉換:
在 RNN 中一樣含有內在狀態,但不同的是 RNN 可以在每個時間點上給輸入向量($\mathbf{x^{(t)}}$),所以可以根據前一個時間點的內在狀態($\mathbf{h^{(t)}}$)跟輸入向量去計算輸出,或是外在狀態($\mathbf{y^{(t)}}$)。
所以大家會在一些論文上看到模型的狀態關係式長下面這個樣子:
$$
\mathbf{h^{(t)}} = f(\mathbf{x^{(t)}}, \mathbf{h^{(t-1)}}) = \mathbf{x^{(t)}} W_x + \mathbf{h^{(t-1)}} W_h + \mathbf{b}
$$
$$
\mathbf{y^{(t)}} = g(\mathbf{h^{(t)}}) = sigm(\mathbf{h^{(t)}} W_y)
$$
這邊特別引入了非線性的轉換($sigm$)來讓模型更強大。
隨著從一開始的馬可夫模型到這邊應該對這幾個模型有點感覺,其實 RNN 可以說是很大的突破,在假設上放了很多元素讓模型變得更強大。
Long short-term memory
人們為了改進 RNN這個模型的記憶性,希望他可以記住更遠以前的東西,所以設計了 LSTM 來替換他的 hidden layer 的運作模式,後期更有 GRU,還有人說只需要 forget gate 就有很強大的效能的 MGU。這些都是對於記憶性做的改進,個人覺得這些在工程上的貢獻比較大,真正學術上的突破其實還好。
今天的整理就先到這邊啦!