劉勝杰,許亮
(四川大學(xué)計算機學(xué)院,成都610065)
隨著時代的進步,自然語言處理作為人工智能領(lǐng)域重要的方向之一,也在快速發(fā)展。計算機是基于數(shù)值或向量來進行計算的,而自然語言處理領(lǐng)域處理的對象并非數(shù)值或者向量,而是大量的文本數(shù)據(jù),這些文本數(shù)據(jù)并不被計算機所理解。通常的第一步處理就是要將文本數(shù)據(jù)進行轉(zhuǎn)換,將其轉(zhuǎn)換為一種結(jié)構(gòu)化形式,即可以利用數(shù)據(jù)的結(jié)構(gòu)化形式應(yīng)用在不同的任務(wù)中。而將文本數(shù)據(jù)轉(zhuǎn)換為計算機可以識別的表示是自然語言處理中非常重要的一個環(huán)節(jié)。詞嵌入技術(shù)的表示方法是目前流行且有效的方法,如何找到通用的詞嵌入表示方法成為近年來學(xué)者研究的熱點問題。文本的詞嵌入表示也很大程度上決定了具體應(yīng)用任務(wù)的性能。
目前詞嵌入的技術(shù)包括早期的傳統(tǒng)的詞表示法,如獨熱表示、TF-IDF 等,以及詞的分布式表示法,如ELMo、Bert 等。
獨熱表示把文本的單詞作為基本單位進行編碼,編碼后的向量中只有數(shù)字0 和1,且其中只有一個維度是1,而其位置即表示這個單詞在詞匯表里的位置,其他維度的值都是0。獨熱表示的缺點很明顯,主要有兩大問題:一個問題是獨熱表示的向量為稀疏表示,詞匯表的大小決定了向量的維度大小,而當(dāng)詞匯表里單詞很多時,向量的維度也就會很大,則會存在維數(shù)災(zāi)難的問題;且其表示能力弱,N 維度大小的向量僅能表示N個單詞。另一個問題是,不同單詞使用獨熱表示得到的向量之間是相互獨立的,這就造成了“語義鴻溝”的現(xiàn)象,即獨熱表示也不能表示一個單詞與另一個單詞的語義相似度。
TF-IDF 是一種用來計算每個單詞重要性的關(guān)鍵詞抽取的方法。評價一個單詞重要性的依據(jù)是其在一個文本以及語料庫中出現(xiàn)的次數(shù),在一個文本中出現(xiàn)越多,越重要,而在整個語料庫中出現(xiàn)越多,則越不重要。TF 表示詞頻,統(tǒng)計的是這個單詞在文本中出現(xiàn)了多少次,但統(tǒng)計過后的高頻詞語會有“是”、“的”這樣沒有實際意義的詞語,這些詞稱為停用詞,這時就需要為其加上一個權(quán)重,即IDF。IDF 表示逆文檔頻率,其衡量詞的常見程度,一個單詞越常見,則IDF 的值就越小。
通過計算詞頻和逆文本頻率,TF-IDF 在考慮效率的同時也得到了比較滿意的效果。但由于TF-IDF 僅僅考慮與詞頻相關(guān)的統(tǒng)計,沒有關(guān)注單詞與單詞之間的聯(lián)系。與獨熱表示相同,TF-IDF 依然存在向量維度較高、不能準(zhǔn)確表示文本語義的缺點。
相比傳統(tǒng)的詞表示法,詞的分布式表示法較好地解決了以上問題。
與簡單的詞嵌入表示如TF-IDF 相比,詞的分布式表示[1]是一種維度大小相對較低的稠密向量表示,且每一個維度都是實數(shù)。分布式表示將所有信息分布式的表示在稠密向量的各個維度上,其表示能力更強,且具備了不同程度上語義表示的能力。例如應(yīng)用在如機器翻譯,命名實體識別等許多任務(wù)中提升了很大的準(zhǔn)確率。
詞的分布式表示法又分為靜態(tài)的詞嵌入表示和動態(tài)的詞嵌入表示。
(1)NNLM
NNLM 是由Bengio 等人在2003 年提出的模型[2]。NNLM 模型中的思路較為簡單,我們認(rèn)為句子中某個單詞的出現(xiàn)與其上文存在很大的相關(guān)性,其中N 元語言模型即表示這個單詞與其前面的N-1 個單詞有關(guān)。即輸入是目標(biāo)單詞上文的單詞,學(xué)習(xí)任務(wù)是要求準(zhǔn)確預(yù)測這個單詞。模型在擬合過程中,優(yōu)化目標(biāo)是使得預(yù)測概率最大似然化。
在NNLM 模型中,詞嵌入映射矩陣是作為參數(shù)而存在的,訓(xùn)練這個語言模型時,詞嵌入表示也在不斷地被訓(xùn)練。即模型不僅可以根據(jù)上文預(yù)測后面接的單詞,還得到了單詞的詞嵌入這個副產(chǎn)品。
NNLM 使用稠密向量作為單詞的詞嵌入表示,解決了簡單詞嵌入表示如TF-IDF 的向量稀疏等問題。TF-IDF 不具備不同語境下表示不同語義的功能,而NNLM 可以在相似的語境下預(yù)測相似的單詞,具備了一定表示語義的功能。
(2)Word2Vec
Word2Vec 是谷歌開源的訓(xùn)練詞嵌入向量的工具,其中又包括CBOW 和Skip-Gram 兩種不同的訓(xùn)練模式[3]。在一個句子中,當(dāng)我們遮住目標(biāo)單詞時,能否通過其前面以及后面的單詞來推測出這個單詞,這就是CBOW 的思想。相反地,Skip-Gram 的思想則是,考慮這個單詞,模型要求通過這個單詞來推測出其前面以及后面的單詞。和NNLM 順便得到詞嵌入表示的方法不一樣,學(xué)習(xí)每個單詞的詞嵌入表示是Word2Vec 的主要任務(wù)。
Word2Vec 的缺點是,由于其訓(xùn)練出來的詞嵌入向量表示與單詞是一對一的關(guān)系,一詞多義問題還是沒有解決。
單詞在不同上下文中是具有不一樣含義的,而Word2Vec 學(xué)習(xí)出來的詞嵌入表示不能考慮不同上下文的情況。
通過NNLM、Word2Vec 等技術(shù)方法得到的靜態(tài)的詞嵌入表示,其本質(zhì)上就是當(dāng)模型訓(xùn)練好之后,在不同的上下文語境中,單詞的詞嵌入表示是一樣的,不會發(fā)生改變。為了解決一詞多義問題,考慮上下文而選擇不同語義,動態(tài)的詞嵌入方法提供了研究的思路和方向。
(1)ELMo
2018 年,Peters 等人首次提出了ELMo 模型[4]。與靜態(tài)的詞嵌入表示得到固定向量表示不一樣,ELMo 首先通過語言模型進行學(xué)習(xí),得到單詞的一個詞嵌入表示,在實際使用詞嵌入時,根據(jù)上下文單詞的語義再去調(diào)整單詞的詞嵌入表示,從而使得單詞在不同的上下文語境中得到不同的詞嵌入表示。
其網(wǎng)絡(luò)結(jié)構(gòu)采用了雙層雙向LSTM 網(wǎng)絡(luò)。其中前向雙層LSTM 和逆向雙層LSTM 分別代表正方向編碼器和反方向編碼器,輸入的分別是單詞的上文和下文。一個句子輸入到訓(xùn)練好的網(wǎng)絡(luò)中,最終將得到每個單詞三個不同的嵌入表示:雙向LSTM 中的兩層詞嵌入表示以及單詞的詞嵌入表示。其中雙向LSTM 中的兩層詞嵌入表示分別編碼了單詞的句法信息和語義信息。在做實際任務(wù)時,網(wǎng)絡(luò)中單詞對應(yīng)的詞嵌入表示將被提取出來作為新特征補充到實際任務(wù)中去。
ELMo 訓(xùn)練出來的詞嵌入效果已經(jīng)很好,其適用范圍廣,如閱讀理解、分類任務(wù)等。與之前的靜態(tài)詞嵌入表示方法相比,ELMo 最大的創(chuàng)新之處就在于,ELMo 可以依據(jù)不同上下文來動態(tài)地生成相關(guān)的詞嵌入表示。
對比后來出現(xiàn)的BERT 等模型,ELMo 的不足之處有兩點:一是ELMo 模型中使用LSTM 來提取特征,而LSTM 提取特征的能力沒有后來的Transformer 好;二是其采取的是用雙向簡單的拼接來融合特征,而后來的BERT 一體化融合特征表現(xiàn)更好。
(2)OpenAI GPT
在基于無監(jiān)督方式進行預(yù)訓(xùn)練時,GPT[5]仍然是使用標(biāo)準(zhǔn)的語言模型來訓(xùn)練,學(xué)習(xí)出來單詞的詞嵌入表示,然后可以在通過很小的調(diào)整之后應(yīng)用到不同的任務(wù)中去。與ELMo 相比,ELMo 模型中的特征提取器是使用的LSTM,GPT 采用的則是Transformer,Transformer 是谷歌團隊在2017 年提出的模型[6],其中最主要的是自注意力機制。自注意力機制是注意力機制的另一種形式。在Transformer 公布之前,自然語言處理領(lǐng)域的神經(jīng)網(wǎng)絡(luò),大多數(shù)是淺層的,而Transformer 公布以來,才將其網(wǎng)絡(luò)層數(shù)上升到幾十乃至上百層。Transformer 摒棄了如RNN、LSTM 等時序類模型結(jié)構(gòu),而相比RNN 等時序類模型又有更多的優(yōu)點,如并行化地更快速的處理,以及能學(xué)習(xí)更長距離的依賴關(guān)系等。
GPT 的不足之處在于,其采取的語言模型是單向的,未考慮下文。
(3)BERT
2018 年10 月,谷歌團隊提出了BERT 模型[7]。測試數(shù)據(jù)中表示,BERT 在多項自然語言處理任務(wù)中表現(xiàn)優(yōu)異,多數(shù)任務(wù)在原來的最優(yōu)指標(biāo)的基礎(chǔ)上有了很大的提高。自BERT 模型公布以來,就以其卓越的表現(xiàn)深受開發(fā)者們的喜愛。作為自然語言處理領(lǐng)域近幾年來研究成果的集大成者,BERT 也為詞嵌入表示的研究提供了很好的思路。
和GPT 一樣,在BERT 中,特征提取器也是使用的Transformer。且BERT 與ELMo 在最高層進行簡單的拼接特征不一樣,BERT 模型是真正在雙向上深度融合特征的語言模型??梢哉J(rèn)為,BERT 同時擁有ELMo 和GPT 兩個模型的優(yōu)勢。
與一般的編碼-解碼模型不一樣,BERT 中只有編碼器,沒有解碼器。BERT 創(chuàng)新的提出了兩個任務(wù):遮擋語言模型、預(yù)測下一個句子。前者是詞級別的,其采取的方法是,隨機擋住15%的單詞,讓模型去預(yù)測這個單詞,能夠訓(xùn)練出深度的雙向詞嵌入向量表示;后者是句子級別的,也是一個二分類任務(wù),其采取的方法是,將兩個句子的序列并連作為模型的輸入部分,中間加入分割符號,句子的開始和結(jié)束部分加上符號標(biāo)記,其能夠?qū)W習(xí)句子之間的關(guān)系,捕捉句子級別的表示。BERT 往往作為預(yù)訓(xùn)練模型來使用,其輸出的文本嵌入表示可以適用于各種實際的任務(wù),這也是BERT 只有編碼器而沒有解碼器的原因。在BERT 出現(xiàn)之前的詞嵌入技術(shù),如Word2Vec 中,一個句子的嵌入表示,往往簡單的使用Word2Vec 得到的各個單詞的詞嵌入表示進行平均或加和得到,這就導(dǎo)致無法得到包含深層語義的詞嵌入表示,實際任務(wù)中效果也較差。而通過BERT 得到的詞嵌入表示融入了更多的語法、詞法以及語義信息,而且動態(tài)的改變詞嵌入也能夠讓單詞在不同語境下具有不同的詞嵌入表示。
雖然目前BERT 模型效果已經(jīng)很好,但也存在不足的地方,主要有兩點:一是數(shù)據(jù)規(guī)模要求較高,如果沒有足夠大的語料,則很難達到期望的效果。二是開銷較大,其計算量很大,所需成本較高。
對于我們訓(xùn)練的詞嵌入向量表示,往往還需要評價這些向量的質(zhì)量。詞嵌入的評估分為兩大類:內(nèi)部評價和外部評價。
內(nèi)部評價是,在詞嵌入訓(xùn)練過程的某個子任務(wù)中,對通過詞嵌入技術(shù)如Word2Vec 和BERT 等生成的詞嵌入進行的評價。相比整體的任務(wù),往往這些子任務(wù)比較簡單快速,能幫助我們理解相關(guān)的系統(tǒng)。進行內(nèi)部評價的原因是因為一般的機器學(xué)習(xí)任務(wù)通常占用很多計算資源,且需要很多時間,有時我們沒有必要進行一個具體的任務(wù),通過內(nèi)部評價,來評估這些詞嵌入表示在子任務(wù)中的表現(xiàn)。
對在一個實際任務(wù)中產(chǎn)生的詞嵌入詞向量進行的評價,則是外部評價。詞嵌入的評價依賴于任務(wù)的結(jié)果,畢竟我們訓(xùn)練詞嵌入是為了完成具體任務(wù)。很多時候我們需要根據(jù)具體的任務(wù)來選擇合適的詞嵌入向量訓(xùn)練方法,這些任務(wù)通常都比較復(fù)雜,也需要花很長時間來計算精度。然而當(dāng)某個具體的任務(wù)表現(xiàn)較差時,我們往往不太清楚是否是某個子系統(tǒng)或是幾個子系統(tǒng)相互作用引起的問題,這時還需要配合內(nèi)部評價一起來評估。
在自然語言處理領(lǐng)域任務(wù)中,文本的詞嵌入表示是很重要的一環(huán),大量的研究針對其進行展開。從傳統(tǒng)的基于統(tǒng)計的TF-IDF 表示,到靜態(tài)詞嵌入表示如NNLM、Word2Vec,再到動態(tài)詞嵌入表示如ELMo、BERT 等,詞嵌入技術(shù)也隨著深度學(xué)習(xí)技術(shù)以及自然語言處理領(lǐng)域的發(fā)展而漸趨成熟。同時詞嵌入技術(shù)也是自然語言處理領(lǐng)域產(chǎn)業(yè)實際落地的重要支撐力量,未來也還有許多問題值得深入地研究。