背景介紹和一些直觀的理解 word2vec 是2012年被被Google提出來的將文本生成詞向量模型,其中包括了兩個(gè)模型,continous bag of words(CBOW)和Skip Gram。兩個(gè)模型分別從兩個(gè)角度來建立詞的預(yù)測模型,CBOW是通過一個(gè)或多個(gè)單詞的上下文來進(jìn)行這個(gè)詞語的預(yù)測,而Skip Gram模型是通過一個(gè)或多個(gè)單詞來進(jìn)行上下文的預(yù)測。 首先我們需要理解的一個(gè)問題,為什么我們需要對詞進(jìn)行編碼,也就是所謂的詞向量化?我們知道任何數(shù)學(xué)模型,其輸入都需要是數(shù)值型的,而在自然語言處理中,我們面對的是文字,而文字是無法直接被數(shù)學(xué)模型所直接利用的。所以我們需要將文字進(jìn)行編碼,而編碼就是給每一個(gè)字符一個(gè)向量來進(jìn)行表示。在word2vec出來之前,我們常用的主要是one hot encoding的方法,也就是對于每一個(gè)單詞,我們用在一個(gè)位置為1,其余位置為0的向量進(jìn)行表示。而向量的維度就是我們單詞量的大小。而向量的每一個(gè)位置,只能用來表示唯一的一個(gè)單詞。舉個(gè)例子,假設(shè)我們的有詞庫只有10個(gè)單詞,分別是:今,天,是,你,我,他,買,水,果,家。這里我們分別用one hot encoding的方法來表示每一個(gè)詞,那么有下面的結(jié)果: 可以看到對于每一個(gè)單詞,我們用唯一的一個(gè)向量對它進(jìn)行了表示。那么很顯然這種表示方法至少有下面的一些缺陷
所以,詞向量的提出目的就是解決上面提到的這些問題。而詞向量主要有以下一些特點(diǎn)
CBOW模型的介紹 前面也說了,CBOW模型是用于一個(gè)單詞的上下文來進(jìn)行單詞的預(yù)測。換句話說,就是看了一個(gè)或多個(gè)單詞的上下文,我們希望能對詞庫中所有的單詞有個(gè)概率的預(yù)測,而我們想要預(yù)測的一個(gè)或多個(gè)單詞,它的概率要盡可能的大。這不正好就掉入了極大釋然估計(jì)的管轄范圍了嗎?如果我么有一大堆的上下文和要對應(yīng)要預(yù)測的一個(gè)或多個(gè)單詞,既然我們的模型對于每一個(gè)或多個(gè)單詞都有一個(gè)概率的估計(jì),那么我們根據(jù)我們已有的樣本,把它們的概率全部乘起來,然后通過調(diào)整模型的參數(shù)最大化這個(gè)概率。 一個(gè)上下文預(yù)測一個(gè)單詞的情況 我們先來理解這種最簡單的惡情況,這個(gè)理解清楚了,推廣到其它復(fù)雜的情況其實(shí)是很直接和水到渠成的事情了。我們以兩個(gè)簡單的句子來作為例子:
一般中文中訓(xùn)練詞向量時(shí),都會將句子進(jìn)行分詞,上面我用空格將詞進(jìn)行了分割,這里不對分詞進(jìn)行介紹。在CBOW模型中,有一個(gè)窗口參數(shù),具體意思就是上下文的定義在距離這個(gè)單詞左右不超過窗口的距離。這里我們窗口設(shè)置為2。那么按照這個(gè)規(guī)則,我們可以生成下面的訓(xùn)練樣本,第一個(gè)位置為上下文,第二單詞為中心詞匯 從輸入層到隱藏層的變換,我們可以用一個(gè)9×3的矩陣來表示,初始化為 從隱藏層到輸出層,我們可以用一個(gè)3×9的矩陣來表示,初始化為 有了上面的這些符號,那么我們來看我們第一個(gè)樣本(今天,他)經(jīng)過我們的模型變換會得到什么樣的結(jié)果。因?yàn)榻裉? 而 從隱藏層到輸出層,直接繼續(xù)進(jìn)行矩陣的乘法,那么有 在進(jìn)行softmax的變化,我們得到了最后對于每個(gè)單詞的預(yù)測概率均為19,而我們的訓(xùn)練樣本是希望“他”對應(yīng)的概率要盡量的高,也就是”他”的概率要為1,其它的單詞概率為0,這樣模型的輸出和真實(shí)的樣本存在了偏差,那們我們就可以直接利用這個(gè)誤差來進(jìn)行反向傳遞,調(diào)整我們模型的參數(shù) 如果我們再回頭看上面的計(jì)算流程,其實(shí)可以這樣理解上面的矩陣
其中
取對數(shù)后有
所以最后我們其實(shí)就是在最大化釋然函數(shù)。為什么說計(jì)算上面的釋然函數(shù)很復(fù)雜呢?大家可以看到對數(shù)里面的求和項(xiàng),其實(shí)需要對所有單詞進(jìn)行一次遍歷,也就是說如果我們詞庫有1萬個(gè)單詞,那么每一步迭代就需要計(jì)算一萬次,如果詞庫有一百萬,一千萬甚至是上億的單詞量呢?可想而知道,這個(gè)計(jì)算量是相當(dāng)當(dāng)大的。所以有一系列的方法來逼近這個(gè)計(jì)算,后面我們也會介紹hierarchical softmax和negative sampling的方法,他們是為解決這個(gè)計(jì)算效率問題的。 多個(gè)上下文預(yù)測一個(gè)單詞的情況 前面說了那么個(gè)多一個(gè)上下文預(yù)測一個(gè)單詞的情況,接下來我們再講講怎么擴(kuò)展到多個(gè)上下文預(yù)測一個(gè)單詞,畢竟從直觀的角度來講,多個(gè)上下文預(yù)測中心詞匯絕對要比一個(gè)上下文預(yù)測中心詞匯要靠譜一些。 首先對于任意的單詞v,其上下文的單詞集合記為 C ,這里上下文是距離中心單詞v一定距離的所有單詞的集合,而模型基于上下文對v的概率預(yù)測我們記為
所以,如果我們有一系列的訓(xùn)練樣本
Skip gram 模型 Skip gram 模型和CBOW完全是相反的出發(fā)角度,Skip gram 模型是通過中心單詞預(yù)測上下文,而Google提出的Word2Vec的論文中,也推薦使用這個(gè)方法來進(jìn)行詞向量的學(xué)習(xí)。同樣我們也先理解一個(gè)中心單詞預(yù)測一個(gè)上下文的情況,然后擴(kuò)展到一個(gè)單詞預(yù)測多個(gè)上下文的情況。 一個(gè)單詞預(yù)測一個(gè)上下文 這是最簡單的情況,在公式上面其實(shí)和CBOW模型一模一樣,唯一的區(qū)別就是訓(xùn)練樣本從以前的(上下文單詞,中心詞匯)變成了(中心詞匯,上下文單詞)。同樣我們沿用之前的一些符號,而且也是一樣的有簡單的三層神經(jīng)網(wǎng)絡(luò)。假設(shè)我們有訓(xùn)練樣本
取對數(shù)后有
一個(gè)單詞預(yù)測多個(gè)上下文的情況 同樣沿用之前的一些符號,記中心單詞為 v ,上下文單集合為 C , 這次我們要預(yù)測的是上下文的概率
上面第一個(gè)等式就是上下文的預(yù)測條件概率獨(dú)立的假設(shè)。同樣基于一些列的樣本,
一些思考 前面我們也提到了,上面兩種方法學(xué)習(xí)出來的編碼有一些很好的特征,其中一個(gè)特征就是詞性和語意相同的詞,他們的詞向量在詞向量空間中的距離比較近。這個(gè)通過Skip Gram模型來看,很好理解,比如有兩個(gè)詞, 此外論文中推薦的額是使用Skip Gram模型,個(gè)人的理解估計(jì)是Skip Gram模型比較直接,而且實(shí)現(xiàn)起來架構(gòu)幾乎不變,只需要把目標(biāo)函數(shù)變?yōu)槌朔e的形式就行了(獨(dú)立的假設(shè))。而CBOW在多個(gè)上下文預(yù)測一個(gè)中心詞的時(shí)候需要先對上下文的所有編碼進(jìn)行均值的計(jì)算,這一點(diǎn)沒有Skip Gram模型那么直接。其次可能是Skip Gram模型的結(jié)果在一些數(shù)據(jù)集上表現(xiàn)更好,解釋性更強(qiáng)的緣故。 詞向量編碼是近幾年很流行的方法,而現(xiàn)在任意的NLP的問題都會將文本進(jìn)行詞向量編碼后再進(jìn)行后續(xù)的建模和計(jì)算,往往效果都遠(yuǎn)好于直接用one hot編碼。而受詞向量編碼思想的影響,網(wǎng)絡(luò)編碼也在知識圖譜的表示和推斷方面衍生出了一些列的思想和方法。 無論如何,希望能對正在入門NLP和學(xué)習(xí)word2vec的你有些幫助。 reference Distributed Representations of Words and Phrases and their Compositionality word2vec Parameter Learning Explained Word2Vec Tutorial - The Skip-Gram Model · Chris McCormick 雅思一下下 undermine vt.破壞,漸漸破壞;挖掘地基 estrange vt. 使疏遠(yuǎn);離間 feasible adj.可行的;可能的;可實(shí)行的 democratic adj.民主的;民主政治的;大眾的 qualitative adj.定性的;質(zhì)的,性質(zhì)上的 優(yōu)質(zhì)公眾號推薦 簡介:這個(gè)號名叫 C 開發(fā)者,主要致力于 C/C++,Linux 方向的技術(shù)分享。但是這個(gè)號并不僅僅分享技術(shù),每周都會分享一些小工具,號主的日常實(shí)踐總結(jié)出來的認(rèn)知經(jīng)驗(yàn)等,另外這個(gè)號的排版「特別美觀」,曾被知名互聯(lián)網(wǎng)大佬「stormzhang」推薦過,強(qiáng)烈推薦關(guān)注! |
|
|