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