嚴(yán)紅
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
在自然語(yǔ)言處理領(lǐng)域,文本作為非結(jié)構(gòu)化的字符數(shù)據(jù),首先需要轉(zhuǎn)化為可計(jì)算的數(shù)值數(shù)據(jù),所以首先將文本分割為單獨(dú)的單詞,將單詞作為文本的原子單位。而每個(gè)單詞則被表示為詞匯表中的一個(gè)索引或者只有對(duì)應(yīng)索引位置為1其余為0的獨(dú)熱編碼向量。這樣的表示方法具有簡(jiǎn)單性和健壯性的優(yōu)點(diǎn),然而單詞表示之間沒(méi)有相似性,互相沒(méi)有聯(lián)系,不包含任何語(yǔ)義語(yǔ)法信息。獨(dú)熱編碼是稀疏向量,如果在詞匯表特別大的情況,會(huì)使模型的計(jì)算量劇增造成維數(shù)災(zāi)難。所以針對(duì)這些問(wèn)題,有人提出了詞的分布式表示法——詞向量。詞向量是一個(gè)維度相對(duì)來(lái)說(shuō)較低的稠密向量,也就是說(shuō)它的每個(gè)維度都有實(shí)數(shù),而非大多數(shù)為0。自從詞向量被提出并結(jié)合神經(jīng)網(wǎng)絡(luò)應(yīng)用在自然語(yǔ)言處理子任務(wù)中,例如命名實(shí)體識(shí)別、事件抽取、病歷去識(shí)別化、機(jī)器翻譯和自動(dòng)問(wèn)答等,許多任務(wù)的準(zhǔn)確率得到很大的提升,可見(jiàn)它對(duì)于現(xiàn)有自然處理領(lǐng)域的重要性。
詞向量作為詞的分布式表示方法自從1986年被Hinton[1]提出后,經(jīng)過(guò)多年的研究,產(chǎn)生了非常多的詞向量的生成模型。不同的模型由于其輸入輸出的不同,使得詞向量具有不同含義和影響。例如Skip-Gram模型[5]中的詞向量,詞向量之間可以做簡(jiǎn)單的算術(shù)運(yùn)算來(lái)類比詞之間的相似性,例如vector(“King”)-vector(“Man”)+vector(“Woman”)的結(jié)果近似于Queen的詞向量。從詞向量的這種特性推測(cè),它可能在訓(xùn)練的過(guò)程中從語(yǔ)料學(xué)習(xí)到詞在上下文中的語(yǔ)義。隨著這種特性的發(fā)現(xiàn),也吸引著越來(lái)越多研究者投入到詞向量的研究中。
詞的表示法最開(kāi)始一般是潛在語(yǔ)義學(xué)LSA中所代表的具有統(tǒng)計(jì)信息的表示方法,例如獨(dú)熱編碼、TF-IDF向量等,不包含語(yǔ)義信息。詞的分布式表示概念首先由Hinton[1]在1986年提出,Bengio[2]接著提出了一種NGram神經(jīng)概率語(yǔ)言模型,在訓(xùn)練這個(gè)模型的過(guò)程中,順帶生成了詞向量,詞向量的研究就此展開(kāi)。
Bengio首先將詞表示成單詞表中的一個(gè)索引,用一個(gè)映射矩陣,將其轉(zhuǎn)換為D維的向量,也就是詞向量,然后將C個(gè)上文詞匯的詞向量串聯(lián)起來(lái),通過(guò)多層前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),預(yù)測(cè)為在該上文的情況下中心詞為當(dāng)前詞的條件概率。模型擬合過(guò)程中,優(yōu)化的目標(biāo)是使得預(yù)測(cè)概率最大似然化。其中,詞向量映射矩陣作為參數(shù)存在,在訓(xùn)練這個(gè)神經(jīng)概率語(yǔ)言模型時(shí),詞向量也在不斷地被訓(xùn)練,使得它們最貼近語(yǔ)料中的語(yǔ)義。最后得到了語(yǔ)言模型和詞向量。然而,Bengio提出的模型中使用Softmax作為模型的輸出層,一旦詞匯表的數(shù)量過(guò)大,模型的復(fù)雜度難以估量,訓(xùn)練難度倍增。例如,只有10個(gè)詞匯的詞匯表,Softmax層為10維,它和上一層的參數(shù)數(shù)目為10*W,映射矩陣參數(shù)為10*D,假設(shè)先忽略隱含層的參數(shù),那么參數(shù)數(shù)目為10*(W+D);而實(shí)際的詞匯表中至少也上萬(wàn),參數(shù)數(shù)目至少10000*(W+D),可見(jiàn)實(shí)際模型的訓(xùn)練難度。因此,Morin和Bengio[4]又進(jìn)行了優(yōu)化,將Softmax輸出層轉(zhuǎn)換為與哈夫曼樹(shù)結(jié)合的分層Softmax,將原有的Softmax維度S降低到了2*logS,大大降低了模型的復(fù)雜度,使得我們能以更少的時(shí)間和更少的計(jì)算資源訓(xùn)練詞向量。Mikolov等人[5]接著也提出了兩種詞向量的生成模型Skip-Gram和CBOW,前者將上下文作為輸出,中心詞作為輸入,后者反之。相比之間的模型[3-4],Mikolov等人去除了前饋式神經(jīng)網(wǎng)絡(luò)的隱含層,使得模型的計(jì)算復(fù)雜度大大降低,與此同時(shí),并強(qiáng)調(diào)了生成的詞向量具有語(yǔ)義語(yǔ)法的含義,尤其是詞向量之間的加減可以看做一種類比,使得不同的詞之間可以通過(guò)詞向量的運(yùn)算得到它們的聯(lián)系。綜合來(lái)看,CBOW相對(duì)來(lái)說(shuō)有著更好的效果。Mikolov等人在之后的研究[6]中,還進(jìn)一步提出子采樣和負(fù)采樣的方法,他們證明了在訓(xùn)練過(guò)程中對(duì)頻繁單詞的子采樣可以顯著提高速度(約為2x-10x),并提高稀有單詞表示的準(zhǔn)確性。提出的負(fù)采樣方法可以更快地訓(xùn)練頻繁單詞,并得到更好的向量表示。我們可以看出,詞向量生成模型在不斷地進(jìn)行優(yōu)化,一方面是詞向量的生成方式使其蘊(yùn)含更多的含義,更一方面能更快地訓(xùn)練詞向量,畢竟越大的詞匯表,訓(xùn)練的成本就越高,而實(shí)際運(yùn)用中更注重效率。
除了概率語(yǔ)言模型的方式生成詞向量,Collobert和Weston[7]提出了另一種詞向量的生成模型,在這個(gè)模型當(dāng)中輸入是一個(gè)窗口為C的幾個(gè)詞匯,包括一個(gè)中心詞和同樣數(shù)量的上文和下文詞匯,將其通過(guò)映射矩陣映射成詞向量,然后也是通過(guò)前饋神經(jīng)網(wǎng)絡(luò),但輸出層只有一個(gè)神經(jīng)元,用于給中心詞和上下文之間的聯(lián)系進(jìn)行打分。這種方式中,如果全部輸入語(yǔ)料庫(kù)中的上下文,那么無(wú)法給模型打分,所以將語(yǔ)料中的窗口上下文作為正例,將替換掉中心詞的上下文作為負(fù)例,從而可以訓(xùn)練得到詞向量。
從上面提及的方法中可以看出,詞向量基本是通過(guò)固定窗口的上下文生成的,忽略了每個(gè)詞匯在全局的統(tǒng)計(jì)學(xué)意義,所以Pennington等人提出了結(jié)合統(tǒng)計(jì)和詞義的一種詞向量生成方法,首先計(jì)算詞的共現(xiàn)矩陣,然后在局部的上下文窗口使得中心詞的預(yù)測(cè)概率和詞共現(xiàn)矩陣中包含上下文幾率的誤差最小化,從而得到最優(yōu)的詞向量。這種方法,相對(duì)來(lái)說(shuō)更強(qiáng)調(diào)文本中的統(tǒng)計(jì)學(xué),但也同時(shí)蘊(yùn)含了局部的上下文信息,實(shí)驗(yàn)證明了它在詞相似性、詞可類比性上和命名實(shí)體識(shí)別任務(wù)上的優(yōu)越。
之后,詞向量不僅繼續(xù)應(yīng)用在NLP領(lǐng)域上,還擴(kuò)展到了其他領(lǐng)域,將Embedding作為一種思想和表示學(xué)習(xí)方法,應(yīng)用到其他數(shù)據(jù)的表示上,例如Network Embedding[8]、Graph Embedding等。它的研究也越來(lái)越多樣。
能影響詞向量的不僅有生成方法,還有訓(xùn)練時(shí)的變量,包括語(yǔ)料類型、語(yǔ)料規(guī)模、詞向量維度和迭代輪數(shù)。詞向量訓(xùn)練從來(lái)都是無(wú)監(jiān)督的,不需要標(biāo)記的數(shù)據(jù)集,所以為了更好地還原詞在上下文的語(yǔ)義,使其更具有普遍性,通常選擇規(guī)模比較大的語(yǔ)料,比如維基百科、Gigaword或者語(yǔ)言數(shù)據(jù)聯(lián)盟(Linguistic Data Consortium,LDC)中的語(yǔ)料作為訓(xùn)練語(yǔ)料,當(dāng)然也有自采集的網(wǎng)絡(luò)文本作語(yǔ)料。語(yǔ)料的規(guī)模從百萬(wàn)詞到百億詞不等,一般情況語(yǔ)料庫(kù)較大比較好,但并非絕對(duì)的。詞向量維度在訓(xùn)練時(shí)指定,通常為100的倍數(shù)或者2的冪,不同的詞向量維度會(huì)使基于它構(gòu)建的自然語(yǔ)言處理模型有不同效果,一般而言詞向量維度高比低效果要好一些,但是過(guò)高的維度會(huì)大大提升模型復(fù)雜度,所以需要選擇適當(dāng)維度來(lái)應(yīng)用到其他的自然語(yǔ)言處理任務(wù)中。雖然詞向量是無(wú)監(jiān)督學(xué)習(xí)方式產(chǎn)生的,但訓(xùn)練的迭代輪數(shù)并非越高越好,在文獻(xiàn)[3]中就有實(shí)驗(yàn)描述了迭代輪數(shù)對(duì)不同詞向量的影響,可能輪數(shù)過(guò)多會(huì)導(dǎo)致過(guò)擬合。
評(píng)價(jià)詞向量的維度主要分為兩個(gè):詞向量生成模型的復(fù)雜度和質(zhì)量。模型的復(fù)雜度包括訓(xùn)練詞向量的輪數(shù)、詞向量模型的參數(shù)數(shù)目和詞匯表大小。詞向量質(zhì)量的評(píng)價(jià)方式也有兩種:一種是主觀評(píng)價(jià),從其本身的語(yǔ)義和語(yǔ)法方面衡量;一種是客觀評(píng)價(jià),將不同的詞向量運(yùn)用到自然語(yǔ)言處理子任務(wù)中,對(duì)比同一任務(wù)下詞向量造成的影響。
在主觀評(píng)價(jià)中,用到的數(shù)據(jù)集有SemEval-2012 Task 2的數(shù)據(jù)集,該數(shù)據(jù)集包含79個(gè)細(xì)粒度的單詞關(guān)系,每個(gè)關(guān)系都有3到4個(gè)單詞對(duì)。給定一組假定具有相同關(guān)系的詞對(duì),識(shí)別關(guān)系相似度的連續(xù)范圍,我們可以看作是類比問(wèn)題。這種數(shù)據(jù)集的單詞類比關(guān)系能夠一定程度地衡量詞向量包含的語(yǔ)義信息。通過(guò)不同詞向量在該數(shù)據(jù)集上的得分,可以評(píng)價(jià)詞向量的質(zhì)量——是否捕獲到單詞在上下文中的語(yǔ)義等信息。
在客觀評(píng)價(jià)中,詞向量則被運(yùn)用到命名實(shí)體識(shí)別、詞性標(biāo)注等任務(wù)中,和其他詞向量進(jìn)行對(duì)比。評(píng)價(jià)指標(biāo)為該任務(wù)的F1值,比較使用不同詞向量的同一任務(wù)的準(zhǔn)確率、召回率和F1值,間接得到詞向量的質(zhì)量評(píng)價(jià)。如果在同一任務(wù)模型上,F(xiàn)1值越高,說(shuō)明這種詞向量能較好地代表該詞的語(yǔ)義信息,從而改善該任務(wù)的準(zhǔn)確率。
詞向量和神經(jīng)網(wǎng)絡(luò)結(jié)合的模型給自然語(yǔ)言處理帶來(lái)了突破,因?yàn)槠涫沟迷~之間的關(guān)系可以通過(guò)計(jì)算發(fā)現(xiàn)關(guān)聯(lián),大量研究針對(duì)它展開(kāi),同時(shí)也使得“Embedding”思想應(yīng)用到其他領(lǐng)域,帶來(lái)新的進(jìn)展。本文主要按照詞向量的發(fā)展史,介紹了它相關(guān)的研究和評(píng)價(jià)方法。而不像圖像可以可視化,作為高級(jí)抽象的文本信息難以被具現(xiàn)化,詞向量中到底包含了什么信息,還值得繼續(xù)探索。