01-word2vec

Word2Vec介紹

Word2Vec是一個將單詞轉換成向量形式的工具。可以把對文本內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。(Word Embedding是根據該word在句中的上下文來決定的)可以提高模型的泛化能力。


1.在應用中充當語言模型

2.什么是語言模型?

我說的一句話中,后一個詞出現的概率總是和前一個出現的概率是相關的。

如 我 = p(w1),今天=p(w2|w1)=“我”出現的情況下,“今天”出現的概率

3.存在的問題

最后一個詞的概率,如果句子過長會導致計算量過大,同時后一個詞和前一個詞組合的可能性越多,那么計算量也會增大。


4.一種解決辦法-N-gram


之前是后一個詞出現的概率只和前一個詞有關,這樣會導致數據稀疏和參數空間太大。

現在在改進之后,后一個詞出現的概率會和前N個詞有關。

4.1例子:下面以 I want Chinese food 為例

如這里統計了一個語料庫,以1-gram為例。i 出現的次數是2533,eat 在i后面出現的次數是9,那么概率為 9 / 2533 ≈ 0.0036.


4.2N-gram模型參數的量級

N代表語料庫詞的個數,n代表是依賴前幾個詞。通常會讓n=2或3。


5.詞向量(word to vector)

人類認識詞,但是計算機認識0和1,那么這時候就需要使用一種方法(如One-hot編碼)轉換這些詞讓計算機來識別這些詞。但是這樣的方法過于簡單,現在需要的詞向量需要能夠代表存在一種潛在的含義。



向量就是一些值的排列,可以讓它的值的范圍在-1到1之間,同時也可以向量的維度,向量的維度與向量的復雜程度呈正相關。

在語料庫中,詞和詞之間是有一定的距離的。

此前提到的詞向量在向量空間生成的時候要代表一定的含義就是,意思相似的詞,他們之間的距離應該是相近的。(即生成的向量空間和真實的語言越相關,那么計算機所生成的語言也會越相關。or 兩個詞上下文相似,則它們的語義也相似)

6.詞向量在神經網絡模型中的應用(2003)

鑒于N-gram等模型的不足,2003年,Bengio等人發表了一篇開創性的文章:A neural probabilistic language model。在這篇文章里,他們總結出了一套用神經網絡建立統計語言模型的框架(Neural Network Language Model,以下簡稱NNLM),并首次提出了word embedding的概念(雖然沒有叫這個名字),從而奠定了包括word2vec在內后續研究word representation learning的基礎。




7.Word2Vec:CBOW 含有一定層次的Softmax

Word2Vec實際上是兩種不同的方法:Continuous Bag of Words (CBOW)Skip-gram。CBOW的目標是根據上下文來預測當前詞語的概率。Skip-gram剛好相反:根據當前詞語來預測上下文的概率(如下圖所示)。這兩種方法都利用人工神經網絡作為它們的分類算法。起初,每個單詞都是一個隨機 N 維向量。經過訓練之后,該算法利用 CBOW 或者 Skip-gram 的方法獲得了每個單詞的最優向量

7.1CBOW簡介


預測的概率值越大越好。

7.2為什么要用Hierarchical Softmax模型?

因為CBOW最后OUTPUT得到的詞向量維度太高,此時利用Hierarchical Softmax模型作為CBOW的輸出層OUTPUT,來解決高緯度問題并保證詞向量都完備沒有丟失。它利用哈夫曼樹構造多個二分類,讓詞向量達成了這種分層的思想。


取一個適當大小的窗口當做語境(上下文),輸入層讀入窗口內的詞,將它們的向量(K維,初始隨機)加和在一起,形成隱藏層K個節點。輸出層是一個巨大的二叉樹,葉節點代表語料里所有的詞(語料含有V個獨立的詞,則二叉樹有|V|個葉節點)。而這整顆二叉樹構建的算法就是Huffman樹。這樣,對于葉節點的每一個詞,就會有一個全局唯一的編碼,形如"010011",不妨記左子樹為1,右子樹為0。接下來,隱層的每一個節點都會跟二叉樹的內節點有連邊,于是 對于二叉樹的每一個內節點都會有K條連邊,每條邊上也會有權值。

7.3哈夫曼樹


構造目的和帶權路徑最短:讓不同的節點能夠有優先級,如高頻使用的單詞讓它們的帶權路徑長度盡量小。

7.3.1哈夫曼樹的構造以及哈夫曼編碼


權重小的節點置于左邊;哈夫曼編碼左為0,右為1,則D的哈夫曼編碼為0,A的哈夫曼編碼為111。

Hierarchical Softmax 就是利用這種分層的思想,將優先級更高的向量放在前面。

7.4CBOW模型

7.4.1Logistic回歸模型


其實Softmax就是一個多分類的邏輯回歸,由多個邏輯回歸組合在一起。

7.5CBOW原理

7.6CBOW參數含義約定

7.7CBOW求解實例


右為正例。左為負例。將剛才CBOW的θ數量級壓縮成log級別,都壓縮到了非葉子節點上。形成了四條決策路徑,四個sigmoid。

7.7CBOW求解目標函數


根據上面的實例和約定好的參數含義,利用最大似然函數得到目標函數,這里用到log函數的公式對目標函數進行了展開。目標函數的目標讓其中的概率p值越大越好。

7.8CBOW梯度上升求解最優參數

既然要讓目標函數得到最大值(極值),那么就是一個梯度上升的問題。

對函數進行求導,那么導數點為極值點。η為學習率, x_w為投影層向量

似然函數是由很多的θ參數決定的,那么似然函數對它求偏導即可解決θ的更新問題。



x_w參數對于目標函數也有一定影響,那么也可以對x_w投影層詞向量進行更新,同理,似然函數對齊求偏導。



Google出品的word2vec,它認為每個詞向量v(w)都與和向量X_w是相關的,那么直接將X_w的更新量整個應用到每個單詞的詞向量上去。好處是所有的詞向量更新會有整體的趨勢,分配的空間是類似的,保證屬于上下文的邏輯。

即沿著最大最好的優化目標,提出梯度上升的解決方案,用這種方案不斷的優化更新θ和X_w,最終得到每個詞的詞向量v(w)。

7.8總結

對于語料庫中的某個詞w_t,對應著二叉樹的某個葉子節點,因此它必然有一個二進制編碼,如"010011"。在訓練階段,當給定上下文,要預測后 面的詞w_t的時候,我們就從二叉樹的根節點開始遍歷,這里的目標就是預測這個詞的二進制編號的每一位。

即對于給定的上下文,我們的目標是使得預測詞的二 進制編碼概率最大。形象地說,我們希望在根節點,詞向量和與根節點相連經過 logistic 計算得到 bit=1 的概率盡量接近 0,在第二層,希望其 bit=1 的概率盡量接近1,這么一直下去,我們把一路上計算得到的概率相乘,即得到目標詞w_t在當前網絡下的概率P(w_t),那么對于當前這個 sample的殘差就是1-P(w_t),于是就可以使用梯度下降法訓練這個網絡得到所有的參數值了。顯而易見,按照目標詞的二進制編碼計算到最后的概率 值就是歸一化的。

Hierarchical Softmax用Huffman編碼構造二叉樹,其實借助了分類問題中,使用一連串二分類近似多分類的思想。例如我們是把所有的詞都作為輸出,那么“桔 子”、“汽車”都是混在一起。給定w_t的上下文,先讓模型判斷w_t是不是名詞,再判斷是不是食物名,再判斷是不是水果,再判斷是不是“桔子”。

但是在訓練過程中,模型會賦予這些抽象的中間結點一個合適的向量,這個向量代表了它對應的所有子結點。因為真正的單詞公用了這些抽象結點的向量,所 以Hierarchical Softmax方法和原始問題并不是等價的,但是這種近似并不會顯著帶來性能上的損失同時又使得模型的求解規模顯著上升。

沒有使用這種二叉樹,而是直接從隱層直接計算每一個輸出的概率——即傳統的Softmax,就需要對|V|中的每一 個詞都算一遍,這個過程時間復雜 度是O(|V|)的。而使用了二叉樹(如Word2vec中的Huffman樹),其時間復雜度就降到了O(log2(|V|)),速度大大地加快了。

現在這些詞向量已經捕捉到上下文的信息。我們可以利用基本代數公式來發現單詞之間的關系(比如,“國王”-“男人”+“女人”=“王后”)。這些詞向量可 以代替詞袋用來預測未知數據的情感狀況。該模型的優點在于不僅考慮了語境信息還壓縮了數據規模(通常情況下,詞匯量規模大約在300個單詞左右而不是之前 模型的100000個單詞)。因為神經網絡可以替我們提取出這些特征的信息,所以我們僅需要做很少的手動工作。但是由于文本的長度各異,我們可能需要利用 所有詞向量的平均值作為分類算法的輸入值,從而對整個文本文檔進行分類處理。

然而,即使上述模型對詞向量進行平均處理,我們仍然忽略了單詞之間的排列順序對情感分析的影響。即上述的word2vec只是基于詞的維度進行"語義分析"的,而并不具有上下文的"語義分析"能力。

同時,Word2Vec是對于每個local context window單獨訓練,沒有利用包含全局共現矩陣global co-currence中的統計信息;它對多義詞無法很好的表示和處理,因為使用了唯一的詞向量。

8.用負采樣模型Negative Sampling來分類,進而訓練word2vec的網絡模型

利用Hierarchical Softmax 分層來訓練Word2Vec中的參數,······可能有些啰嗦和計算量過大,現在用另一種方法。

比如有一個句子 我今天想打___.

給定上下文的語境下去預測詞,給定正樣本是 球, 負樣本是除球之外的詞,比如 人、動物、氣球等等。



假設output映射出了10w個詞向量,規定一個詞向量為正樣本,那么負樣本就會有很多,那么我們該如何選擇恰當的負樣本?




得到似然目標函數。

利用似然函數對θ和X_w參數進行求偏導.



最終得到了優化好的v(w),此時就是我們想要的詞向量。

9.Skip-gram和CBOW使用場景

根據樣本量的大小,如果數據量大的話使用Skip-gram,反之使用CBOW。


10.工具


Python 使用gensim即可。

11.實戰:word2vec工具訓練中文模型

Python的話可用jieba完成分詞,生成分詞文件wiki.zh.text.seg,然后接著用word2vec工具訓練。

https://www.zybuluo.com/hanxiaoyang/note/472184

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容