柳 楊,吉立新,黃瑞陽,朱宇航,李 星
(國家數字交換系統工程技術研究中心,河南 鄭州 450002)
詞向量(word vectors)也稱為詞嵌入(word embeddings),是一種基于神經網絡的分布式表示方法,可以把自然語言中的單詞映射到稠密、實值的向量空間。將單詞映射到向量空間的好處是,相似語義的單詞可以分布在近似的、鄰近的向量空間,而通過計算向量之間的夾角或距離可以表示詞與詞之間的相似性。Mikolov[1]等人研究發現跨語言、相同語義的單詞分布在相似的語義空間位置,從而在一定程度上證明了詞向量表示語義的合理性和有效性。
針對詞向量的表示方法,Mikolov[2-4]等人提出Word2Vec(word to vectors)方法,其主要包括CBOW(continuous bag-of-words)和Skip-gram兩種模型,分別從語境單詞推測目標單詞、從目標單詞推測語境單詞。Pennington[5]等人提出GloVe(global vectors)方法,利用全局詞共現矩陣和矩陣分解的方法獲取詞向量。Ji[6]等人提出WordRank方法,該方法通過使用魯棒的排序方法獲得詞向量。Joulin[7]等人、Bojanowski[8]等人提出了FastText方法,該方法利用詞形態變化,在Word2Vec的基礎上發展了詞向量的學習和表示方法,訓練速度、性能都有所提升。以上方法都是將一個單詞映射到向量空間唯一的一個點上,統稱為單一詞向量方法。這種方法已經被廣泛運用于如文本分類、文本摘要和機器翻譯等自然語言處理相關任務場景中,然而由于自然語言本身存在一詞多義的特性,上述單一詞向量的方法因無法解決單詞的歧義問題從而限制了詞向量表達單詞語義的性能。
其他如將詞映射為多個詞向量或高斯分布的方法也是解決上述問題的多種嘗試。Vilnis[9]等人將單詞映射為一個高斯分布,Chen[10]等人基于Vilnis[9]等人的工作,提出了GMSG(gaussian mixture skip-gram)模型,將每個單詞映射為多個高斯分布的合成,每個高斯部件代表一個詞義。Huang[11]等人通過使用全局文檔語境結合局部語境得到每個單詞的多個語義向量。Neelakantan[12]等人提出MSSG(multi-sense skip-gram)模型,通過在線詞義區分的方法學習多語義詞向量。Niu[13]基于Skip-gram模型使用注意力機制學習義素(sememe)的方法得到多語義詞向量。但以上方法或多或少沒能有效利用詞序、句法結構、詞間距等信息對詞的語義表達的影響計算詞的向量表達。
本文受Dauphin[14]等人使用門控卷積網絡(gated convolutional networks,GCN)進行語言建模及Gehring[15]等人將GCN加以注意力機制應用于機器翻譯工作的啟發。其中Dauphin[14]等人的工作成功地將門控機制應用于卷積神經網絡,并且取得了比LSTM(long short-term memory)門機制更好的效果,Gehring[15]等人的工作利用GCN和跳躍注意力機制模擬了人類閱讀時的注意力機制和跳躍機制應用于搭建機器翻譯模型。
本文基于自然語言的多義性是由語義最小單元詞義的多義性,從低層次到高層次逐層影響到自然語言整體表達的多義性這一基本思想,采用非殘差塊封裝的門控卷積機制,提出了層次注意力門控卷積網絡模型(hierarchical attention gated convolutional networks model,HAGCNM),并基于該模型在語料上學習、計算得到了詞的多語義詞向量(multi-sense word embedding,MWE)。
本文的多語義詞向量計算方法主要基于CBOW模型由語境詞預測目標詞的思想和GCN模型的門控機制,所以本節將主要介紹CBOW模型和GCN模型的相關工作。
CBOW是Word2Vec方法中的一個重要模型。CBOW模型的結構如圖1所示,其包含三層: 輸入層、映射層和輸出層。

圖1 CBOW模型結構
其工作原理是在已知目標單詞wt(第t個單詞,t∈N)一個窗口內結合上下文語境cwt={wt-2,wt-1,...,wt+1,wt+2}預測目標單詞wt。在該方法中,每個單詞wt被映射成向量ewt,其中ewt∈Rd,d是詞向量維度。wt的語境cwt被映射成向量ecwt,如式(1)所示。
(1)
基于負抽樣(negative sampling,NEG)的CBOW模型希望能最大化語境條件下對應目標單詞出現的聯合概率,如式(2)所示。
(2)
函數NEG(·)得到負抽樣的語境單詞向量。條件概率P(u|cwt)如式(3)所示。
(3)
1{·}是示性函數,σ(·)是Sigmoid激活函數,eu是被用來比較的詞向量。
給定語料,得到(詞,語境)對(wt,cwt)后,目標是最小化損失函數,θ是該模型參數集,如式(4)所示。
(4)
Dauphin[14]等人于2016年提出GCN模型。其模型結構如圖2所示,其原理可以歸納為在卷積的基礎上添加了門控機制,并將卷積、門控單元封裝成殘差模塊進行堆疊[16]。
輸入的詞向量矩陣E=[ew1,ew2,...,ewN](句子長度為N)進行如式(5)所示運算得到隱層hi輸出,所以不存在路徑依賴,多個單詞可以并行處理。
hi(X)=(X*W+b)?σ(X*V+c)
(5)
其中X∈RN×d可以是隱層hi輸入的詞向量矩陣或上一隱層的輸出。W、V∈Rk×d×m,b、c∈Rm,是通過學習獲得的參數,k是卷積核的寬度,m是卷積核的個數。σ是Sigmoid激活函數,?是矩陣的逐點乘運算。σ(X*V+c)是對信息能否通過該隱層節點的門控,該機制稱為門控線性單元(gated linear units,GLU)。
通過對多個這樣結構隱層的堆疊,得到包含了語境窗口內每個單詞的上下文分布式表示。將卷積和門控線性單元封裝在一個預先激活了的殘差塊中,其輸出加上該模塊的輸入作為最后的輸出。該模塊結構上的瓶頸是最多堆疊5層該殘差塊,否則會影響計算效率[14]。
我們將這種將門控方法應用到卷積的機制稱為基于殘差模塊封裝的門控卷積機制。
針對目前詞向量表示存在的問題,本文提出了基于HAGCNM模型的多語義詞向量計算方法。
自然語言的多義性來源于承載語義的最小單位——詞的多義性。只有出現在語境中,詞才會受上下文詞、句法結構、語法、詞序和詞間距離等因素的影響,從而限定在一個或多個語義表達上。按照詞的多義性,經詞嵌入方式得到的詞向量應該對應分布在詞的多個語義空間(稱為詞的子語義空間)上。
現有的單一詞向量方法的學習過程中,詞所學習到的語義向量是幾種子語義向量的平均。這種方法在一詞多義的場景下使詞義的表達偏向于某一個子語義,從而不利于解決一詞多義性的問題。
本文通過給預訓練好的每個單詞單一詞向量ep加上多個語義偏移向量{eo1,eo2,...,eon},得到每個詞的多語義詞向量矩陣Es∈Rn×d,n為子語義個數,d為向量維度。
(6)
其中esj=ep+eoj,esj∈Rd,j=1,2,3...,n。
圖3所示為多語義詞向量的子語義的更新過程,其中圖3(a)是用1億個詞的英文Wiki語料通過Word2Vec訓練得到詞向量中抽取的幾個詞的向量的降維表示。提及單詞“apple”一般會聯想到“mac”“iphone”“computer”等與IT有關的詞或者是“pineapple”“banana”“fruit”等與水果有關的詞。從圖3(a)可以看到“apple”分布在兩類語義中間更靠近IT類語義的位置。從而難以分辨“apple”到底指的是水果類語義還是IT類語義,從圖3(a)的結果來看更多的把“apple”視為IT類語義。
如圖3(b)所示基于Word2Vec方法得到的單一詞向量基礎上,首先給“apple”隨機初始化了4個子語義偏移向量,與“apple”相加得到“apple0_init”到“apple3_init”。隨著訓練的進行,4個子語義向量分別更新到了不同的語義位置。如“apple2”更靠近水果類語義位置,“apple0”“apple1”“apple3”更靠近IT類語義位置。
可以看到通過本模型學習得到的多語義詞向量將詞的語義擴散到多個語義位置。相較于之前,單一詞向量能更好地描述詞的多義性。
本文基于CBOW模型由語境詞預測目標詞的思想,以及非殘差塊封裝的門控卷積機制,加以層次注意力機制,構建了一種HAGCNM模型。
對于詞匯表中每一個單詞wt都有對應的多語義詞向量矩陣Es,如式(6)所示,作為模型子語義層的輸入。
2.2.1 層次注意力機制預測目標詞
圖4所示為HAGCNM模型中的層次注意力實現原理示意圖。其中每個詞的多語義詞向量由多個子語義向量esj(j∈N+)構成,對于目標詞wt的子語義向量esi(i∈N+)受所選定語境窗口除esi自己外,目標單詞及其他單詞的子語義向量esj(j≠i)注意力的影響,得到esi的權重系數Ki,將wt的所有
子語義向量加權求和得到在該語境窗口下wt的合成語義向量ewt,其他單詞同理。


圖5 HAGCNM模型結構圖
2.2.2 非殘差塊封裝的門控卷積機制
本文直接將GCN加入到模型中,并沒有采用殘差塊封裝的模式。使用殘差塊封裝是因為深度神經網絡在訓練中容易梯度消失,導致訓練結果變差。
實驗結果表明,非殘差塊封裝的門控卷積機制在神經網絡隱藏層層數較少的情況下能取得較好的效果。
該機制利用卷積加GLU單元的方式得到每個子語義的注意力向量。n為偶數時每個卷積核k∈R(n+1)×d×2d,n為奇數時k∈Rn×d×2d,對輸入的多語義詞向量矩陣前后各補充n/2(向下取整)個零向量,卷積步長為1。第l步卷積輸出hol=[AB],hol∈R2d,A、B∈Rd。然后通過GLU單元的運算,得到輸入的多個語義注意力矩陣,如式(7)所示。
g([AB])=A?σ(B)
(7)
其中?是向量A、B的逐點乘法,σ是Sigmoid函數,g([AB])∈Rd。B起到的是門控的功能[14],其控制了信息的流通。
2.2.3 子語義注意力層
為了得到子語義層注意力矩陣,如圖4左上角對單詞“I”“want”的處理所示,首先將語境窗口(窗口長度為N)內每個單詞的多語義詞向量矩陣通過一層非殘差塊封裝的門控卷積機制,然后將所有單詞對應的輸出向量接連起來得到向量矩陣Y∈RnN×d,為模擬人類分析、比對詞義時往往會損失一部分信息的情況,添加Dropout層得到Ydrop∈RnN×d,子語義間的注意力可以計算得到:
a0=Ydrop×YT
(8)
其中a0∈RnN×nN(同時令對角線為0,以排除自己對自己注意力的干擾),如圖5左邊部分所示子語義層的注意力矩陣。a0的每一列對應語境窗口內其他子語義向量對該列對應的子語義向量的注意力情況。
對每一列采用最大池化,取語境窗口內最大程度的注意力作為權重。對每個單詞wt子語義向量esj(j∈N+)加權求和,得到其合成語義向量ewt。
2.2.4 合成語義注意力層

語境窗口內的每個詞都是目標單詞,也即對每個目標單詞其語境窗口都是非對稱的,這樣就考慮到了目標單詞在不同語境中可能出現的不同位置對其語義表達的影響。
2.2.5 輸出層

所以輸出層對相似度矩陣每一行求Softmax歸一化,使用交叉熵的方法,定義得到損失函數如式(9)所示。
(9)

在學習語料的過程中,會將損失函數使用梯度反向求導的方式更新每個單詞的語義偏移向量{eo1,eo2,...,eon},以期每個單詞的子語義向量可以分布到合適的語義空間點中。
模型在子語義注意力層使用一層門控卷積機制層,在合成語義注意力層使用四層門控卷積機制層。使用的優化方法為Nesterov[17],其中momentum=0.99,初始學習率lr=0.5,學習速率按照步數每2 000步指數下降15%,并且使用了梯度裁剪[18]閾值為0.035。對于模型中Dropout參數Ddropout,Ddropout=0.75效果最好。

該模型采用批處理的方式,所以對每一層的注意力矩陣及卷積輸出進行了批歸一化[19]。
首先分別在英文小規模語料Text8(約有1 700萬單詞),在大規模語料英文Wiki(約有1.5億單詞)上學習得到詞向量,在Mikolov[2]的詞類比任務上實驗以驗證本方法的有效性;其次基于該任務分別針對子語義數量n、窗口尺寸N、向量維度d、時間消耗t進行本方法性能的測試;然后在不同數據集: WordSim-353、MC、RG和RW上進行實驗;最后在PTB(penn tree bank)數據集上對模型語言建模能力進行實驗。
Wordanalogy詞類比任務*https: //github.com/dav/word2vec/tree/master/data(Mikolov[2])是由一系列的詞類比任務構成,如“a與b的類比就如同c和_的類比”。該數據集一共包括19 544個這樣的問題,被分割成了語義類比和語法類比兩個部分。語義類比示例如“boy girl nephew niece”;語法類比示例如“acceptable unacceptable aware unaware”。
WordSim-353WordSim-353*http: //www.cs.technion.ac.il/~gabr/resources/data/wordsim353/wordsim353.html(Finkelstein[20])一共包括353對單詞和它們的相似度得分。該數據集被分成了兩個部分: 單詞相似集和單詞關系集。單詞相似集包含153對詞和它們的相似度得分,該分值基于13個主題打分的平均值,例如“tiger cat 7.35”;單詞關系集包含200對詞和它們的相似度得分,該分值基于16個主題打分的平均值,例如“FBI fingerprint 6.94”。
MCMC*https: //github.com/mfaruqui/eval-word-vectors/tree/master/data/word-sim/EN-MC-30.txt(Miller和Charles[21])包括30對名詞并且按照語義相似度進行了打分,例如“coast shore 3.70”。
RGRG*https: //github.com/mfaruqui/eval-word-vectors/tree/master/data/word-sim/EN-RG-65.txt(Rubenstein[22])包括65對名詞并且按照語義相似度進行了打分,例如“crane rooster 1.41”。
RWRW*https: //github.com/mfaruqui/eval-word-vectors/tree/master/data/word-sim/EN-RW-STANFORD.txt(Luong[23])包括2 034對詞,詞的類型多種多樣,并且含有大量罕見詞,同樣按照語義相似度進行了打分,例如“connoting imply 7.67”。
PTBPTB*http: //www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz(Marcus[24])中包括929KB訓練單詞,73KB驗證單詞和82KB測試單詞。PTB數據集是語言模型訓練中經常使用的一個數據集,它的質量較高,可以用來評測語言模型的準確率。
為驗證本方法的有效性。本文分別在Text8和英文Wiki語料上訓練了Skip-gram、CBOW和GloVe的單一詞向量,將其評測結果作為一個對比基線。
基于以上單一詞向量完全隨機初始化子語義偏移向量得到的多語義詞向量(random initial MWE,Ran-MWE)作為另一個對比的重要依據,因為Ran-MWE沒有經過HAGCNM模型在語料的學習,所以和經過HAGCNM模型學習后、更新了每個單詞的子語義偏移向量得到的MWE的實驗結果對比,以證明本方法的有效性。
各模型訓練參數如下: 所有模型的窗口長度為20,向量維度為200;子語義數量為4。模型各訓練參數對實驗結果和性能的影響在3.3節“性能分析”中有詳細討論和實驗?;诖罅繉嶒灒竟澰O置的訓練參數在詞類比實驗上取得的結果最好。
3.2.1 評測方法
本文采用cos相似度作為詞向量相似度。詞類比的實驗任務是已知wa與wb,由wc類比wa與wb的關系推得wd。

3.2.2 實驗結果及分析
表1和2分別展示了在不同語料下詞類比任務的實驗結果。

表1 詞類比實驗結果(1)

表2 詞類比實驗結果(2)
通過分析實驗結果我們可以得到如下結論。
(1) Ran-MWE相比于基線的單一詞向量實驗結果的準確率均有下降,說明基于單一詞向量隨機初始化得到的多語義詞向量并不能很好地表達詞的多語義,反而會有對單詞語義表達的負面影響。
(2) MWE相比于Ran-MWE,在語義類比上有平均1.92%的較高的性能提升,語法類比上1.31%的性能提升。結合圖3對更新過程的記錄,可以判斷,隨機初始化的子語義偏移向量經過學習,達到了更好表達詞的多個語義的位置。
(3) MWE和基線的結果對比顯示,在語義類比上有平均0.97%的性能提升,可最高提升1.42%,在語法類比上有平均0.06%的提升,語法類比上的提升相對不明顯。由此可以認為基于單一詞向量學習到的多語義詞向量能更好地表達詞的多義性,但在語法性能上的表達還欠妥。
實驗結果表明,基于多種單一詞向量、在不同尺寸大小的語料上學習得到的MWE對詞語義的表達均有一定效果的提升,從而證明了MWE方法對單一詞向量性能的提升有很好的泛化性。
本文基于詞類比任務對MWE進行了性能分析實驗。實驗結果如圖6所示。使用Text8語料基于CBOW模型訓練得到的單一詞向量,分別針對子語義數量、窗口尺寸、向量維度、訓練時間消耗進行了實驗分析。
圖6(a)、圖6(d)中CBOW模型訓練窗口尺寸為20,向量維度為100,MWE訓練窗口尺寸為20,向量維度為100。圖6(b)、圖6(e)中CBOW模型訓練窗口尺寸為20,向量維度為200,MWE訓練子語義數量為4,向量維度為200。圖6(c)、圖6(f)中CBOW模型訓練窗口尺寸為200,MWE訓練窗口尺寸為20,子語義數量為4。
通過分析實驗結果我們可以得到:
(1) 如圖6(a)、圖6(d)所示,隨著子語義數量的增加,準確度有穩定的提升,但時間消耗變長。
(2) 如圖6(b)、圖6(e)所示,窗口尺寸中間位置準確度的提升最少,由中間向兩邊準確度的提升逐漸變大。但從語言建模的角度看,實際實驗結果表明: 隨窗口尺寸變小,語言建模能力下降,時間消耗隨著窗口尺寸的增加而減小。
(3) 如圖6(c)、圖6(f)所示,隨著向量維度的增加,準確度先增加后減小,但準確度的提升在穩定增加,向量維度越大,詞向量的表示就越準確,但會有一個適中的取值范圍,時間消耗隨著向量維度的增加而增加。


圖6 詞向量性能分析
詞相似度任務的目的是通過計算數據集詞對相似度的排序,與數據集給出的人類判斷的詞對相似度得分排序進行比較,從而評價該詞向量語義表達的質量。
3.4.1 評測方法
本文采用cos相似度作為詞向量的相似度?;€的評測方法為計算數據集所有詞對的相似度,然后得到詞對相似度排序,計算該詞對相似度排序和數據集的詞對得分排序的斯皮爾曼等級相關系數(Spearman correlation)ρ,取ρ×100并保留小數點后兩位作為評測依據。
對于MWE的評測方法,每個詞都有一個子語義向量矩陣,計算詞對中兩個單詞間所有子語義向量的相似度,得到相似度矩陣,取該矩陣所有的元素的平均作為該詞對的相似度。之后用同樣方法計算斯皮爾曼等級相關系數(Spearman correlation)ρ,取ρ×100并保留小數點后兩位作為評測依據。
3.4.2 實驗結果
表3所示為實驗結果。從實驗結果可以看到,基于Skip-gram的MWE方法提升最明顯,平均有3.63、最高有5.48的提升,其中WS353-Rel和MC上的提升均在5左右;基于CBOW的MWE方法平均有0.94、最高在WS353-Sim上有1.12的提升;基于GloVe的MWE方法平均有0.86、最高在RG上有4.23的提升,但在WS353-Rel和RW上沒有提升,有0.5左右的下降。

表3 詞相似度實驗結果
從整體上來看,在各個數據集上,MWE方法最好結果相比于單一詞向量最好結果有平均2.11、最高5.47的提升。
對實驗結果的分析表明: 分別基于Skip-gram、CBOW和GloVe得到的MWE均能基本在單一詞向量基礎上對詞的表達性能有所提升。
MWE的方法是通過層次注意力機制結合門控卷積機制,通過在固定語境窗口詞的子語義層得到語義合成向量,然后通過語境單詞的合成語義向量預測目標詞的語義合成向量。該方法的目的是通過模仿人類理解、分析語境中詞的語義表達的機制,從而對語言進行較好的建模。所以本文使用PPL作為評測指標,對該方法的語言建模能力進行了評測。本文中PPL可以理解為在給定語境窗口(本節實驗中長度為20個單詞)中所有單詞作為備選單詞的條件下,模型綜合語境單詞預測目標單詞時有多少種選擇的數量。PPL越低說明模型預測目標單詞的能力越準確。
與之對比的是通過語境單詞預測目標單詞的GloVe和CBOW模型,本文分別做了兩組對比實驗。第一組對非對稱窗口語境單詞取平均來預測目標詞;第二組添加了注意力機制。
在PTB數據集上進行實驗,實驗結果如表4所示。實驗結果表明: MWE方法相較于其他方法PPL均有顯著下降,該方法能夠更好地綜合整體語境對語言進行建模。除了PTB數據集,本方法在不同語料的實驗上PPL也均能下降并穩定在1.01~1.10左右。

表4 語言建模實驗結果
本文綜合考慮了詞的多義性和詞序、句法結構、詞間距離等對固定語境詞的語義表達的影響,提出了基于門控卷積機制與層次注意力機制的多語義詞向量計算方法。該方法使用非殘差塊封裝的門控卷積機制以利用詞序、句法結構等信息控制詞語義的表達;利用注意力機制使詞語義的表達受到語境詞的子語義的影響。
本文做了四個實驗: 有效性實驗驗證了本方法在一定程度上的有效性;性能實驗探索了不同參數設置對本方法性能的影響;在WordSim353、MC、RG、RW數據集上的實驗表明,本方法相較于單一詞向量方法性能有所提升;語言建模能力上的實驗表明,本方法相較于其他預測目標單詞的語言模型,可以有效地從語境單詞的備優單詞中選出目標單詞。
(1)提出了一種完全基于卷積神經網絡模型的多語義詞向量計算方法; (2)構造了一種由目標單詞所在的語境窗口(可以是非對稱語境窗口)中,所有單詞子語義向量間的相互注意力生成目標單詞子語義的權重,從而對目標單詞子語義向量加權求和計算得到目標單詞在該語境窗口中合成詞義向量的計算方法; (3)構造了一種由目標單詞所在的語境窗口(可以是非對稱語境窗口)中,其他單詞合成語義向量間的相互注意力生成其他單詞各自的權重,從而對其他單詞合成詞義向量加權求和計算以預測目標單詞合成語義向量的計算方法。
未來將針對以下幾個問題進一步探索: ①研究基于HowNet、標點符號等先驗知識的加入對本方法的影響; ②將HAGCNM模型應用于文本分類、關系抽取、情感分析等具體任務場景中。