【NLP】深入理解word2vec
?深度學習
Author:louwill
From:深度學習筆記
語言模型是自然語言處理的核心概念之一。word2vec是一種基于神經網絡的語言模型,也是一種詞匯表征方法。word2vec包括兩種結構:skip-gram(跳字模型)和CBOW(連續詞袋模型),但本質上都是一種詞匯降維的操作。
word2vec
?我們將NLP的語言模型看作是一個監督學習問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞。基于輸入和輸出之間的映射便是語言模型。這樣的一個語言模型的目的便是檢查和放在一起是否符合自然語言法則,更通俗一點說就是和擱一起是不是人話。
所以,基于監督學習的思想,本文的主角——word2vec便是一種基于神經網絡訓練的自然語言模型。word2vec是谷歌于2013年提出的一種NLP分析工具,其特點就是將詞匯進行向量化,這樣我們就可以定量的分析和挖掘詞匯之間的聯系。因而word2vec也是我們上一講講到的詞嵌入表征的一種,只不過這種向量化表征需要經過神經網絡訓練得到。
word2vec訓練神經網絡得到一個關于輸入和輸出之間的語言模型,我們的關注重點并不是說要把這個模型訓練的有多好,而是要獲取訓練好的神經網絡權重,這個權重就是我們要拿來對輸入詞匯的向量化表示。一旦我們拿到了訓練語料所有詞匯的詞向量,接下來開展 NLP 研究工作就相對容易一些了。
word2vec包括兩種模型。一種是給定上下文詞,需要我們來預測中間目標詞,這種模型叫做連續詞袋模型(Continuous Bag-of-Words Model,以下簡稱CBOW),另一種是給定一個詞語,我們根據這個詞來預測它的上下文,這種模型叫做skip-gram模型,也有種翻譯稱之為“跳字”模型。
CBOW模型的應用場景是要根據上下文預測中間詞,所以我們的輸入便是上下文詞,當然原始的單詞是無法作為輸入的,這里的輸入仍然是每個詞匯的one-hot向量,輸出為給定詞匯表中每個詞作為目標詞的概率。CBOW模型的結構如圖1所示。
圖1 CBOW模型
Skip-gram模型的應用場景是要根據中間詞預測上下文詞,所以我們的輸入是任意單詞,輸出為給定詞匯表中每個詞作為上下文詞的概率。Skip-gram模型的結構如圖2所示。
圖2 skip-gram模型
從CBOW和skip-gram模型的結構圖可以看到,二者除了在輸入輸出上有所不同外,基本上沒有太大區別。將CBOW的輸入層換成輸出層基本上就變成了 skip-gram 模型,二者可以理解為一種互為翻轉的關系。
從監督學習的角度來說,word2vec本質上是一個基于神經網絡的多分類問題,當輸出詞語非常多時,我們則需要一些像Hierarchical Softmax(分層Softmax)和Negative Sampling(負采樣)之類的技巧來加速訓練。但從自然語言處理的角度來說,word2vec關注的并不是神經網絡模型本身,而是訓練之后得到的詞匯的向量化表征。這種表征使得最后的詞向量維度要遠遠小于詞匯表大小,所以word2vec從本質上來講是一種降維操作。我們把數以萬計的詞匯從高維空間中降維到低維空間中,對NLP的下游任務大有裨益。?
word2vec的訓練過程:以CBOW為例
因為skip-gram和CBOW的相似性,本小節僅以CBOW模型為例說明word2vec是如何訓練得到詞向量的。圖3標出了CBOW模型要訓練的參數,很明顯我們要訓練得到輸入層到隱藏層的權重以及隱藏層到輸出層的權重。
圖3 CBOW的訓練權重
CBOW模型訓練的基本步驟包括:
將上下文詞進行one-hot表征作為模型的輸入,其中詞匯表的維度為,上下文單詞數量為;
然后將所有上下文詞匯的one-hot向量分別乘以共享的輸入權重矩陣;
將上一步得到的各個向量相加取平均作為隱藏層向量;
將隱藏層向量乘以共享的輸出權重矩陣;
將計算得到的向量做softmax激活處理得到維的概率分布,取概率最大的索引作為預測的目標詞。
下面以具體例子來說明。假設語料為I learn NLP everyday, 以I learn everyday作為上下文詞,以NLP作為目標詞。將上下文詞和目標詞都進行one-hot表征作為輸入,如圖4所示。
圖4 CBOW訓練過程1:輸入one-hot表征
然后將one-hot表征分別乘以輸入層權重矩陣,這個矩陣也叫嵌入矩陣,可以隨機初始化生成。如圖5所示。
圖5 CBOW訓練過程2:one-hot輸入乘以嵌入矩陣
然后將得到的向量結果相加求平均作為隱藏層向量,如圖6所示。
圖6 CBOW訓練過程3:求平均
然后將隱藏層向量乘以輸出層權重矩陣,這個矩陣也是嵌入矩陣,可以初始化得到。得到輸出向量,如圖7所示。
圖7 CBOW訓練過程4:隱層向量乘以嵌入矩陣
最后對輸出向量做Softmax激活處理得到實際輸出,并將其與真實標簽做比較,然后基于損失函數做梯度優化訓練。
圖8 CBOW訓練過程5:Softmax激活輸出
以上便是完整的CBOW模型計算過程,也是word2vec將詞匯訓練為詞向量的基本方法之一。無論是Skip-gram模型還是CBOW模型,word2vec一般而言都能提供較高質量的詞向量表達,圖9是以50000個單詞訓練得到的128維的skip-gram詞向量壓縮到2維空間中的可視化展示。
圖9 word2vec的可視化效果
可以看到,意思相近的詞基本上被聚到了一起,也證明了word2vec是一種可靠的詞向量表征方式。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯總結
以上是生活随笔為你收集整理的【NLP】深入理解word2vec的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 3.9,来了!
- 下一篇: 【机器学习基础】机器学习算法中分类知识总