原文地址:https://www.jianshu.com/p/ca2272addeb0
(四)GloVe
GloVe本質是加權最小二乘回歸模型,引入了共現概率矩陣。
1、基本思想
GloVe模型的目標就是獲取每個詞的向量表示\(w\)。GloVe認為,\(w_i\)、\(w_j\)、\(w_k\)通過某種函數\(F\)的作用后呈現出來的規律和\(Ratio_{i,j,k}\)具有一致性,或者說相等,這樣子也就可以認為詞向量中包含了共現概率矩陣中的信息。
2、模型推導
3.word2vec vs GloVe
基於統計 | word2vec | GloVe | |
---|---|---|---|
優 | 訓練快;有效利用了統計信息。 | 更快;更易加詞; 可以通過計算詞向量間余弦相似度計算詞間語義相似度; 可以和后續NN一起訓練。 |
訓練快;可以擴展; 因為考慮了很多統計資訊,即使在小數據庫上、小向量上也能表現得很好。 |
缺 | 捕捉詞間語義相似度太初級; 大count與大重要性之間不相稱。 |
主要收益於大corpus,未有效利用統計信息。 |
(五)fastText
fastText為子詞嵌入模型。假設子詞長度為3個字符,例如,"where"的子詞包括"<wh"、"whe"、"her"、"ere"、"re>"以及特殊子詞即整詞"
對於低頻詞生成的詞向量效果更好,因為它們的字符級n-gram可以和其他詞共享。對於訓練詞庫之外的單詞,仍然可以通過疊加它們的字符級n-gram向量來構建它們的詞向量。
fastText也可以用於文本分類。將文本中所有詞通過lookup table后得到嵌入詞向量,取平均后,直接用線性分類器得到分類結果。線性分類器為只有一層隱藏層且使用的是線性激活函數的神經網絡。fastText論文中也指出了,對於一些比較簡單的任務,沒有必要使用太復雜的網絡結構就可以取得差不多的結果。論文中實驗選取的都是對詞序不是很敏感的數據集,所以得到其實驗結果完全不奇怪。對簡單的任務來說,用簡單的網絡結構進行處理基本就夠了,但是對於比較復雜的任務而言的話,還是需要更復雜的網絡結構來學習文本表征的。
fastText里還提到了2個tricks,分別是:Hierarchical Softmax以及N-gram特征結合Hashing的使用。當輸出類別數較多的時候,通過構建一個霍夫曼編碼樹來加速softmax layer的計算,和之前word2vec中的tricks相同。只用unigram的話會丟掉詞序信息,所以通過加入N-gram特征進行補充,使用哈希來減少N-gram的存儲。
三、評價詞向量
(一)內部評價
1、類比問題
\(w_A:w_B=w_C:w_x\),則
\(x=argmax_x\frac{(V_{w_B}-V_{w_A}+V_{w_C})^TV_{w_x}}{||V_{w_B}-V_{w_A}+V_{w_C}||}\)。
要求內部評價與最終任務的表現有正相關關系。
優點是簡單、計算速度快。
2、詞相關性
將對應詞向量的余弦相似度算出的詞相關性與人類判別得分進行比較。
(二)外部評價
看詞向量用於后續任務是否會帶來好處。常復雜且慢。
四、重新訓練詞向量
我們用於外部評估的詞向量是通過一個簡單的內部評價來進行優化並初始化的。在許多情況下,這些預訓練的詞向量在外部評價中表現良好。但是,這些預訓練的詞向量在外部評價的表現仍然有提高的可能。然而,重新訓練詞向量存在着一定的風險,需要保證訓練集足夠大並能覆蓋詞匯表中大部分的單詞。
通常使用詞向量的方式:
- random
隨機初始化詞向量,隨着網絡一起訓練; - static
使用預訓練的詞向量,訓練中保持不變; - non-static
使用預訓練的詞向量,訓練中一起調整; - multi-channel
將static和non-static拼接起來,形成2通道詞向量,static部分保持不變,non-static部分隨網絡一起調整。