從古老的one-hot表示法,到大熱的Word2vec系列的分佈式表示方法,再到現在驚豔的預訓練模型ELMo、BERT等,技術迭代迅速,這其中包含許多內容需要我們學習,例如語言模型LM、Transformer、CBOW、SkipGram等等。
接下來本文歸納梳理,逐一介紹。
目錄
1、詞的表示
1.1 離散表示(one-hot representation)
把每個詞表示爲一個長向量。這個向量的維度是詞表大小,向量中只有一個維度的值爲1,其餘維度爲0,這個維度就代表了當前的詞。
面臨着數據稀疏性和維度災難的問題。但也有一個好處,就是在高維空間中,很多應用任務線性可分。
1.2 分佈式表示(distribution representation)
將詞轉化成一種分佈式表示,又稱詞向量(Word embedding)。將詞表示成一個定長的連續的稠密向量。
分佈式表示優點:(1) 詞之間存在相似關係,存在“距離”概念,這對很多自然語言處理的任務非常有幫助。(2) 詞向量能夠包含更多信息,並且每一維都有特定的含義。
2、詞向量學習方法
那麼,Word2vec問世,爲什麼大火,而之前已經有了一些embedding的研究了呀?
這裏借用復旦大學邱錫鵬老師在知乎上的回答。
Word2vec訓練方面採用的Hierarchical Softmax以及負採樣雖然是前人已有的工作,但Word2vec流行主要原因在於以下3點:
(1)極快的訓練速度。以前的語言模型優化的目標是MLE,只能說詞向量是其副產品。Mikolov應該是第一個提出拋棄MLE(和困惑度)指標,就是要學習一個好的詞嵌入。如果不追求MLE,模型就可以大幅簡化,去除隱藏層。再利用HSoftmax以及負採樣的加速方法,可以使得訓練在小時級別完成。而原來的語言模型可能需要幾周時間。
(2)一個很酷炫的man-woman=king-queen的示例。這個示例使得人們發現詞嵌入還可以這麼玩,並促使詞嵌入學習成爲了一個研究方向,而不再僅僅是神經網絡中的一些參數。
(3)word2vec裏有大量的tricks,比如噪聲分佈如何選?如何採樣?如何負採樣?等等。這些tricks雖然擺不上臺面,但是對於得到一個好的詞向量至關重要。