自然語言處理(NLP)基礎概念3:直觀理解Word2Vec處理過程

此專欄文章隨時更新編輯,如果你看到的文章還沒寫完,那麼多半是作者正在更新或者上一次沒有更新完,請耐心等待,正常的頻率是每天更新一篇文章。

該文章是「自然語言處理(NLP)基礎概念」系列文章的第五部分,首發於知乎的專欄「深度學習+自然語言處理(NLP)」。

該系列文章的目的在於理清利用深度學習進行自然語言處理的一些基本概念。

====================================================================

直奔主題,梳理一下word2vec到底是個怎樣的過程。

首先我們有一個矩陣W,有一個輸入x。

W是由全部單詞的詞向量組成的矩陣,也就是說W的每一行都是一個詞向量。

提取第y行得到的詞向量用 W_y 表示。

x也是一個詞向量。

用一個例子說明:

「I like deep learning」

現在我么想知道在deep出現的情況下,『like』出現的概率,也就是說,x就是『deep』的詞向量,矩陣W的第y行就是『like』的詞向量。

我們通過 W_y 與x相乘,得到一個數值,用 f(y) 表示。

f(y) 求softmax(softmax的作用是歸一化該數值的方法,見這篇文章),得到的結果就是我們想要的「在deep出現的情況下『like』出現的概率」,表示為: p(y|x)

由於like就出現在deep周圍,因此我們希望這個概率值越大越好。

整個過程見下圖:

現在我們有了 p(y|x) ,面臨的下一個問題是:怎麼評估這個概率。

這時候就要用到cross entropy,根據交叉熵的定義,代入我們的概率p和真實值。

由於真實值y是one-hot向量,可以看做1,所以交叉熵就變成了對概率p求-log。

就因為對其求了-log,我們的目標變成使H(p,q)最小。

最簡單的辦法是對H求導數。

還沒有結束,這裡我們只是求一個單詞的概率使其最大,我么的終極目標是求所有詞向量和其周圍的單詞出現的概率,並使所有的單詞和它周圍的詞出現時的概率最小,用下面的表達式表示:

以下是相關文章的鏈接地址:

機器學習中的Python(一):Python基礎數據類型、容器、函數和類的介紹

機器學習中的Python(二):Numpy數組、索引、數據類型、運算、廣播的介紹

深度學習(Deep Learning)基礎概念(一):神經網路基礎(Neural Network Basics)介紹及其python實現

自然語言處理(NLP)基礎概念(一):詞向量及其生成方法介紹

自然語言處理(NLP)基礎概念(二):Softmax介紹及其python實現

自然語言處理(NLP)基礎概念(三):GloVe模型-全球向量用於詞表示

自然語言處理(NLP)基礎概念(四):詞向量的評估方法介紹-內部評估 (Intrinsic Evaluation)

機器學習中的線性代數系列(一):基本概念表達和矩陣乘法

機器學習中的線性代數系列(二):矩陣的操作和性質

機器學習中的線性代數系列(三):矩陣微積分

也歡迎關注專欄:「深度學習+自然語言處理(NLP)」


推薦閱讀:

TAG:自然语言处理 | 机器学习 | 深度学习DeepLearning |