Author:louwill
From:深度學習筆記
語言模型是自然語言處理的核心概念之一。word2vec是一種基於神經網絡的語言模型,也是一種詞彙表徵方法。word2vec包括兩種結構:skip-gram(跳字模型)和CBOW(連續詞袋模型),但本質上都是一種詞彙降維的操作。 我們將NLP的語言模型看作是一個監督學習問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞。基於輸入和輸出之間的映射便是語言模型。這樣的一個語言模型的目的便是檢查和放在一起是否符合自然語言法則,更通俗一點說就是和擱一起是不是人話。所以,基於監督學習的思想,本文的主角——word2vec便是一種基於神經網絡訓練的自然語言模型。word2vec是谷歌於2013年提出的一種NLP分析工具,其特點就是將詞彙進行向量化,這樣我們就可以定量的分析和挖掘詞彙之間的聯繫。因而word2vec也是我們上一講講到的詞嵌入表徵的一種,只不過這種向量化表徵需要經過神經網絡訓練得到。word2vec訓練神經網絡得到一個關於輸入和輸出之間的語言模型,我們的關注重點並不是說要把這個模型訓練的有多好,而是要獲取訓練好的神經網絡權重,這個權重就是我們要拿來對輸入詞彙的向量化表示。一旦我們拿到了訓練語料所有詞彙的詞向量,接下來開展 NLP 研究工作就相對容易一些了。word2vec包括兩種模型。一種是給定上下文詞,需要我們來預測中間目標詞,這種模型叫做連續詞袋模型(Continuous Bag-of-Words Model,以下簡稱CBOW),另一種是給定一個詞語,我們根據這個詞來預測它的上下文,這種模型叫做skip-gram模型,也有種翻譯稱之為「跳字」模型。CBOW模型的應用場景是要根據上下文預測中間詞,所以我們的輸入便是上下文詞,當然原始的單詞是無法作為輸入的,這裡的輸入仍然是每個詞彙的one-hot向量,輸出為給定詞彙表中每個詞作為目標詞的概率。CBOW模型的結構如圖1所示。Skip-gram模型的應用場景是要根據中間詞預測上下文詞,所以我們的輸入是任意單詞,輸出為給定詞彙表中每個詞作為上下文詞的概率。Skip-gram模型的結構如圖2所示。從CBOW和skip-gram模型的結構圖可以看到,二者除了在輸入輸出上有所不同外,基本上沒有太大區別。將CBOW的輸入層換成輸出層基本上就變成了 skip-gram 模型,二者可以理解為一種互為翻轉的關係。從監督學習的角度來說,word2vec本質上是一個基於神經網絡的多分類問題,當輸出詞語非常多時,我們則需要一些像Hierarchical Softmax(分層Softmax)和Negative Sampling(負採樣)之類的技巧來加速訓練。但從自然語言處理的角度來說,word2vec關注的並不是神經網絡模型本身,而是訓練之後得到的詞彙的向量化表徵。這種表徵使得最後的詞向量維度要遠遠小於詞彙表大小,所以word2vec從本質上來講是一種降維操作。我們把數以萬計的詞彙從高維空間中降維到低維空間中,對NLP的下遊任務大有裨益。 因為skip-gram和CBOW的相似性,本小節僅以CBOW模型為例說明word2vec是如何訓練得到詞向量的。圖3標出了CBOW模型要訓練的參數,很明顯我們要訓練得到輸入層到隱藏層的權重以及隱藏層到輸出層的權重。將上下文詞進行one-hot表徵作為模型的輸入,其中詞彙表的維度為,上下文單詞數量為;然後將所有上下文詞彙的one-hot向量分別乘以共享的輸入權重矩陣;將計算得到的向量做softmax激活處理得到維的概率分布,取概率最大的索引作為預測的目標詞。下面以具體例子來說明。假設語料為I learn NLP everyday, 以I learn everyday作為上下文詞,以NLP作為目標詞。將上下文詞和目標詞都進行one-hot表徵作為輸入,如圖4所示。然後將one-hot表徵分別乘以輸入層權重矩陣,這個矩陣也叫嵌入矩陣,可以隨機初始化生成。如圖5所示。圖5 CBOW訓練過程2:one-hot輸入乘以嵌入矩陣然後將得到的向量結果相加求平均作為隱藏層向量,如圖6所示。然後將隱藏層向量乘以輸出層權重矩陣,這個矩陣也是嵌入矩陣,可以初始化得到。得到輸出向量,如圖7所示。最後對輸出向量做Softmax激活處理得到實際輸出,並將其與真實標籤做比較,然後基於損失函數做梯度優化訓練。以上便是完整的CBOW模型計算過程,也是word2vec將詞彙訓練為詞向量的基本方法之一。無論是Skip-gram模型還是CBOW模型,word2vec一般而言都能提供較高質量的詞向量表達,圖9是以50000個單詞訓練得到的128維的skip-gram詞向量壓縮到2維空間中的可視化展示。可以看到,意思相近的詞基本上被聚到了一起,也證明了word2vec是一種可靠的詞向量表徵方式。往期精彩:
CNN圖像分類:從LeNet5到EfficientNet
【原創首發】機器學習公式推導與代碼實現30講.pdf
【原創首發】深度學習語義分割理論與實戰指南.pdf
喜歡您就點個在看!