作者:Dhruvil Karani
編譯:ronghuaiyang
導讀
給大家介紹一些詞嵌入和word2vec的一些基礎內容,非常的淺顯,都可以看得懂。
詞嵌入是文檔詞彙表最常用的表示形式之一。它能夠捕捉文檔中某個單詞的上下文、語義和句法相似性、與其他單詞的關係等。
詞嵌入到底是什麼?粗略地說,它們是特定單詞的向量表示。說了這麼多,接下來是我們如何生成它們?更重要的是,它們如何捕獲上下文的?
Word2Vec是利用淺層神經網絡學習詞嵌入的最常用技術之一。它由Tomas Mikolov於2013年在谷歌開發。
讓我們一步一步來解決這個問題。
我們為什麼需要詞嵌入?
考慮下面類似的句子: Have a good day 和 Have a great day.。它們幾乎沒有不同的意思。如果我們構建一個詳盡的詞彙表(我們稱它為V),那麼V = {have, a, good, great, day}。
現在,讓我們為V中的每一個單詞創建一個獨熱編碼的向量。我們的獨熱編碼向量的長度等於V(=5)的大小。我們會得到一個除了表示詞彙表中相應單詞的索引處的元素,這個特定的元素是1,其他全是0的向量。下面的編碼可以更好地解釋這一點。
Have = [1,0,0,0,0]『; a=[0,1,0,0,0]』 ; good=[0,0,1,0,0]『 ; great=[0,0,0,1,0]』 ; day=[0,0,0,0,1]』 (『 表示轉置)
如果我們試著去可視化這些編碼,我們可以想像一個5維空間,其中每個單詞占據一個維度,而與其他維度無關(沒有沿其他維度的投影)。這意味著「good」和「great」的不一樣的程度就像「day」和「have」的不一樣的程度是相同的,這是不對的。
我們的目標是讓具有相似上下文的單詞具有相近的空間位置。從數學上講,這兩個向量夾角的餘弦值應該接近1,也就是角度接近0。
這就產生了生成分布表示的想法。直觀地說,我們引入了一個單詞對另一個單詞的依賴關係。在這個單詞的上下文中,這些單詞會得到更多的這種依賴性。在一個獨熱編碼表示中,所有單詞都是相互獨立的。
Word2Vec該怎麼得到呢?
Word2Vec是一種構造這種嵌入的方法。它可以通過兩種方法得到(都涉及到神經網絡):Skip Gram和Continuous Bag Of Words, CBOW。
CBOW模型:該方法將每個單詞的上下文作為輸入,並嘗試預測與上下文對應的單詞。考慮我們的例子:Have a great day.
讓輸入到神經網絡的單詞是,great。注意,這裡我們嘗試使用單個上下文輸入單詞great預測一個目標單詞(day)。更具體地說,我們使用輸入字的一個獨熱編碼,並度量與目標單詞(day)的獨熱編碼之間的誤差。在預測目標單詞的過程中,我們學習了目標單詞的向量表示。
讓我們更深入地了解實際的架構。
輸入或上下文單詞是一個長度為V的獨熱編碼向量。隱藏層包含N個神經元,輸出也是一個V長度向量,其中元素為softmax值。
讓我們了解一些圖中的術語:
- Wvn是將輸入x映射到隱藏層(V*N維矩陣)的權重矩陣
- Wnv是將隱藏層輸出映射到最終輸出層(N*V維矩陣)的權重矩陣
我就不講數學了。我們只需要知道發生了什麼。
隱藏層神經元只是將輸入進行加權和複製到下一層。沒有像sigmoid, tanh或ReLU那樣的激活。唯一的非線性計算是輸出層的softmax。
但是,上面的模型使用單個上下文單詞來預測目標。我們可以使用多個上下文單詞來做同樣的事情。
上面的模型使用C個上下文單詞。當Wvn用於計算隱藏層輸入時,我們對所有這些C上下文字輸入取平均值。
我們已經看到了如何使用上下文單詞生成單詞表示。但是還有一種方法我們可以做同樣的事情。我們可以使用目標詞(我們希望生成其表示)來預測上下文,並在此過程中生成表示。另一種稱為Skip Gram模型的變體可以做到這一點。
Skip-Gram模型:
這看起來像是把多上下文CBOW模型翻轉過來。這在某種程度上是正確的。
我們把目標詞輸入網絡。模型輸出C個機率分布。這是什麼意思?
對於每個上下文位置,我們得到V機率的C個機率分布,每個單詞一個。
在這兩種情況下,網絡都使用反向傳播來學習。詳細的數學計算可這裡找到。
誰比較厲害?
兩者都有自己的優點和缺點。Mikolov說,Skip Gram可以很好地處理少量數據,並且可以很好地表示罕見的單詞。
另一方面,CBOW更快,對於更頻繁的單詞有更好的表示。
前方還有哪些內容?
以上的解釋是一個非常基本的解釋。它只是讓你對詞嵌入是什麼,以及Word2Vec如何工作有了一個高層次的了解。
還有很多事情要做。例如,為了提高算法的計算效率,使用了分層Softmax和Skip-Gram負採樣等技巧。所有這些都可以在這裡(https://arxiv.org/pdf/1411.2738.pdf)找到。
英文原文:https://towardsdatascience.com/introduction-to-word-embedding-and-word2vec-652d0c2060fa
更多文章,請關注微信公眾號:AI公園