章 樂 朱婭霖
北京電子科技學(xué)院,北京市 100070
詞向量是自然語言處理的最基礎(chǔ)的構(gòu)成部分之一。 不管是機器翻譯,還是在自然語言和視覺領(lǐng)域的交叉問題,如計算機圖像標(biāo)注等,只要涉及到具體的自然語言語句,在輸入進模型之后,都會有一個從單個單詞轉(zhuǎn)化為詞向量的過程。 最早關(guān)于詞向量的研究工作可以追溯至Rumelhart,Hinton 和Williams 在Nature 中所發(fā)表的工作[1]。 在該問題的發(fā)展過程中,一個重要的解決方式是利用神經(jīng)網(wǎng)絡(luò)語言模型來訓(xùn)練詞向量,如Mikolov 等人的工作[2]中所闡述的方法。 雖然這些神經(jīng)網(wǎng)絡(luò)模型得到的詞向量的質(zhì)量要超過傳統(tǒng)的N-gram 模型,但神經(jīng)網(wǎng)絡(luò)模型存在過于復(fù)雜、訓(xùn)練時間過長等問題。 對于中等規(guī)模的數(shù)據(jù)集,訓(xùn)練時間常常需要按周來計算。
Mnih 等人在其的工作[3]中基于所謂Noise Contrastive Estimation (NCE)方法提出一個快速、簡單的訓(xùn)練上述神經(jīng)網(wǎng)絡(luò)的方法。 后來Mikolov 等人提出了skip-gram 模型[4,5],相比較前者而言其更加簡單。 和大多數(shù)其他的基于神經(jīng)網(wǎng)絡(luò)的模型相比較而言,skip-gram 模型不依賴于稠密矩陣乘法,因而訓(xùn)練速度大大加快。 該模型讓在大規(guī)模的、無結(jié)構(gòu)化的文本語料庫上的訓(xùn)練成為可能。 對于超過一千億個詞規(guī)模的語料庫,skip-gram 模型都可以在單個計算機上僅用一天的時間完成訓(xùn)練過程。 由于Mikolov 等人此項工作,skip-gram 模型以及與之有關(guān)的cbow 模型(Continuous Bag-of-Words)被人們都稱為word2vec.
Pennington 等人提出了GloVe 模型[6],其主要是將兩個詞向量訓(xùn)練技術(shù)融合到一起:全局的矩陣分解方式,以及基于局部上下文窗口的方式。 Skip-gram 模型屬于后一種方式。 GloVe 模型在詞類比任務(wù)中取得了當(dāng)時最好的結(jié)果,達到了75%的準(zhǔn)確率。
上述所述的詞向量生成技術(shù)大多都是在英文語料庫上進行訓(xùn)練的。 在中文語料庫上Niu等人基于HowNet 這一專家知識庫[7]提出了包括SAT 在內(nèi)的一系列模型[8],其中SAT 模型在其所給出的中文詞類比任務(wù)中的準(zhǔn)確率等衡量指標(biāo)上都取得了目前最好的結(jié)果。 注意SAT 等模型利用了HowNet 這一人工知識,所以并不是完全基于無結(jié)構(gòu)化的文本訓(xùn)練數(shù)據(jù)。
朱靖雯等人也基于HowNet 構(gòu)造了Hownet-Graph[9]這一知識圖譜形式,并進行了一系列的模型訓(xùn)練及對比實驗。 其在詞相似度任務(wù)上取得了不錯的結(jié)果,但在Niu 等人所提及的詞相似度測試數(shù)據(jù)集[8]下略弱于SAT 模型。 同時在中文詞類比任務(wù)中,其僅在一項子任務(wù)的一個衡量指標(biāo)中取得了不錯的結(jié)果,總體上仍然遠弱于SAT 模型。 陳洋等人提出一種基于HowNet 的詞向量表示方法H-WRL[10],并在詞相似度計算和其所提及的詞義消歧任務(wù)中取得了很好的效果。 然而這些工作均基于人工標(biāo)注的HowNet這一專家知識。
本文將基于word2vec 提出scaled word2vec模型。 Mikolov 等人提出的word2vec 模型中對所涉及的負采樣[4],即Negative sampling (NEG)技術(shù),僅僅從啟發(fā)式以及實驗結(jié)果等經(jīng)驗結(jié)論等方面進行了解釋,也未能有其他文獻給出NEG技術(shù)的理論上的分析。 本文將NEG 技術(shù)歸約到NCE 方法的一種簡化形式,從而闡明了NEG 背后的理論意義。 且基于兩者之間的聯(lián)系,本文提出scaled word2vec 模型,并闡明了如何利用上述的理論分析得到改進后的skip-gram 模型,這里稱為scaled word2vec. 實驗結(jié)果表明在中小規(guī)模的數(shù)據(jù)集上可以有如下結(jié)論:
1. Scaled word2vec 不論是在中文數(shù)據(jù)集還是在英文數(shù)據(jù)集上,生成的詞向量質(zhì)量都不會弱于原本的word2vec;
2. 在本文中所給出的一千兆中文數(shù)據(jù)集上,scaled word2vec 遠優(yōu)于SAT 模型,而SAT 模型此前取得了中文詞類比任務(wù)的最好結(jié)果,且在模型訓(xùn)練時間方面,scaled word2vec 在實驗所給出的運行環(huán)境中,其所花費的時間不足SAT 模型的22%。
給定訓(xùn)練語料,即詞的序列w1,...,wT,skipgram 模型的目標(biāo)函數(shù)如下式所示:
其中c 為訓(xùn)練模型時所用的上下文窗口的大小。
和一般所用的利用詞w 周圍的上下文來預(yù)測該詞的做法不同,skip-gram 模型是使用詞w來預(yù)測其的上下文。 Skip-gram 模型的結(jié)構(gòu)非常簡單,詞wt作為輸入的單詞,其通過log-linear 分類器來預(yù)測其他的、在其的上下文周邊的詞wt+j.因為距離wt較遠的詞和wt之間的關(guān)系要弱于距離wt較近的詞和wt之間的關(guān)系,在實際代碼實現(xiàn)中,超參數(shù)c 并不是一個固定的值。 實際實現(xiàn)中,對于每一個wt都將先隨機生成一個0 ~c -1 之間的整數(shù)b,上下文窗口的大小被修改為左邊c - b 個詞,以及右邊c - b 個詞。
Skip-gram 模型還采用另一種被稱為下采樣(subsampling)的技術(shù)。 該處理技術(shù)是針對于那些出現(xiàn)非常頻繁的詞。 比如英文中經(jīng)常出現(xiàn)的“the”,“a”等。 這些單詞幾乎在語料中的每句話中都出現(xiàn), 但包含的信息卻非常的少?!癙aris”在“France”周邊出現(xiàn)時所表達出來的信息量遠多于在“France”周邊的詞“the”。 這和中文中的停用詞很類似。 如中文中的“的”,這個詞占中文語料的總詞頻的比例非常高,但卻幾乎沒有什么用處。 在skip-gram 模型中,下采樣將對詞的序列中的每個詞wi, 以如下的概率被保留其:
其中z(wi) 是詞wi出現(xiàn)的頻度,即wi出現(xiàn)的次數(shù)除以語料庫的大小,超參數(shù)t 是一個預(yù)先選擇的閾值。 對于小規(guī)模的數(shù)據(jù)集,t 一般可選擇為10-4;對于大規(guī)模的數(shù)據(jù)集,該值可選擇為10-5. 如下對上述保留wi的概率給出一個簡單的分析。 考慮z(wi) 為多少時,詞wi將會被下采樣。
如前所述,Skip-gram 模型還使用了NEG 技術(shù)來簡化其的目標(biāo)函數(shù)中的Pr(wt+j| wt) 的計算。 其的細節(jié)將在下一節(jié)中詳述。 本文中提出的改進方法也是針對于該NEG 技術(shù)。
本節(jié)中先回顧skip-gram 模型中所使用的NEG 方法。 NEG 方法可以理解為NCE 方法的一種簡化形式,本節(jié)中也將簡要介紹后者的主要計算形式。 在本節(jié)的最后基于NEG 和NCE 兩者之間的關(guān)系,將提出如何對NEG 進行修改來獲得其的改進計算方法。
在基本的skip-gram 模型中計算Pr(wO| wI)時若不考慮計算的開銷,采取的將是softmax 的計算形式,即:
其中v′wO和vwI分別為w 的“輸出”、“輸入”向量表示。
對于小規(guī)模的詞匯表,如詞匯量W 在1000及以內(nèi),上述這樣計算softmax 的方式是可行的。但對于大規(guī)模的語料庫所對應(yīng)的詞匯表, W 可達到105~107,而上述計算softmax 的方式每一次的計算開銷都和W 成線性關(guān)系。 因此這樣直接計算softmax 的方法顯然對于一般的、規(guī)模較大的語料庫是不可行的。 該問題的解決有一些方法:層次性softamx、NEG 和NCE 等。 其中層次性softmax 將W 個詞表示為一棵二分樹的葉子結(jié)點,這樣每個詞都對應(yīng)一條從根到葉子的路徑。 概率Pr(wO| wI) 的值可理解為對應(yīng)該路徑的隨機游走所發(fā)生的可能性。
層次性softmax 比起NEG、NCE 要復(fù)雜很多。 同時在skip-gram 模型上目前最好的結(jié)果也是基于NEG 的,因此這里不再對層次性softmax過多贅述,但不管是哪一種方法,都是為了解決上述softmax 計算過于困難的事實。
在skip-gram 模型的目標(biāo)函數(shù)中, logPr(wO| wI) 將會被替換為如下的形式:
類似的其來自負樣本的概率為:
在Mnih 等人的工作[3]中,ch被選擇為了固定值0,也就是說歸一化的因子exp(ch) 為0. 這本質(zhì)上是由于上下文h 的定義略過復(fù)雜,如定義為w 在文本中的出現(xiàn)位置之前的m 個詞。 這樣的話,上下文的個數(shù)將會很多,無法有一個確切上界,因為不同的h 帶來的參數(shù)ch將會過多而無法都作為模型的參數(shù)被學(xué)習(xí)。 無論如何在ch都為0 的情況下,參數(shù)θ = θ0將包括模型最終所能學(xué)習(xí)到的詞向量。
從NCE 的優(yōu)化目標(biāo)Jh(θ) 出發(fā),這里將逐步建立其和NEG 形式之間的聯(lián)系。 首先進行如下的等價變換:
其中σ(x) 也為sigmoid 函數(shù)。
下一節(jié)中將用實驗表明這一改變不僅具有理論上的意義,且在實際訓(xùn)練中也確實能生成質(zhì)量更優(yōu)的詞向量模型。
在衡量詞向量的質(zhì)量時將考慮訓(xùn)練出來的詞向量在詞類比任務(wù)中的表現(xiàn)。 該詞類比任務(wù)是詞向量技術(shù)公認的衡量方法之一,具有很強的代表性。 如下先對這個任務(wù)進行簡要的闡述。
詞類比任務(wù)首次在Mikolov 等人的工作[5]中被提出。 具體來說,經(jīng)過訓(xùn)練后的模型需要回答類似這樣的問題:和vector(“biggest”) -vector(“big”) + vector(“small”)最相似的詞向量應(yīng)該對應(yīng)于哪個詞? 毫無疑問若詞向量能夠準(zhǔn)確反映詞與詞之間的聯(lián)系,上述問題的答案應(yīng)該是“smallest”。 除了這種上述這種語法上的代數(shù)關(guān)系,詞類比任務(wù)還考慮這樣的問題,如vector(“France”) - vector(“Paris”) + vector(“Germany”),該問題的答案應(yīng)該是“Berlin”。也就是說詞類比任務(wù)中既有考慮語法上的代數(shù)關(guān)系,還有考慮語義上的代數(shù)關(guān)系。 在中文詞類比任務(wù)中也類似的問題,如vector(“侄子”) -vector(“侄女”) + vector(“孫子”),回答應(yīng)為“孫女”;vector(“南京”) - vector(“江蘇”) +vector(“成都”),回答應(yīng)為“四川”。 在中英文詞類比任務(wù)中,都會考慮有多少問題被回答正確。這樣分別針對于語法問題和語義問題,將會有語法準(zhǔn)確率和語義準(zhǔn)確率這樣的衡量指標(biāo),分別表示這兩類問題中有多少問題被正確回答。 在這兩者的基礎(chǔ)上,總的準(zhǔn)確率一般作為不同模型訓(xùn)練的詞向量質(zhì)量的最終衡量指標(biāo)。
同時在中文任務(wù)中,還會考慮一個被稱為rank 的衡量指標(biāo)。 考慮一個詞類比任務(wù)中某條測試數(shù)據(jù)對(w1,w2,w3,w4).模型將計算如下的w*,該w*具體可以這樣計算:minwcos(w2-w1+ w3,w).若w*=w4,則模型回答正確。 同時不管模型回答是否正確,都將計算w4在所有w 按cos(w2- w1+ w3,w) 排序后中的排名。 所謂的rank 衡量指標(biāo),則是所有排名的平均值。 在差不多相等的準(zhǔn)確率的情況下,若衡量指標(biāo)rank過大,則表明相應(yīng)的模型不夠穩(wěn)定,即對某些測試數(shù)據(jù)對能回答正確;對另一些測試數(shù)據(jù)對則回答得非常錯誤,正確答案在余弦相似度中的排名非常得靠后。
英文詞向量任務(wù)中的詞類比任務(wù)[5]包括8,869 個語義問題,以及10,675 個語法問題,總共是19,544 個詞類比問題。 中文詞向量任務(wù)中詞類比任務(wù)包括1,124 個問題,并分為了Captial、City 和Family 這3 個類別。 中文詞向量任務(wù)的有關(guān)的具體細節(jié)可參考Niu 等人的工作[8]。
首先考慮英文語料庫,這里選取text8 語料①http:/ /mattmahoney.net/dc/text8.zip,其大小約為100 兆,包括約17,000 個詞。因英文詞向量的生成不是本文所著重的重點,這里只考慮了這個規(guī)模大小的語料庫,以驗證修改后的NEG 是否優(yōu)于原本的NEG 的形式。
中文語料庫方面,本文中先考慮一個大小約為1 千兆的語料庫。 該語料庫是由中文文本分類數(shù)據(jù)集THUCNews②http:/ /thuctc.thunlp.org/得到。 原本的THUCNews包含74 萬篇新聞文檔,大小約為2.19 千兆。 本文中為節(jié)省訓(xùn)練時間,以及只提供詞向量的質(zhì)量的定性驗證,從原本的THUCNews 中按類別隨機抽取了一部分內(nèi)容,并采用了THULAC③https:/ /github.com/thunlp/THULAC-Python進行了中文分詞,最終形成的語料庫的大小為上述所說的1 千兆。
關(guān)于模型訓(xùn)練環(huán)境方面,實驗環(huán)境為16 千兆內(nèi)存,16 核,處理器為Intel(R) Xeon(R)Bronze 3106 CPU @ 1.70GHz.
如下實驗中將采用原本的NEG 方法的詞向量模型稱為word2vec,將改進后的NEG 方法的詞向量模型稱為scaled word2vec,將目前生成中文詞向量質(zhì)量最好的模型稱為SAT.
經(jīng)過text8 語料庫訓(xùn)練后,相關(guān)的實驗結(jié)果如表1. 從中可以看出,改進后的NEG 方法對應(yīng)的scaled word2vec,不管是在語義準(zhǔn)確率上還是在語法準(zhǔn)確率上都是優(yōu)于原本的word2vec. 注意這里的準(zhǔn)確率只是在text8 這樣的小規(guī)模數(shù)據(jù)集下的準(zhǔn)確率。 在大規(guī)模數(shù)據(jù)集下,如cbow 模型在特定的超參數(shù)設(shè)置下準(zhǔn)確率可達到78%④https:/ /github.com/tmikolov/word2vec,而cbow 模型一般是弱于skip-gram 模型,無論數(shù)據(jù)集規(guī)模的大小。 注意word2vec 模型一般默認表示skip-gram 模型。 表1 的實驗表明了在text8這樣非常具有代表性和公開的數(shù)據(jù)集上,所提出的scaled word2vec 并沒降低word2vec 的表現(xiàn),反而帶來質(zhì)量更優(yōu)的詞向量表示。
在text8 語料庫上訓(xùn)練時,相關(guān)的超參數(shù)設(shè)置上scaled word2vec 和word2vec 完全一致。 一些關(guān)鍵超參數(shù)的設(shè)置為:初始學(xué)習(xí)率為0.025,詞向量的長度為200,上下文窗口大小c 為向左、向右均8 個詞,NEG 中超參數(shù)k 為25,下采樣超參數(shù)t 為1e-4,迭代次數(shù)為15. 這些參數(shù)的設(shè)置可參考word2vec 項目的在text8 上的默認設(shè)置4,后者針對于所謂的cbow 模型,初始學(xué)習(xí)率0.025 為代碼為skip-gram 模式時的默認值,線程數(shù)因上述所提及運行環(huán)境所限制而選擇為了16.
針對于中文語料庫, 這里先考慮在THUCNews 中抽取的1 千兆的語料庫。 實驗結(jié)果如表2. 其中SAT 模型的訓(xùn)練時間長達9.4 個小時,而scaled word2vec 在相同的運行環(huán)境下訓(xùn)練時間不足2 個小時。 在中文數(shù)據(jù)集上的超參數(shù)設(shè)置,為了實驗結(jié)果的公平起見,采取了和SAT 模型一樣的設(shè)置。
超參數(shù)的設(shè)置和在text8 中訓(xùn)練的主要區(qū)別有:迭代次數(shù)為3。 線程數(shù)因運行環(huán)境的限制修改為了16 個線程。 從表2 中可以看出,從Total accuracy/rank 這一綜合指標(biāo)來看,無論是準(zhǔn)確率,還是之前所述的rank,模型scaled word2vec都取得了3 個模型中最好的結(jié)果。 模型SAT 原本的項目中線程數(shù)為20,但這個對最后的影響結(jié)果不大。 多個線程意味著多個訓(xùn)練線程在同時進行,其會影響訓(xùn)練時間的長短。 對于16 核的運行環(huán)境,選擇16 個線程可避免線程之間不必要的調(diào)度,因此這里的選擇是合理的。
表1 在text8 上訓(xùn)練之后的word2vec 和scaled word2vec 的結(jié)果比較
表2 在THUCNews 的1 千兆的語料庫上的各模型的結(jié)果比較
本文中基于NEG 和NCE 之間的聯(lián)系,提出了改進的skip-gram 模型。 這里的工作中因為計算資源的限制,未能在更大規(guī)模的(如20 多千兆的語料庫等)的數(shù)據(jù)集上進行對比實驗。 因提出的scaled word2vec 較word2vec 改動較小,可以很好地和現(xiàn)有的word2vec 等工具包融合在一起。 同時對比SAT 模型,scaled word2vec 較少的計算資源開銷讓其在大規(guī)模的語料上的訓(xùn)練成為可能,且無需人工知識的介入,所以也適合對其他語言的詞向量的生成任務(wù)。