RNN 筆記 - 基礎架構
RNN 筆記 - 基礎架構
Recurrent Neural Network (RNN)
Ref 吳尚鴻教授上課影片 from Youtube: https://www.youtube.com/watch?v=2btuy_-Fw3c&list=PLlPcwHqLqJDkVO0zHMqswX1jA9Xw7OSOK
Ref 吳尚鴻教授上課影片 from Youtube: https://www.youtube.com/watch?v=2btuy_-Fw3c&list=PLlPcwHqLqJDkVO0zHMqswX1jA9Xw7OSOK
Ref LaTeX Math Symbols: http://web.ift.uib.no/Teori/KURS/WRK/TeX/symALL.html
本篇主要透過數學表達式,來探討 RNN 之架構
Vanilla RNN
RNN Dataset
Dataset:
a sequence, where the superscript can be omitted for simplicity
很多的 x,y pair- is called the horizon and may be different between and
注意: x 跟 y 的 horizon 不一定會相同,可能某些時間點才會同時出現 x 跟 y,而某些時間點只有 x - depends on
RNN Architecture
- Output depends on hidden activations
k 代表第 k 層
t 代表時間點
對於第 k 層的神經元過 activation a() 函式數值的影響,來自於兩個東西:
一個是上一個時間點 (t-1) 同為第 k 層神經元所傳送過來的數值 + 目前時間點 (t),前一層 (k-1) 層傳送過來的數值 - p.s. 這裏的數學式省略沒寫 Bias(實際上還要加上 Bias 才完整)
- summarizes
- Earlier points are less important
公式深入探討:
- U 跟 W 函數當中,並沒有時間的維度,因此 Weights are shared across time instances不隨著時間改變,U 跟 W 訓練出來後,在所有時間點可以共用
- Assumes that the “transition functions” are time invariant
RNN 假設 transition of U, W 不會隨著時間改變 - Our goal is to learn 's and 's for
RNNs have Memory
RNN and be folded in time
右圖: 把所有的時間點都畫一份
左圖: 把右圖的表達畫成 fold 版本
左圖: 把右圖的表達畫成 fold 版本
從左圖 folding 的圖看,就可以觀察出,上一個時間點的 a 很明顯的需要先"記下來"放在 Memory 裡面,等待給下一個時間點來使用
RNN 的變形
從 Input Output 來看
例子:
- One to Many -> Image Captioning
input: 一張圖
output: 多個文字來描述這張圖片
- Many to One -> Sentiment Analysis
input: 一個電影的 Review
Output: 正評還是負評
如果這個例子使用 word vector 單純去 encode 去做的話,可能會被 Reward wins 等字誤導為正面很多的評價,實際上這句是個諷刺的獎項,要從前後文來推敲意思! - Many to Many (Synced): Video Keyframe Tagging
input: 影片
output: 一系列的 tag 點出哪些時間點發球出去
- Many to Many (Unsynced): Machine Translation
input: 中文原文
output: 英文翻譯
中英文並非一對一的關係
中文字必須要看到若干個字之後,才能翻譯出正確的一個英文單字
這樣的案例又稱為sequence to sequence learning
Bidirectional RNNs
原本的 RNN
𝑎(𝑘,𝑡)=𝑎𝑐𝑡(𝑈(𝑘)𝑎(𝑘,𝑡−1)+𝑊(𝑘)𝑎(𝑘−1,𝑡))
第 k 層的除了看過去時間點傳來的參數,也看未來時間點一路傳過來的參數
以網球比賽影片為例: 我們可以多取一些獲勝球員的精彩畫面,來訓練 RNN
這樣的訓練之下的 Model 就可以來預測看哪個球員最後會贏!
這樣的訓練之下的 Model 就可以來預測看哪個球員最後會贏!
Recursive RNNs
基本 RNN 的問題:
越早發生的時間點影響力越小,要離現在時間點越近的weight影響力才會越大,這樣的架構下,對於文意判讀會有問題
越早發生的時間點影響力越小,要離現在時間點越近的weight影響力才會越大,這樣的架構下,對於文意判讀會有問題
NLP 裡面的例子
Given movie review:
Given movie review:
- create a parse tree 來 parse sentence
- define Neural Network on the tree
Tree 裡面的定義了字跟字之間的關係
U 跟 W 可以是 invariant 的:
在每一個 merged point 都可以是不變的,讓 machine 在每一個點都使用同樣一組 U 跟 W 來 merge 出新的 root
這樣的 RNN 裡面每一個 substructure 都是 recursively shared!
留言
張貼留言