Word Embedding和Word2Vec簡介

Source: Deep Learning on Medium


Go to the profile of Frederick Lee

此篇文章原文在此

Word Embedding是文檔詞彙表中最受歡迎的表示之一。它能夠捕獲文檔中單詞的上下文,語義和句法相似性,與其他單詞的關係等。

什麼是 word embedding?鬆散地說,它們是特定單詞的向量表示。話雖如此,接下來是我們如何生成它們?更重要的是,他們如何捕捉內文?

Word2Vec是使用淺層神經網絡學習word embeddings的最流行的技術之一。它由Tomas Mikolov於2013年在谷歌開發

讓我們逐一解決這個問題。

我們為什麼需要它們?

請考慮以下類似的句子: Have a good day and Have a great day.它們幾乎沒有不同的含義。如果我們構建一個詳盡的詞彙表(讓我們稱之為V),它將具有V = {Have,a,good,great,day}。

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

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]` (` represents transpose)

如果我們試圖想像這些編碼,我們可以想到一個5維空間,其中每個單詞佔據其中一個維度,與其余維度無關(沿其他維度沒有投影)。這意味著 ‘great’和 ‘good’與 day’和 ‘have’不同,這是不正確的。

我們的目標是使具有相似內容的詞語佔據緊密的空間位置。在數學上,這些向量之間角度的餘弦應接近1,即角度接近0。

谷歌圖片

這是生成分佈式表示的想法。直覺上,我們引入了一個詞對其他詞的依賴性 dependence。在這個詞的上下文中的單詞將獲得這種依賴 dependence的更大份額在一個 one hot encoding representations中,所有的字是獨立彼此的如前面提到的。

Word2Vec如何工作?

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

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

讓神經網絡的輸入成為單詞, great.請注意,我們在這裡嘗試使用單個上下文輸入字來預測目標字( day)。更具體地說,我們使用輸入字的一個 one hot encoding,並測量與目標字( day)的一個one hot encoding相比的輸出誤差。 在預測目標詞的過程中,我們學習了目標詞的向量表示。

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

CBOW模型

輸入或上下文字是大小為V的一個 one hot encoded vector。隱藏層包含N個神經元,輸出又是V長度向量,其中元素是softmax值。

讓我們得到右圖中的術語:
– Wvn是將輸入x映射到隱藏層的權重矩陣(V * N維矩陣)
W`nv是將隱藏層輸出映射到最終輸出層的權重矩陣(N * V維矩陣)

我不會進入數學。我們只是想知道發生了什麼。

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

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

谷歌圖片

上面的模型採用 C context words。當Wvn用於計算隱藏層輸入時,我們對所有這些C上下文字輸入平均值。

因此,我們已經看到瞭如何使用上下文單詞生成單詞表示。但是還有一種方法可以做同樣的事情。我們可以使用目標詞(我們想要生成它們的表示)來預測上下文,並且在過程中,我們生成表示。另一個名為Skip Gram模型的變體就是這樣做的。

Skip-Gram模型:

這看起來像多上下文CBOW模型剛剛被翻轉。在某種程度上這是事實。

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

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

在這兩種情況下,網絡都使用反向傳播來學習。詳細的數學可以在這裡找到

誰贏?

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

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

什麼在前面?

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

還有很多東西。例如,為了使算法在計算上更有效,使用諸如Hierarchical Softmax和Skip-Gram Negative Sampling之類的技巧。所有這些都可以在這裡找到。