word2vec算出的詞向量怎麼衡量好壞?

除了直觀看,還有什麼辦法。如果面試遇到面試官這麼問,你想怎麼答


拋開面試,我從研究的角度來談一談吧。

去年COLING時和Mikolov討論了一下目前Word Embedding學習的相關工作。他對許多工作表達了強烈的不滿,其中最關鍵的一點就是評價問題。

當前絕大部分工作(比如以各種方式改進word embedding)都是依賴wordsim353等辭彙相似性數據集進行相關性度量,並以之作為評價word embedding質量的標準。然而,這種基於similarity的評價方式對訓練數據大小、領域、來源以及詞表的選擇非常敏感。而且數據集太小,往往並不能充分說明問題。


我們當時一致認為應該以word embedding對於實際任務的收益為評價標準。包括辭彙類比任務(所謂的analogy task,如king – queen = man - woman)以及NLP中常見的應用任務,比如命名實體識別(NER),句法分析(parsing)等。

近幾年越來越多的學者也開始意識到這個問題,轉而開始學習任務相關(Task-specific)的word embedding。如果脫離實際任務,很難講不同的word embedding誰比誰更「好」。

比如對於句法分析、我們可以在word2vec中利用句法依存上下文,從而使得我們所學習到的word embedding更好地表達句法相似性,進而提升句法分析任務的性能(Levy and Goldberg, 2014)

而對於語義相關的任務,情況則不同。


然而,基於具體應用的評價畢竟是一種間接的方式,中間還隔了一層,尤其是對基於神經網路且需要在學習過程中對word embedding進行微調(fine-tuning)的模型而言。那麼,對於word embedding本身的評價,實際上也是不能一概摒棄的。

我比較喜歡今年EMNLP的一個工作:Evaluation of Word Vector Representations by Subspace Alignment (Tsvetkov et al.)


這篇文章嘗試解決word embedding一直以來備受垢病的問題——可解釋性,也就是每一維代表什麼含義?

圖中矩陣X表示學到的word embedding,矩陣S則是由語言學特徵所構成的詞向量,比如:

以這種方式構建的向量每一維都有特定的意義。作者嘗試學習兩個矩陣之間行向量的對齊方式,使得總體相關性最大。顯然,不同embedding最終得到的相關性不同,從而能夠作為衡量word embedding可解釋性的標準。

不過這種方法也有scalability問題,對於其他語言,比如中文,可能我們很難獲得SemCor這樣帶有語義標註的數據,也就難以構建矩陣S。

另外一篇文章:Evaluation methods for unsupervised word embeddings (Schnabel et al.) 也做得很細緻,可參考。


謝邀。
我是這麼分類的:

1.詞向量的語言學特性
常見的有:
相似度評價指標,看看空間距離近的詞,跟人的直覺是否一致。
類比問題 king-queen=man-woman

Baroni et al.的文章介紹了8種這類指標: http://clic.cimec.unitn.it/marco/publications/acl2014/baroni-etal-countpredict-acl2014.pdf
最近Schnabel et al.專門設計了一個評價詞向量的指標:http://aclweb.org/anthology//D/D15/D15-1036.pdf

2.對實際NLP任務的貢獻
對於一些傳統方法做的任務,可以直接當作特徵加進去,看看提升的效果。
對於用神經網路做的,可以用詞向量作為詞那一層的初始值,初始值選得好,就當做詞向量好。

順便推廣我們的工作:《How to Generate a Good Word Embedding?》導讀


常見的衡量word embedding質量的tasks有:
1. similarity task
2. analogy task,也就是著名A-B=C-D
兩個task都可以參考Mikolov的paper和其他做word embedding的paper

實際上,寫過代碼做過word embedding實驗的一般不會對這個有疑問,建議題主用一用Mikolov的代碼,仔細了解一下,面試哪裡只會問這麼簡單的問題,比如我會問:

1. 我現在希望embedding vector具備一些特殊的性質(比如:value全在0-1之間),怎麼做?
2. 怎麼從word embedding擴展到別的問題上面,比如數據不是文檔,是一個Graph,或者是打分矩陣,還能做embedding么?如果能,怎麼做?


看到這個問題居然能上今日熱榜,忍不住來答一發。

word2vec某種意義上來說,屬於無監督學習,所以和其他無監督模型一樣,難以直接評價。比較常用的做法是,把它丟到另一個有監督的系統(任務)中去當做特徵,看看對這個有監督系統有多大改善。

比如常見的用來評價近義詞(353),實際上就是實現標記了若干近義詞對。把word2vec的詞向量當做輸入,直接用馬氏距離或者cos計算個分類器,看對近義詞的分類效果。

同理,也可以用在nlp的其它任務,如文本文類、情感分析等等。

總之這東西自己沒有評價指標,都是間接評價。

===========額外的分割線==========

word2vec這東西工業界有實際的大規模使用嗎?


正好最近涉及到了一些有關word embedding evaluation的東西,簡單地說一說~

目前常用的衡量word embedding質量好壞的task主要分為兩類:

word analogy document classification

1.word
analogy task

假設給了一對單詞 (a , b) 和一個單獨的單詞c,
task會找到一個單詞d,使得c與d之間的關係相似於a與b之間的關係,舉個簡單的例子:(中國,北京)和 日本,應該找到的單詞應該是東京,因為北京是中國的首都,而東京也是日本的首都。 在給定word
embedding的前提下,task一般是通過在詞向量空間尋找離(b-a+c)最近的詞向量來找到d。

2.document
classification task

這是一種通過使用詞向量來計算文本向量(可以被用來進行文本分類的工作)的方法,為了得到文本向量,task通常採用了一種很簡單的方法:取文本中所有詞的詞向量的平均值來代表該文本的文本向量,進而通過文本分類的準確度來反向評價訓練出的詞向量的質量。


對於給定的word embedding,以上的方法確實可以大致地評價詞向量的質量好壞,但我們不應該局限於它們,就像樓上所言,我們應該以word embedding對於實際任務的收益為評價標準,如果脫離了實際任務,很難講不同的word embedding誰比誰更「好」,因為word embedding更像是一個解決問題所使用的工具而不是一個問題的終點。


評價方式和使用場景相關吧,做過一個(自己覺得)還蠻好玩的事情,把用戶點擊商品序列餵給w2v,用來學商品的embedding,然後用embedding推薦相似的商品。當時也遇到了評價指標的問題。

  1. 嘗試了word analogy的方法,收集了一堆類似「東來順-海底撈+梅州東坡=便宜坊」這種case,有點意思但沒啥用,因為商品之間的關係不像語言中那麼明確(手動皺眉)
  2. 結合業務場景,嘗試了用KNN的信息(價格、位置、品類等)預測當前商品的信息,做下來準確率還蠻好看的,和線上效果也基本一致。
  3. 別的還試過tensorflow做embedding的可視化,不過這個是用來寫ppt(逃)
  4. 公司里當然還是線上效果最有說服力。

stanford課程cs224d deep learning for nlp. lecture3中有提到how to evaluate word vectors


深夜先佔個坑,簡要補充一下,對於word2vec的兩種模型CBOW和skip-gram,還有一個評價方式是MSR sentence completion(這個一般是用來測試language model的,w2v也比較試用,但對於matrix factorization一類當然方法怎麼做這個測評我還不是很清楚,望指教)


embedding vector具備一些特殊的性質


推薦閱讀:

梯度下降法是萬能的模型訓練演算法嗎?
人腦有海量的神經元(參數),那麼人腦有沒有「過擬合」行為?

TAG:機器學習 | 自然語言處理 | 神經網路 | 神經網路語言模型 |