上一篇我們講到了,怎麼讓計算機理解人類的語言,那就是構建讓計算機可以理解的one-hot向量,
但是由於語料庫太龐大,one-hot容易導致維度災難,並且不能計算詞之間的相似性,所以我們引入了Word Embedding的概念。
Word Embedding 在one-hot的基礎上壓縮了描述語料庫的維度,從原先的V-dim降低爲了自己設定的K值,Word Embedding是Word2Vecmo模型的中間產物,是在不斷最小化損失函數時候,不斷迭代更新生成的。
PS: word2vec的經典之作 Xin Rong 論文
本篇文章介紹了基於窗口的共現矩陣的方法,引入GloVe。最後介紹了內部和外部詞向量評估機制
Window based co-occurrence matrix
什麼爲共線矩陣(co-occurrence matrix )?
這種方法存在以下問題:
詞彙增加,維度增加
高緯度,需要大量存儲空間
後面分類模型存在稀疏性問題,導致模型不健壯
解決辦法:降維——如何降?
對共現矩陣進行奇異值分解(SVD)
但是一些功能詞(the, he, has)出現太過頻繁,對語法(syntax)影響較大,上圖所示的效果並不十分理想,需要對進行改進:
- 限制高頻詞的頻次,min(X,t),with t~100 ,或者乾脆忽略這些高頻詞
- 增加的窗口更精確地計算相近的單詞(ampedwindows that count closer words more)用皮爾遜相關係數( Pearson correlations)代替詞頻(counts),然後將負值設置爲0。
GloVe模型
- 模型目標:進行詞的向量化表示,使得向量之間儘可能多地蘊含語義和語法的信息
- 輸入:語料庫
- 輸出:詞向量
GloVe目標是綜合基於統計和基於預測的兩種方法的優點。
模型目標:詞進行向量化表示,使得向量之間儘可能多地蘊含語義和語法的信息
流程:輸入語料庫–> 統計共現矩陣–> 訓練詞向量–>輸出詞向量
目標函數:
How to evaluate word vectors?
1.Intrinsic:內部詞向量評估:詞向量類比。
通過對詞向量的餘弦距離分析可得到直觀的語義和語法問題。
通過Glove可視化,會發現這些類推的向量是近乎平行的。
關於調參:
- 維度最好爲0-300,但對於downstream的任務可能不同。
- 不對稱的上下文(只對左邊的單詞)結果不太好
- 窗口大小爲8的對稱窗口對Glove向量效果好。
- 更長的訓練時間會幫助提升模型的效果
- 更多的數據
2.Extrinsic:實體命名識別會起到很大的幫助
Word senses and word sense ambiguity
關於單詞歧義的消除:通過對上下文的聚類分門別類地重新訓練