第四講 cs224n系列之Word Window分類與神經網絡

1 綜述

這節課介紹了根據上下文預測單詞分類的問題,與常見神經網絡課程套路不同,以間隔最大化爲目標函數,推導了對權值矩陣和詞向量的梯度;初步展示了與傳統機器學習方法不一樣的風格。

本文主要講解:

  • 分類問題背景
  • 在分類任務中融入詞向量
  • 窗口分類和交叉熵誤差推導技巧
  • 一個單層的神經網絡
  • 最大間隔損失和反向傳播

2 分類問題

2.1nlp分類背景

一般情況下我們會有一個訓練模型用的樣本數據集

其中是輸入,例如單詞(標識或者向量),窗口內容,句子,文檔等
是我們希望預測的分類標籤,例如情緒指標,命名實體,買賣決定等
給定訓練集

2.2 從分類到nlp分類

{ x ( i ) , y ( i ) } 1 N

其中 x ( i ) 是一個 d-維向量, y ( i ) 是一個 C-維one-hot向量,N是總數。在傳統的機器學習方法中,往往通過諸如邏輯斯諦迴歸和SVM找到分類決策邊界:

圖片描述

機器學習的角度來看:假設x是固定的,僅僅更新的是邏輯迴歸的權重W意味着僅僅修改的是決策邊界

p ( y j = 1 | x ) = exp ( W j x ) c = 1 C exp ( W c x )

這裏的C是全部的分類,也就是one-hot向量對應的元素個數

計算方法分爲兩個步驟:取權值矩陣的某一行乘上輸入向量,歸一化得到概率。
一般的機器學習問題: 僅僅更新邏輯迴歸的權重意味着僅僅更新的是決策邊界

log ( exp ( W k x ) c = 1 C exp ( W c x ) )

其實這個損失函數等效於交叉熵:

(1) H ( y ^ , y ) = j = 1 | V | y j log ( y ^ j ) (2) = j = 1 C y j log ( p ( y j = 1 | x ) ) (3) = j = 1 C y j log ( exp ( W j x ) c = 1 C exp ( W c x ) ) (4) = y i log ( y ^ i )

這是因爲類別是 one-hot向量

對N個數據點來講有:

i = 1 N log ( exp ( W k ( i ) x ( i ) ) c = 1 C exp ( W c x ( i ) ) )

加上正則化項有:

i = 1 N log ( exp ( W k ( i ) x ( i ) ) c = 1 C exp ( W c x ( i ) ) ) + λ k = 1 C d + | V | d θ k 2

這裏的 θ 就是權值矩陣所有參數( c d )+詞向量參數( | V | d ),這裏相比較傳統分類問題,增加了詞向量所有參數,這也是和傳統分類問題的最大區別

圖片描述

紅線是test error,藍線是training error,橫軸是模型複雜度或迭代次數。直線是方差偏差均衡點。

2.2 基於詞向量的分類優化

  • 一般的ML問題中,參數由權值矩陣的列組成維度不會太大。而在詞向量或其他深度學習中,需要同時學習權值矩陣和詞向量。參數一多,就容易過擬合
    一般的機器學習問題常常只包含了W的列數:

    圖片描述

    引入詞向量之後的參數:
    圖片描述

  • 因爲同時需要同時學習權值矩陣和詞向量,所以基於詞向量的分類問題參數擬合,還會造成re-training詞向量失去泛化效果。
    比如針對電影評價情感數據(movie review sentiment)訓練邏輯迴歸模型,在訓練集裏我們有單詞」TV」和」telly」,在測試集裏我們有單詞「television」,原本它們是相似的單詞(來自於已經訓練的詞向量模型)

    圖片描述

    當我們重新訓練詞向量模型的時候會發生什麼?
    1)在訓練集中的單詞會被重新安排到合適的位置
    2)在已經訓練的詞向量模型中但是不在訓練集中的單詞將保留在原來的位置
    對於上例, 「TV」和」telly」會被重新安排,而」television」則保留在原位,尷尬的事情就發生了:
    圖片描述

    於是在測試集上導致television被誤分類。
    這個例子說明:
    1)如果你只有一個很小的訓練集,不要訓練詞向量模型
    2)如果你有一個足夠大的訓練集,那麼對於相應的任務來說訓練詞向量模型是有益的

基礎知識小課堂:
詞向量矩陣L常被稱作lookup table:

圖片描述

Word vectors = word embeddings = word representations (mostly)
通常通過詞向量矩陣L和one-hot向量e相乘得到單個的詞向量:
x = L e ϵ d × V V × 1

2.3 Window classification

2.3.1 背景

單個單詞的分類任務很少,比較多的是在上下文中解決歧義問題,這是一種根據上下文給單個單詞分類的任務,可以用於消歧或命名實體分類。如下例子:
圖片描述
圖片描述

2.3.2 Window classification

針對2.3.1中提到的問題,windows classification的思路爲:將對一個單詞進行分類的問題擴展到對其臨近詞和上下文窗口進行分類,就是對窗口中的單詞打上標籤同時把它前後的單詞向量進行拼接然後訓練一個分類器
這裏寫圖片描述
這是對於一個句子上下文中的」Paris」進行分類,窗口長度爲2,得到的是一個窗口向量,是一個列向量,可表示爲:

X w i n d o w = x ϵ R 5 d

結合2.2中的思路,使用softmax:
這裏寫圖片描述
J對x求導,注意這裏的x指的是窗口所有單詞的詞向量拼接向量。

(449) Δ x J = x log s o f t m a x ( f y ( x ) ) (450) = c = 1 C log s o f t m a x ( f y ( x ) ) f c f c ( x ) x (451) = [ y 1 ^ y ^ 1 y C ^ ] f c ( x ) x (452) = δ f c ( x ) x (453) = c = 1 C δ c W c T (454) = W T δ R 5 d

這裏 f = f ( x ) = W x ϵ R C

!!!上面的推導沒太看懂…(366)->(367)沒看懂…(可參考鏈接

於是就可以更新詞向量了:

θ J ( θ ) = [ x m u s e u m s x a m a z i n g ]
另一方面,對W求偏導數,將所有參數的偏�
相關文章
相關標籤/搜索