機器學習:Word嵌入和Word2Vec簡介

Word嵌入是文檔詞彙表最常用的表示形式之一。它能夠捕獲文檔中單詞的上下文、語義和句法相似性、與其他單詞的關係等。

什麼是嵌入?粗略地說,它們是一個特定單詞的向量表示形式。接下來是我們如何生成它們?更重要的是,他們如何捕捉上下文?

Word2Vec是目前最流行的一種利用淺層神經網絡學習詞綴的技術。它是由Tomas Mikolov於2013年在谷歌開發的。

我們為什麼需要它們?

考慮以下相似的句子:Have a good day 和 Have a great day。它們幾乎意思相同。如果我們構建一個詳盡的詞彙表(我們稱它為V),它將有V = {have, a, good, great, day}。

現在,讓我們為V中的每個單詞創建一個one -hot編碼的向量,one -hot編碼的向量的長度等於V(=5)的大小。除了索引處的元素表示詞彙表中對應的單詞外,我們將有一個0向量。這個特定的元素是1。下面的編碼可以更好地解釋這一點。

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。

機器學習:Word嵌入和Word2Vec簡介

以下是生成分佈式表示的想法。直覺上,我們引入了一個詞對另一個詞的依賴關係。這個詞的上下文中的詞會得到更多的依賴。正如前面提到的,在one-hot編碼表示中,所有的單詞都是相互獨立的。

Word2Vec如何工作?

Word2Vec是一種構造這種嵌入的方法。它可以使用兩種方法(均涉及神經網絡)獲得:Skip Gram和Common Bag of Words(CBOW)

CBOW模型:此方法將每個單詞的上下文作為輸入,並嘗試預測與上下文對應的單詞。考慮我們的例子:Have a great day。

請注意,這裡我們嘗試使用單個上下文輸入字來預測目標字(day )。更具體地說,我們使用輸入字的one-hot編碼,並測量與目標字(day)的one-hot編碼相比的輸出誤差。 在預測目標詞的過程中,我們學習目標詞的矢量表示。

讓我們深入瞭解實際架構。

機器學習:Word嵌入和Word2Vec簡介

輸入或上下文單詞是一個大小為V的one-hot編碼向量,隱藏層包含N個神經元,輸出又是一個長度為V的向量,元素為softmax值。

讓我們來了解一下圖片中的各項:

- Wvn是將輸入x映射到隱藏層的權重矩陣(V*N維矩陣)

-W 'nv是將隱藏層輸出映射到最終輸出層的權重矩陣(N*V維矩陣)

隱藏層神經元只是將輸入的權重和複製到下一層。沒有像sigmoid, tanh或ReLU那樣的激活。唯一的非線性是輸出層的softmax計算。

但是,上面的模型使用單個上下文詞來預測目標。我們可以使用多個上下文詞來做同樣的事情。

機器學習:Word嵌入和Word2Vec簡介

上面的模型使用C上下文單詞。當使用Wvn計算隱藏層輸入時,我們取所有這些C上下文詞輸入的平均值。

因此,我們已經看到了如何使用上下文單詞生成單詞表示。但還有一種方法我們也可以這麼做。我們可以使用目標詞(我們希望生成其表示形式)來預測上下文,在此過程中,我們生成表示形式。另一種被稱為Skip Gram model的變體就是這樣做的。

Skip-Gram model:

機器學習:Word嵌入和Word2Vec簡介

這看起來像 multiple-context CBOW模型剛剛被翻轉。在某種程度上,這是事實。

我們將目標詞輸入網絡。模型輸出C個概率分佈。這是什麼意思?

對於每個上下文位置,我們得到V概率的C概率分佈,每個單詞有1個。

在這兩種情況下,網絡都使用神經網絡的反向傳播來學習。

哪個好一些?

兩者各有利弊。根據Mikolov的說法,Skip Gram可以很好地處理少量數據,並且可以很好地代表罕見的單詞。

另一方面,CBOW更快,並且對更頻繁的單詞具有更好的表示。

最後

以上解釋是非常基本的。它只是讓您瞭解嵌入字是什麼以及Word2Vec如何工作。

還有很多東西。例如,為了使算法在計算上更有效,使用諸如Hierarchical Softmax和Skip-Gram Negative Sampling之類的技巧


分享到:


相關文章: