GloVe 與 fasttext

glove

對於一個詞 i 出現的次數爲 XiX_i,在其某個窗口範圍內的詞 j 出現的次數爲 XijX_{ij}XijX_{ij} 可以直接得到,XiX_i 爲所有 XijX_{ij} 的累加和。對於 i 來說,共現矩陣要對所有 i 出現的地方計算 XijX_{ij},最後再累加求和得到 XiX_i。共現矩陣局算的是概率值 Pij=P(ji)=XijXiP_{ij} = P(j|i) = \frac{X_{ij}}{X_i}
j 是 在 i 的窗口內出現的,所以利用到了局部窗口信息;次數的計算利用到了所有 i 和 j 共同出現的地方,這是全局信息。

glove 詞向量爲什麼能夠表現出詞的意義?
假設有 3 個詞:i,j,k。

  • 如果詞 k 與 i 關聯較大,與 j 關聯較小,那麼 PikP_{ik} 較大,PjkP_{jk} 較小,PikPjk\frac{P_{ik}}{P_{jk}} 遠大於 1;
  • 如果詞 k 與 i 關聯較小,與 j 關聯較大,那麼 PikP_{ik} 較小,PjkP_{jk} 較大,PikPjk\frac{P_{ik}}{P_{jk}} 遠小於 1;
  • 如果詞 k 與 i 關聯較小,與 j 關聯較小,那麼 PikP_{ik} 較小,PjkP_{jk} 較小,PikPjk\frac{P_{ik}}{P_{jk}} 約等於 1;

這樣子是不是就可以某種程度上表現出詞的意義來了。
因爲是由向量出現的比值來表現詞的意義的,那麼我們的模型應該由概率比值來呈現。
最初模型爲:
F(wi,wj,wk)=PikPjkF(w_i,w_j,w_k) = \frac{P_{ik}}{P_{jk}}
(其中 wkw_k 爲上下文向量)
因爲一個好的word vector應當是線性可加減的,因此對於word之間的差異,可以用減法來進行衡量,所以:
F(wiwj,wk)=PikPjkF(w_i-w_j,w_k) = \frac{P_{ik}}{P_{jk}}
又等式右邊是一個標量,那麼,將 F 內部表示成向量乘積的形式是一種很簡便的方法:
F((wiwj)Twk)=PikPjkF((w_i-w_j)^Tw_k) = \frac{P_{ik}}{P_{jk}}
又由於詞向量與上下文詞向量的角色不是固定的,我們應該能夠隨意地交換它們的角色,也就是說詞向量和其上下文詞向量的地位應該相等,將它們的位置顛倒 F 也不應該改變。那麼公式應該對稱。令
F((wiwj)Twk)=F(wiTwk)F(wjTwk)F((w_i-w_j)^Tw_k) = \frac{F(w_i^Tw_k)}{F(w^T_jw_k)}
其中, F(wiTwk)=PikF(w_i^Tw_k) = P_{ik}
令 F = exp,那麼:
wiTwk=log(Pik)=log(Xik)log(Xi)w_i^Tw_k = log(P_{ik}) = log(X_{ik})-log(X_i)
log(Xi)log(X_i) 移到左邊,因爲其爲常數,設爲 bib_i,爲了對稱,加上一個常數 bkb_k
那麼:
wiTwk+bi+bk=log(Xik)w_i^Tw_k + b_i + b_k = log(X_{ik})
這個公式具有對稱性,滿足我們的要求(左邊即爲 F(wiTwk)F(w_i^Tw_k)
損失函數爲:
J=f(xij)(wiTwj+bi+bjlogXij)2J = \sum f(x_{ij})(w_i^Tw_j+b_i+b_j-logX_{ij})^2
相對於通常的損失函數多出了一個加權函數 f(xij)f(x_{ij})
該加權函數應該滿足下列條件:

  • f(0) = 0.
  • f(x) 應該爲非減函數
  • 對於很大的值 x,f(x) 應該相對較小

f(x=){(x/xmax)α  if(x<xmax)1  otherwisef(x=)\begin{cases} (x/x_max)^\alpha \ \ if (x < x_{max}) \\ 1 \ \ otherwise \end{cases}
在這裏插入圖片描述

fasttext

三層:輸入層、隱藏層、輸出層。
輸出層爲文本中的單詞經過 lookup-table 得到的 embedding,通過線性變換到隱藏層(加權平均),再經過 softmax 輸出該文本屬於不同類的概率。當然,輸出層可以換成層次 softmax (哈夫曼樹)來提高計算效率。
一個突出的地方 n-gram。原本的輸入是隻有文本中單詞的 embedding,現在還要加上 所有單詞的 n-gram 對應的 embedding。舉例來說 dog 和 dogs ,它們的 1-gram,2-gram。。。基本一樣,對應的 embedding也基本一樣,那麼它們的向量疊加的結果也會基本一樣,這樣子就可以很容易地將他們歸爲一類了。
fasttext 的優點:

  • 特別快
  • 分類效果很好(因爲 n-gram)

參考文獻:

  1. https://pengfoo.com/post/machine-learning/2017-04-11
  2. GloVe: Global Vectors for Word Representation
  3. fastText 原理及實踐
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章