如何產生好的詞向量?
詞向量、詞嵌入(word vector,word embedding)也稱分布式表示(distributed representation),想必任何一個做NLP的研究者都不陌生。如今詞向量已經被廣泛應用於各自NLP任務中,研究者們也提出了不少產生詞向量的模型並開發成實用的工具供大家使用。在使用這些工具產生詞向量時,不同的訓練數據,參數,模型等都會對產生的詞向量有所影響,那么如何產生好的詞向量對於工程來說很重要。中科院自動化所的來斯惟博士對此進行了詳細的研究。本篇博客也是我閱讀來博士發表的論文《How to Generate a Good Word Embedding?》和其博士論文的筆記,並結合自己平時實驗的經驗總結出來的,希望對大家在訓練詞向量時有所幫助。
1 詞的表示技術
在來博士的博士論文中概述了現有的主要詞表示技術,我在此也先簡單進行介紹。
1.1 獨熱表示技術(早期傳統的表示技術)
1.2 分布表示技術(與獨熱表示技術相對應,基於分布式假說[即上下文相似的詞,其語義也相似],把信息分布式地存儲在向量的各個維度中的表示方法,具有緊密低維,捕捉了句法、語義信息特點)
- 基於矩陣的分布表示
- 基於聚類的分布表示
通過聚類手段構建詞與其上下文之間的關系。代表模型:布朗聚類(Brown clustering)。
-
基於神經網絡的分布表示(這是我們下面要研究的主要方法,在此介紹幾種代表性模型)
神經網絡語言模型(NNLM)
Log雙線性語言模型(LBL)
C&W模型
Continuous Bag-of-Words(CBOW)
Skip-gram(SG)
Word2vec工具中的兩個模型
Order模型
在上面CBOW模型的在輸入層是直接進行求和,這樣並沒有考慮詞之前的序列順序,所以來博士把直接求和改為了詞向量之間的順序拼接來保存序列順序信息。
模型理論比較
2各種模型的實驗對比分析
整個實驗是圍繞下面幾個問題進行的:
- 如何選擇合適的模型?
- 訓練語料的大小及領域對詞向量有什么影響?
-
如何選擇訓練詞向量的參數?
- 迭代次數
- 詞向量維度
評價任務
詞向量的語言學特性
- 詞義相關性(ws): WordSim353數據集,詞對語義打分。皮爾遜系數評價。
- 同義詞檢測(tfl): TOEFL數據集,80個單選題。准確率評價
- 單詞語義類比(sem): 9000個問題。queen-king+man=women。准確率
- 單詞句法類比(syn): 1W個問題。dancing-dance+predict=predicting。准確率
詞向量用作特征
- 基於平均詞向量的文本分類(avg): IMDB數據集,Logistic分類。准確率評價
- 命名實體識別(ner): CoNLL03數據集,作為現有系統的額外特征。F1值
詞向量用作神經網絡模型的初始值
- 基於卷積的文本分類(cnn): 斯坦福情感樹庫數據集,詞向量不固定。准確率
- 詞性標注(pos): 華爾街日報數據集,Collobert等人提出的NN。准確率
實驗結果(紅色字體為博主自己總結,黑色字體為論文結論)
模型比較
- 對於評價語言學特性的任務,通過上下文預測目標詞的模型,比上下文與目標詞聯合打分的C&W模型效果更好。
- 對於實際的自然語言處理任務,各模型的差異不大,選用簡單的模型即可。
- 簡單模型在小語料上整體表現更好,而復雜的模型需要更大的語料作支撐。
語料影響
- 同領域的語料,一般語料越大效果越好
- 領域內的語料對相似領域任務的效果提升非常明顯,但在領域不契合時甚至會有負面作用。
- 在自然語言任務上,同領域的語料10M效果明顯差,但是100M以上擴大語料,任務結果的差異較小。
規模和領域的權衡
- 語料的領域純度比語料規模更重要。(特別是在任務領域的語料比較小時,加入大量其他領域的語料可能會有很負面的影響)
參數選擇
迭代次數
- 根據詞向量的損失函數選擇迭代次數不合適。
- 條件允許的話,選擇目標任務的驗證集性能作為參考標准。
- 具體任務性能指標趨勢一樣,可以選簡單任務的性能峰值。
- 使用word2vec工具中demo的默認參數,15~25次差不多。
詞向量維度
- 對於分析詞向量語言學特性的任務,維度越大效果越好。
- 對於提升自然語言處理任務而言,50維詞向量通常就足夠好。(這里我覺得只能說是某些任務,不過趨勢是一致的,隨着詞向量維度的增加,性能曲線先增長后趨近於平緩,甚至下降)
3 總結
- 選擇一個合適的模型。復雜的模型相比簡單的模型,在較大的語料中才有優勢。(在word2vec工具中我一般使用SG模型)
- 選擇一個合適領域的語料,在此前提下,語料規模越大越好。使用大規模的語料進行訓練,可以普遍提升詞向量的性能,如果使用領域內的語料,對同領域的任務會有顯著的提升。(訓練語料不要過小,一般使用同領域語料達到100M規模)
- 訓練時,迭代優化的終止條件最好根據具體任務的驗證集來判斷,或者近似地選取其它類似的任務作為指標,但是不應該選用訓練詞向量時的損失函數。(迭代參數我一般使用根據訓練語料大小,一般選用10~25次)
-
詞向量的維度一般需要選擇50維及以上,特別當衡量詞向量的語言學特性時,詞向量的維度越大,效果越好。(一般根據具體任務進行實驗,最后根據性能和實驗需使用的時間選擇合適的詞向量維度)
主要參考文獻
[1] Lai S, Liu K, Xu L, et al. How to Generate a Good Word Embedding?. arXiv preprint arXiv:1507.05523, 2015.
[2] 來斯惟. 基於神經網絡的詞和文檔語義向量表示方法研究. 中科院自動化所,博士論文,2016.