RNN 筆記 - 基礎架構

RNN 筆記 - 基礎架構

Recurrent Neural Network (RNN)

Ref 吳尚鴻教授上課影片 from Youtube: https://www.youtube.com/watch?v=2btuy_-Fw3c&list=PLlPcwHqLqJDkVO0zHMqswX1jA9Xw7OSOK
本篇主要透過數學表達式,來探討 RNN 之架構

Vanilla RNN

RNN Dataset

Dataset: 


  • sequence, where the superscript n can be omitted for simplicity
    很多的 x,y pair
    •  代表第n個 data point
    • 資料點 x 維度是 
    • 資料點 y 維度是 
    •  代表時間維度,稱為 horizon
  •  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 版本
從左圖 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 就可以來預測看哪個球員最後會贏!

Recursive RNNs

基本 RNN 的問題:
越早發生的時間點影響力越小,要離現在時間點越近的weight影響力才會越大,這樣的架構下,對於文意判讀會有問題
NLP 裡面的例子
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!


相關文章整理

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking