国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

自然語言處理領(lǐng)域中的詞嵌入方法綜述

2024-01-11 13:14王子威文俊浩
計算機(jī)與生活 2024年1期
關(guān)鍵詞:詞匯表語料庫語義

曾 駿,王子威,于 揚(yáng),文俊浩,2,高 旻,2

1.重慶大學(xué) 大數(shù)據(jù)與軟件學(xué)院,重慶 401331

2.信息物理社會可信服務(wù)計算教育部重點(diǎn)實驗室(重慶大學(xué)),重慶 400044

詞嵌入作為解決自然語言處理(natural language processing,NLP)任務(wù)中的核心步驟,其目的是將離散字符格式的文本數(shù)據(jù),轉(zhuǎn)換成模型能夠處理且蘊(yùn)涵豐富內(nèi)隱語義信息的連續(xù)實值向量,即生成詞向量[1](也稱詞的分布式表示)。對于計算機(jī)視覺領(lǐng)域而言,其處理的數(shù)據(jù)為圖片格式,由于圖片在計算機(jī)中直接以數(shù)值類型的矩陣表示,原數(shù)據(jù)自身攜帶了豐富的信息,通過簡單的數(shù)據(jù)預(yù)處理即可直接作為模型的輸入。而NLP 任務(wù)所處理的對象是字符格式的文本數(shù)據(jù),機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型不能直接對文本字符串輸入進(jìn)行學(xué)習(xí)。因此如何將文本數(shù)據(jù)轉(zhuǎn)換成模型可以處理的實值向量格式,并將語料庫中蘊(yùn)含的豐富內(nèi)隱知識信息嵌入到生成的詞向量中,是詞嵌入方法所關(guān)注的重點(diǎn)和難點(diǎn)。

生成詞向量的方法有很多,例如,獨(dú)熱編碼(onehot encoding)能夠為詞匯表中的每個詞生成一個唯一的one-hot 向量作為詞的向量表示,該向量維度大小與詞匯表中的單詞數(shù)相等,詞匯表中的每個詞都對應(yīng)一個索引編號,每個詞所對應(yīng)的one-hot 向量只有在索引編號位置處的維度的值為1,其余維度的值均為0。雖然使用one-hot 向量作為詞的向量表示能夠解決數(shù)據(jù)的格式轉(zhuǎn)換問題,但是由于其0值過多而導(dǎo)致的稀疏性問題、詞向量維度過高導(dǎo)致的維度災(zāi)難問題以及語義鴻溝問題(任意兩個詞之間相互獨(dú)立,難以刻畫詞與詞之間的相似性)限制了NLP 模型整體的性能提升[2]。

表示學(xué)習(xí)(representation learning)是一種自動從大量原始數(shù)據(jù)中學(xué)習(xí)每個詞的特征表示(特征向量)的方法,其基于預(yù)定義的規(guī)則進(jìn)行模型性能的提升。這一過程涉及將學(xué)習(xí)到的特征表示儲存為模型的一部分,以便更有效地捕捉和表達(dá)詞匯的語義信息。這樣的表示學(xué)習(xí)方法旨在優(yōu)化模型對輸入數(shù)據(jù)的理解,使得模型能夠更精確地處理各種NLP 任務(wù)[1]。Hinton[2]提出了詞的分布式表示(distributed representation)這一概念,利用表示學(xué)習(xí)方法,將每個詞從離散的數(shù)值空間(即one-hot向量)映射到連續(xù)且稠密的高維特征空間,使用這些具有豐富特征信息的稠密向量作為詞的特征表示,即詞向量。Bengio等人[3]使用神經(jīng)網(wǎng)絡(luò)(neural network)搭建神經(jīng)概率語言模型(neural probabilistic language model)來學(xué)習(xí)詞的特征表示。

詞嵌入利用表示學(xué)習(xí)方法并結(jié)合語言模型(language model,LM)和預(yù)訓(xùn)練任務(wù),能夠?qū)⒄Z料庫中所蘊(yùn)含的豐富內(nèi)隱知識信息嵌入到低維稠密的詞向量中,進(jìn)而為每個字符格式的單詞生成一個數(shù)值格式的詞向量。使用這些經(jīng)過預(yù)訓(xùn)練生成的詞向量作為每個詞的特征表示,可以直接對輸入的文本序列進(jìn)行建模并作為下游任務(wù)模型的輸入來解決各種NLP 任務(wù)(如自然語言推理任務(wù)、情感分析任務(wù)、文本摘要任務(wù)、問答任務(wù)以及文檔分類任務(wù)等),不僅能夠提升模型的整體性能,還可以加速模型在訓(xùn)練階段的收斂速度[4-6]。

使用LM 在語料庫上進(jìn)行訓(xùn)練,學(xué)習(xí)詞與詞之間的語義關(guān)聯(lián),最終生成詞的特征表示,是目前詞嵌入方法的主流范式[1]。詞嵌入的第一個步驟是對語料庫進(jìn)行分詞處理構(gòu)建詞匯表,根據(jù)構(gòu)造的詞匯表可以對輸入的文本序列進(jìn)行分詞操作(Tokenization)并將每個單詞映射為詞向量。然而,在開放域的NLP任務(wù)中,大量未登錄詞(未在詞匯表中出現(xiàn)的詞)和多義詞(一個字或詞在不同語境下表達(dá)不同的含義)的出現(xiàn)限制了模型性能的進(jìn)一步提升。(1)為了解決開放域中的未登錄詞問題,針對英文這類符號語言的子詞(sub-word)分詞模型[7-8],在整詞(whole word)切分的基礎(chǔ)上,進(jìn)一步將整詞拆解成更細(xì)粒度的子詞。使用子詞拼接的方式對未登錄詞進(jìn)行重構(gòu),進(jìn)而解決未登錄詞問題。(2)為了解決多義詞問題,研究人員通過引入預(yù)訓(xùn)練語言模型(pre-trained language model,PLM)對輸入序列進(jìn)行建模,生成能夠根據(jù)輸入序列的上下文語境動態(tài)改變詞向量語義的特征表示[6,9]。其中PLM 是指經(jīng)過預(yù)訓(xùn)練的LM(參考2.4.5小節(jié))。預(yù)訓(xùn)練屬于遷移學(xué)習(xí)的范疇,即預(yù)先使用一些目標(biāo)函數(shù)對模型進(jìn)行初次訓(xùn)練,從而更好地完成模型參數(shù)的初始化。預(yù)訓(xùn)練階段使用的數(shù)據(jù)規(guī)模一般較大,因此模型能夠更好地學(xué)習(xí)到大規(guī)模數(shù)據(jù)中內(nèi)隱的通用知識。

詞嵌入方法已從基于詞頻的統(tǒng)計學(xué)習(xí)方法發(fā)展至如今由神經(jīng)網(wǎng)絡(luò)驅(qū)動的深度學(xué)習(xí)方法,神經(jīng)網(wǎng)絡(luò)的強(qiáng)大擬合能力使得LM 能夠充分地學(xué)習(xí)并存儲語料庫中豐富的內(nèi)隱知識,并生成高質(zhì)量的詞向量。詞嵌入作為NLP領(lǐng)域的基礎(chǔ)研究點(diǎn),目前已有很多研究工作從不同角度對詞嵌入方法進(jìn)行綜述。文獻(xiàn)[10-11]著重分析并羅列了經(jīng)典的詞嵌入模型。文獻(xiàn)[11]從生成詞向量時是否融入上下文信息的角度梳理了詞嵌入模型。文獻(xiàn)[12]介紹了基于預(yù)訓(xùn)練語言模型BERT(bidirectional encoder representations from transformers)[13]的詞嵌入模型。文獻(xiàn)[14]分析并羅列了詞嵌入方法發(fā)展歷程及各階段出現(xiàn)的模型,并對詞嵌入方法在自然語言處理下游任務(wù)上的應(yīng)用進(jìn)行了綜述。部分研究工作將詞嵌入的發(fā)展階段劃分為基于機(jī)器學(xué)習(xí)的詞頻表示向量階段、基于淺層神經(jīng)網(wǎng)絡(luò)的詞的分布式表示階段和基于雙向注意力模型的上下文詞向量階段。本文以2013 年提出的word2vec[4]和2017 年提出的Transformer[9]作為劃分依據(jù),從生成的詞向量是否能夠通過捕獲輸入文本的上下文特征來動態(tài)地改變其語義這一角度,將詞嵌入方法劃分為靜態(tài)詞嵌入方法和動態(tài)詞嵌入方法。靜態(tài)詞向量是指詞向量一旦訓(xùn)練完畢,其維度和數(shù)值不再改變,因此只能表達(dá)固定語義,并通過模型微調(diào)的方式進(jìn)行更新;而動態(tài)詞向量能夠通過PLM 捕獲輸入序列的上下文語境信息,進(jìn)而動態(tài)地改變自身數(shù)值,使其所表達(dá)的語義信息與輸入序列的語境相匹配。

文獻(xiàn)[15]與本文對詞向量的劃分觀點(diǎn)一致,并總結(jié)了用于生成靜態(tài)詞向量和動態(tài)詞向量的神經(jīng)網(wǎng)絡(luò)模型。本文從詞向量生成的全過程這一角度對詞嵌入方法進(jìn)行探討,對詞嵌入中的分詞方法、訓(xùn)練詞向量所使用LM 的演化進(jìn)行綜述,對詞嵌入方法中的靜態(tài)詞嵌入方法和動態(tài)詞嵌入方法展開討論,總結(jié)詞向量質(zhì)量的評估方法,分析詞嵌入方法的現(xiàn)狀并對其未來發(fā)展方向進(jìn)行展望。

1 詞嵌入方法在自然語言處理任務(wù)中的作用

詞嵌入方法通過學(xué)習(xí)語料庫中的內(nèi)隱知識,生成嵌入語義和語法等特征信息的連續(xù)稠密詞向量。在解決自然語言處理任務(wù)時,需要根據(jù)具體任務(wù)進(jìn)行模型結(jié)構(gòu)設(shè)計,但無論是何種模型,都只能接受數(shù)值格式的輸入數(shù)據(jù)。因此,解決自然語言處理任務(wù)的第一步就是使用詞嵌入方法生成詞向量,并通過詞向量對輸入的文本序列進(jìn)行建模,將文本序列中的每個詞映射到詞的嵌入空間,實現(xiàn)自然語言文本到數(shù)值向量的轉(zhuǎn)換。

當(dāng)前,處理NLP 任務(wù)主要有兩種范式:基于靜態(tài)詞嵌入的表示學(xué)習(xí)范式和基于動態(tài)詞嵌入的“預(yù)訓(xùn)練+微調(diào)”范式,如圖1所示。

圖1 詞嵌入方法在自然語言處理任務(wù)中的作用Fig.1 Role of word embedding methods in natural language processing tasks

在基于靜態(tài)詞嵌入的表示學(xué)習(xí)范式下,對輸入文本進(jìn)行分詞處理后,通過與詞匯表進(jìn)行映射,直接使用經(jīng)過預(yù)訓(xùn)練的靜態(tài)詞向量作為輸入序列的初始化特征表示輸入模型[16-17]。

對于“預(yù)訓(xùn)練+微調(diào)”范式,其在靜態(tài)詞嵌入的基礎(chǔ)上引入了PLM,將輸入序列進(jìn)行分詞處理后,直接輸入PLM來學(xué)習(xí)每個單詞的全局上下文語境信息,最終將PLM輸出的特征向量作為輸入序列的詞向量[18-19]。

2 詞嵌入方法

生成詞向量的流程如下:(1)基于分詞規(guī)則對語料庫中的文本進(jìn)行分詞處理,生成詞匯表;(2)參照詞匯表對語料庫中的自然語言文本進(jìn)行切分,將切分后的每個詞通過詞匯表映射成數(shù)值格式的索引(索引被稱作Token,該過程稱作Tokenization),最后將這些索引作為LM 的輸入,并根據(jù)目標(biāo)函數(shù)對LM進(jìn)行預(yù)訓(xùn)練;(3)使用PLM 的部分隱藏層參數(shù)[4](靜態(tài)詞向量)或輸出層輸出的特征向量[13](動態(tài)詞向量)作為詞向量。本章對詞嵌入方法中使用的分詞方法和語言模型進(jìn)行分析,并對靜態(tài)詞嵌入和動態(tài)詞嵌入方法展開探討。

2.1 分詞

分詞作為詞嵌入方法中的基礎(chǔ)任務(wù),其目的是根據(jù)一定的規(guī)則將語料庫中非結(jié)構(gòu)化的連續(xù)文本集合,分解為結(jié)構(gòu)化的以字或詞為最小單位的數(shù)據(jù)結(jié)構(gòu),以便于后續(xù)處理和分析,并根據(jù)拆分后的字詞創(chuàng)建詞匯表V,V=[{1:word1},{2:word2},…,{n:wordn}],其中n為詞匯表大小。對同一個語料庫使用不同的分詞規(guī)則會產(chǎn)生不同的詞匯表,在訓(xùn)練詞向量時,需要參照詞匯表對輸入的文本序列進(jìn)行切分。因此,分詞操作對詞向量的生成和模型的整體性能產(chǎn)生直接的影響。根據(jù)分詞粒度的不同,分詞可劃分為整詞切分和子詞切分。

2.1.1 整詞切分

整詞切分是指以整個詞或詞組為最小單元對文本序列進(jìn)行拆分。對于英文這類符號語言,單詞之間以空格為邊界,因此可以直接以空格為分隔標(biāo)記對語料庫進(jìn)行分詞。然而,對于中文這類象形文字語言,輸入文本的表現(xiàn)形式為連續(xù)的字符串,詞與詞之間沒有明顯的分隔符,且象形文字自身蘊(yùn)含豐富的語義信息,因此針對中文這類象形文字語言的分詞一直是分詞技術(shù)存在的挑戰(zhàn)[20]。

針對中文的分詞存在切分歧義和未登錄詞識別兩大挑戰(zhàn)[21]。切分歧義是指在切分中文字符序列時,在序列的不同位置切分會產(chǎn)生截然不同的語義。未登錄詞(out of vocabulary,OOV)是指沒有在詞匯表中預(yù)先定義的詞匯,如網(wǎng)絡(luò)詞匯、人名、機(jī)構(gòu)名稱等。中文分詞算法可分為基于詞匯表匹配的機(jī)械分詞方法[22]、基于機(jī)器學(xué)習(xí)的統(tǒng)計分詞方法[23]和基于深度學(xué)習(xí)的統(tǒng)計分詞方法[24-25]。

2.1.2 子詞切分

在開放域的自然語言處理任務(wù)中,大量OOV 的出現(xiàn)導(dǎo)致模型無法對這些未在詞匯表中記錄的詞匯進(jìn)行表示。在遇到OOV 時,一般將其映射為詞匯表中的特殊字符,如“|UNK|”。一種直接的解決方法是不斷地對詞匯表進(jìn)行擴(kuò)充,但是這種方式并不能夠從本質(zhì)上解決OOV 問題,且該方式也會造成模型的靈活性和魯棒性不足[26]。

對于符號語言來說,子詞是介于整詞和單個字符之間的一種粒度。為了解決OOV 問題,針對英文這類符號語言的子詞切分算法將整詞按照一定規(guī)則,繼續(xù)拆分為單個字母或連續(xù)的字母片段,在遇到未登錄詞時,通過詞匯表中所記錄的子詞進(jìn)行合并,來對OOV進(jìn)行重建[7,27]。

BPE(byte pair encoding)子詞切分算法[7]是對字節(jié)壓縮算法BPE(1994)[28]進(jìn)行的改進(jìn)。BPE[7]首先將單詞拆解成單個字母并使用貪心算法每次選擇語料庫中詞頻最高的字母對或子詞對(subwords-pair),并將其進(jìn)行合并,生成新的子詞,通過不斷的迭代,最終生成包含子詞的詞匯表。同時,BPE[7]也很好地平衡了詞典大小和解碼器的解碼效率。

與BPE[7]不同,WordPiece[27]通過最大化語言模型的詞共現(xiàn)概率來選取合適的字母進(jìn)行合并。ULM(universal language model)[8]通過基于Uni-Gram 語言模型的子詞拆分算法,使其生成的子詞帶有概率信息,從而能夠更好地對OOV進(jìn)行重建。

另一方面,子詞還帶有整詞所不具備的一些信息,如詞根信息和詞性信息。Kudo[8]也詳細(xì)分析了子詞切分的優(yōu)越性。在NLP 領(lǐng)域中,大多數(shù)高性能的模型在處理數(shù)據(jù)時均使用子詞切分來獲取詞匯表,如ELMo(embeddings from language models)[6]使用Character CNN[29]進(jìn)行分詞,UniLM(unified language model)[30]、SpanBERT[31]、BERT[13]和StructBERT[32]使用WordPiece[27]進(jìn)行分詞,ALBERT(a lite BERT)[33]和XLNet[34]使用SentencePiece[35]進(jìn)行分詞。GPT(generative pre-trained transformer)[36]、GPT-2[37]、XLM(cross-lingual language model)[38]、RoBERTa(robustly optimized BERT approach)[39]以及MASS(masked sequence to sequence pre-training for language generation)[40]使用BPE[7]進(jìn)行分詞。

表1為部分文本預(yù)處理工具,這些預(yù)處理工具提供了文本的分詞、命名實體標(biāo)注、詞性標(biāo)注、近義詞匹配、關(guān)鍵詞提取以及文本分類等功能。

表1 文本預(yù)處理工具Table 1 Text preprocessing tools

2.2 語言模型

語言模型(LM)是一個函數(shù)或?qū)W習(xí)這種函數(shù)的算法,它通過根據(jù)先前詞序列對出現(xiàn)概率最大的下一個詞進(jìn)行預(yù)測,用于捕獲自然語言序列中詞匯分布的統(tǒng)計特征[41]。語言模型作為自然語言處理領(lǐng)域的基石,通過對文本序列進(jìn)行建模,學(xué)習(xí)語料庫中詞與詞之間的共現(xiàn)關(guān)系,并生成詞的分布式表示[4-5]。詞向量是訓(xùn)練語言模型生成的附屬產(chǎn)物,因此性能良好的LM 對生成詞向量的質(zhì)量起著決定性作用。語言模型可分為基于詞頻統(tǒng)計信息的概率語言模型、基于神經(jīng)網(wǎng)絡(luò)搭建的神經(jīng)概率語言模型以及能夠建模雙向上下文信息且模塊深層堆疊的深度上下文語言模型。

2.2.1 概率語言模型

概率語言模型是用于人機(jī)交互的自然語言系統(tǒng)的重要組成部分,其建模的目標(biāo)是在一種語言的語料庫中學(xué)習(xí)單詞序列的聯(lián)合概率函數(shù)[3],或者說是預(yù)測輸入序列中的每個詞匯在當(dāng)前上下文中出現(xiàn)的條件概率[42]。自20 世紀(jì)80 年代以來,概率語言模型建模的主流方法大多為基于非參數(shù)學(xué)習(xí)的N-gram 模型[43-44],使用one-hot 向量作為每個詞的向量表示,并基于觀測序列的部分上下文預(yù)測下一位置出現(xiàn)概率最大的詞[41]。

以N-gram 語言模型為例,其具體處理步驟如式(1)和式(2)所示。首先對輸入的文本序列S進(jìn)行建模,S=[w1,w2,…,wl],wt表示輸入序列中的第t個詞,l表示輸入序列長度。在給定上下文St-N+1,t-1的條件下對wt進(jìn)行預(yù)測。N是一個常量,其含義為假設(shè)當(dāng)前詞只與其前N個相鄰的詞有關(guān)聯(lián)。需要優(yōu)化的目標(biāo)函數(shù)為P(wt|St-N+1,t-1),C(wiwj)表示wi和wj在語料庫中共現(xiàn)的次數(shù),|V|為詞匯表的大小。

2.2.2 神經(jīng)概率語言模型

神經(jīng)概率語言模型使用神經(jīng)網(wǎng)絡(luò)的中間隱藏層參數(shù)作為詞向量的權(quán)重[3]。神經(jīng)概率語言模型根據(jù)搭建語言模型所使用的神經(jīng)網(wǎng)絡(luò)可分為:前饋神經(jīng)網(wǎng)絡(luò)語言模型(forward feedback neural network language model)[45-47]和循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型(recurrent neural network language model)[6,48-49]。

神經(jīng)概率語言模型的建模目標(biāo)為P(wt|St-N+1,t-1)=f(t,E(wt-1),E(wt-2),…,E(wt-N+1),θ),其中f表示神經(jīng)網(wǎng)絡(luò)模型,θ為神經(jīng)網(wǎng)絡(luò)中可學(xué)習(xí)的參數(shù),N表示在預(yù)測第t位置的詞wt時,需要考慮t位置之前的N個詞,即N-gram。E表示f中對應(yīng)的詞嵌入矩陣,E∈R|V|×d,d表示詞向量維度,d<<|V|。wi為輸入序列中第i個位置詞的one-hot 向量,。模型訓(xùn)練完畢后,詞嵌入矩陣E中的每一行即為詞匯表V中對應(yīng)位置的詞向量。

2.2.3 深度上下文語言模型

使用語言模型對語料庫進(jìn)行建模能夠使模型通過擬合語料庫的數(shù)據(jù)分布,來學(xué)習(xí)語料庫中蘊(yùn)含的知識信息[4-6,9,13]。然而,隨著語料庫規(guī)模的增大,使用結(jié)構(gòu)簡單的神經(jīng)網(wǎng)絡(luò)作為特征提取器的神經(jīng)概率語言模型,并不能夠充分地擬合大規(guī)模語料庫中的數(shù)據(jù)分布,從而導(dǎo)致模型欠擬合問題的出現(xiàn),限制了詞向量質(zhì)量的進(jìn)一步提升。因此,語言模型需要使用特征抽取能力更加強(qiáng)大的特征提取器來適應(yīng)蘊(yùn)含更加豐富的知識信息的大規(guī)模語料庫。

使用單向循環(huán)神經(jīng)網(wǎng)絡(luò),如LSTM(long shortterm memory network)[50],搭建語言模型來訓(xùn)練詞向量,并不能夠同時捕獲中心詞的雙向上下文信息,因此生成的詞向量缺乏建模時的雙向上下文信息。另一方面,捕獲輸入序列的雙向上下文信息能夠進(jìn)一步提升模型的性能[6],如在機(jī)器閱讀理解任務(wù)和完形填空任務(wù)中,只考慮單向的上下文可能導(dǎo)致模型預(yù)測出錯誤的結(jié)果。ELMo[6]分別使用兩個前向和后向的LSTM[50]作為特征提取器對輸入序列進(jìn)行自回歸式的特征提取,并通過將前向特征和后向特征拼接的方式實現(xiàn)雙向上下文特征的捕獲。然而這種方式并不能夠?qū)崿F(xiàn)同時對雙向上下文特征進(jìn)行學(xué)習(xí),且效果與完全由注意力機(jī)制驅(qū)動的Transformer 網(wǎng)絡(luò)結(jié)構(gòu)具有一定差距[13]。

Transformer[9]是由多層結(jié)構(gòu)更為復(fù)雜的編碼器模塊(Transformer-encoder module,TEM)和解碼器模塊(Transformer-decoder module,TDM)堆疊搭建的“編碼器-解碼器”網(wǎng)絡(luò)。相較于傳統(tǒng)的RNN(recurrent neural network)網(wǎng)絡(luò):(1)Transformer[9]引入的自注意力機(jī)制(self-attention mechanism,SAM)使其能夠同時捕捉序列中不同位置之間的雙向上下文關(guān)系;(2)SAM使其能夠并行處理序列中的所有位置,而不是像RNN一樣必須按照時間步序列進(jìn)行單向的順序處理(step-by-step)。SAM 作為Transformer[9]模塊的核心組成部分:①其完全由矩陣乘法運(yùn)算驅(qū)動的計算模式實現(xiàn)了模型的并行計算,大大提升了Transformer[20]網(wǎng)絡(luò)的訓(xùn)練速度;②在SAM 中,輸入序列中的每個單詞可以交互并影響所有其他單詞,而不僅僅是固定數(shù)量的鄰居,這使得Transformer[9]模塊可以更好地捕捉長距離依賴關(guān)系;③SAM 中的多頭機(jī)制(multi-head)允許模型將單詞的表示分為多個不同的表示子空間,以更好地捕獲輸入序列中的不同信息,這一機(jī)制大大提高了Transformer[9]模塊的性能表現(xiàn)和泛化能力;④Transformer[9]模塊中還使用了殘差連接和層歸一化等技術(shù),使得模塊可以深層堆疊而不會出現(xiàn)梯度消失和性能衰退問題。Transformer[9]的提出可以被視為AI(artificial intelligence)領(lǐng)域的一個里程碑,直接驅(qū)動了AI大模型時代的到來。

TEM由多頭自注意力層、歸一化層、線性連接層,并結(jié)合殘差連接搭建而成,TDM 在TEM 的基礎(chǔ)上添加了交叉自注意力層,用于與TEM端進(jìn)行注意力分布的計算?;赥EM[13,31-32,39,51-53]或TDM[36-37]或同時使用TEM 和TDM 深層堆疊搭建的語言模型[30,34,38,40,54-55]也被稱為深度上下文語言模型。Transformer[9]模塊的雙向上下文建模能力、可深層堆疊以及高效的并行計算能力,使得深度上下文語言模型能夠結(jié)合自監(jiān)督學(xué)習(xí),高效地在大規(guī)模語料庫上進(jìn)行預(yù)訓(xùn)練,進(jìn)而學(xué)習(xí)并存儲大規(guī)模語料庫中蘊(yùn)含的通用知識。

2.3 靜態(tài)詞嵌入

語言模型在訓(xùn)練完畢后,其內(nèi)部的中間隱藏層參數(shù)被單獨(dú)取出并存儲,作為詞向量映射表。隱藏層張量的維度為RV×D,其中V與詞匯表中的詞數(shù)相等,D為詞向量的維度。詞向量映射表中的每一行作為詞匯表中對應(yīng)位置詞的詞向量。由于模型參數(shù)在訓(xùn)練完成后不再發(fā)生改變,詞向量的維度和其內(nèi)部蘊(yùn)含的內(nèi)隱信息也隨之固定,因此通過上述方式生成的詞向量稱為靜態(tài)詞向量。

本文將靜態(tài)詞向量的生成方法歸納為四類方法:(1)基于矩陣分解的靜態(tài)詞嵌入;(2)基于上下文窗口的靜態(tài)詞嵌入;(3)基于全局矩陣分解和局部上下文窗口靜態(tài)詞嵌入;(4)基于神經(jīng)翻譯模型的靜態(tài)詞嵌入。

2.3.1 基于矩陣分解的靜態(tài)詞嵌入

使用獨(dú)熱向量(one-hot)、詞袋模型((bag-ofwords)和共現(xiàn)矩陣(co-occurrence matrix)作為詞的向量表示會導(dǎo)致稀疏性問題(即向量中零值元素過多,模型難以捕獲有效信息)、維度災(zāi)難(即向量維度隨詞匯表大小呈線性增長)和語義鴻溝(即無法衡量詞與詞之間的相似程度)問題的出現(xiàn)?;诰仃嚪纸獾撵o態(tài)詞嵌入通過使用語料庫中詞的出現(xiàn)頻數(shù)作為信息,創(chuàng)建“詞-詞”或“詞-文檔”共現(xiàn)矩陣,使用矩陣分解算法,如奇異值分解(singular value decomposition,SVD),將共現(xiàn)矩陣分解為特征矩陣和正交矩陣,并對正交矩陣使用歸一化操作生成每個詞的低維稠密詞向量。

HAL(hyperspace analogue to language)[56]構(gòu) 建“詞-詞”共現(xiàn)矩陣C,C∈RV×2V,其中Cij表示在句子中第j個詞和第i個詞之間的距離,V表示詞匯表大小。通過對矩陣C中的每行選擇d個方差最大的值作為每個詞的特征進(jìn)行降維來得到每個詞的詞向量。

LSA(latent semantic analysis)[57]提出含義相近的詞在文章中總是共同出現(xiàn)這一觀點(diǎn),并通過對整個文檔集合進(jìn)行統(tǒng)計分析,使用詞在文檔中出現(xiàn)的頻數(shù)作為權(quán)值構(gòu)建“詞-文檔”共現(xiàn)矩陣W,其中行向量表示詞,列向量表示文檔,Wij表示詞i在文檔j中出現(xiàn)的次數(shù),之后對共現(xiàn)矩陣W的行向量進(jìn)行歸一化操作并執(zhí)行奇異值分解實現(xiàn)降維來挖掘詞的潛在語義信息,最終產(chǎn)生低維稠密且包含詞的語義信息的詞向量。

為了減少類似于“a”“an”“the”或“and”等這類詞匯,雖然高頻出現(xiàn)但并不會影響句子整體語義的影響,COALS(correlated occurrence analogue to lexical semantic)[58]將HAL[57]的共現(xiàn)矩陣進(jìn)行歸一化操作,并將矩陣中所有負(fù)相關(guān)數(shù)據(jù)置零來克服負(fù)相關(guān)的不可靠性,從而得到新的滿足高維稀疏性且可使用SVD快速分解“詞-詞”共現(xiàn)矩陣。

2.3.2 基于上下文窗口的靜態(tài)詞嵌入

從直觀上講,和中心詞距離較近的詞與中心詞之間的相關(guān)性更強(qiáng),能夠提供更多有用信息。為了學(xué)習(xí)中心詞的強(qiáng)相關(guān)特征,基于上下文窗口的方法限制模型在學(xué)習(xí)中心詞的上下文分布時,只考慮當(dāng)前上下文窗口內(nèi)的k個詞對中心詞的影響。

win(wi)=[wi-k/2,wi-k/2+1,…,wi+k/2],其中S表示原始輸入序列,wi為序列中的第i個詞,win(wi)表示中心詞wi的局部上下文(滑動窗口),k表示窗口的長度。

文獻(xiàn)[4]提出了CBOW(continuous bag-of-words)模型和Skip-Gram 模型用于訓(xùn)練詞向量。CBOW 模型根據(jù)中心詞的上下文來預(yù)測中心詞,即P(wi|win(wi))。與之相反,Skip-Gram 模型則根據(jù)中心詞來預(yù)測中心詞的上下文,即P(win(wi)|wi)。

Mnih 和Kavukcuoglu[59]在CBOW 和Skip-Gram的基礎(chǔ)上進(jìn)行改進(jìn)提出了vLBL 模型。與CBOW 不同的是,vLBL 只預(yù)測窗口中的一個詞來提升模型推理速度,同時添加注意力權(quán)重和噪聲對比評估NCE(noise contrastive estimation)來提升模型學(xué)習(xí)詞的上下文分布的能力。

2.3.3 基于全局矩陣分解和局部上下文窗口的靜態(tài)詞嵌入

基于矩陣分解的模型雖然能夠通過構(gòu)建“詞-詞”共現(xiàn)矩陣或“詞-文檔”共現(xiàn)矩陣的這種方式,充分利用每個詞在語料庫中的出現(xiàn)頻數(shù)來捕獲詞的全局信息,然而詞的頻數(shù)并不能夠充分地反映詞與詞之間的相關(guān)性,即詞的局部上下文信息。基于上下文窗口的模型雖然能夠通過上下文窗口只關(guān)注與中心詞最相關(guān)的上下文,從而捕獲中心詞的局部上下文信息,卻丟失了詞的全局性信息。

詞的全局向量表示(global vectors for word representation,GloVe)[5]是一種新的全局對數(shù)雙線性回歸模型,通過同時引入全局矩陣分解和局部上下文窗口方法,實現(xiàn)對詞的全局詞頻信息和局部上下文信息的捕獲。GloVe[5]的建模過程為:基于整個語料庫構(gòu)建全局詞頻共現(xiàn)矩陣X,X∈RV×V,V為詞匯表大小。Xij表示在詞wi的局部上下文窗口中,詞wj出現(xiàn)的次數(shù)。GloVe[5]使用建模詞wi、wj、wk之間的關(guān)系,其中Pij表示詞wj出現(xiàn)在詞wi的上下文窗口內(nèi)的概率。

模型訓(xùn)練時的損失函數(shù)如下:

其中,vi表示詞wi的詞向量,f(x)表示權(quán)重函數(shù),xmax和α為超參數(shù),bi表示偏置向量。Xij表示在詞wi的局部上下文窗口中,詞wj出現(xiàn)的次數(shù)。訓(xùn)練目標(biāo)為最小化損失函數(shù)Loss,即根據(jù)全局詞頻信息來指導(dǎo)函數(shù)優(yōu)化,使具有較強(qiáng)關(guān)聯(lián)的詞之間距離更近,弱關(guān)聯(lián)詞之間距離更遠(yuǎn)。

2.3.4 基于神經(jīng)翻譯模型的靜態(tài)詞嵌入

靜態(tài)詞向量是在特定的NLP 任務(wù)上訓(xùn)練語言模型而生成的附屬產(chǎn)物。NLP 任務(wù)種類繁多,在不同任務(wù)上訓(xùn)練出的詞向量的質(zhì)量也有所差異。

機(jī)器翻譯任務(wù)作為NLP 領(lǐng)域一個具有挑戰(zhàn)性的任務(wù),對模型的特征學(xué)習(xí)能力要求很高,因此通過機(jī)器翻譯任務(wù)訓(xùn)練出來的模型具有較強(qiáng)的特征學(xué)習(xí)能力,生成的詞向量質(zhì)量相對更高[60]。機(jī)器翻譯任務(wù)的主流模型為“編碼器-解碼器”框架,首先使用編碼器將一個語種的文本序列進(jìn)行建模并學(xué)習(xí)其特征表示,之后使用解碼器對特征表示進(jìn)行解碼生成其他語種的文本序列[9,27,61]。

神經(jīng)機(jī)器翻譯模型的出現(xiàn)使得機(jī)器翻譯任務(wù)得到了進(jìn)一步的發(fā)展[61]。Hill 等人[62]通過實驗證明,基于神經(jīng)翻譯模型編碼器預(yù)訓(xùn)練獲取的詞向量,比通過語言模型編碼器獲取的詞向量在語義相似性任務(wù)上的效果更好。另一方面,注意力機(jī)制的引入使模型能夠為中心詞的上下文分配不同權(quán)重,使中心詞能夠更多地關(guān)注與自身具有強(qiáng)相關(guān)的上下文,減小弱相關(guān)詞對其的負(fù)面影響。

CoVe(contextualized word vectors)[63]基于神經(jīng)機(jī)器翻譯模型并結(jié)合注意力機(jī)制,在機(jī)器翻譯任務(wù)上進(jìn)行語言模型的訓(xùn)練來生成詞向量。CoVe[63]的建模過程如下,首先使用預(yù)訓(xùn)練完成的GloVe[6]詞向量將原始輸入序列S={w1,w2,…,wn}中的每個詞映射到對應(yīng)的詞嵌入空間,得到S′=GloVe(S)。之后將S′輸入神經(jīng)翻譯模型獲得S′ 的特征表示=CoVe(S′)=MT-LSTM(S′),其中MT-LSTM 是 以雙向LSTM 作為特征提取器搭建的“編碼器-解碼器”框架,并在解碼器端添加注意力機(jī)制的神經(jīng)機(jī)器翻譯模型,最后與GloVe[5]向量進(jìn)行拼接得到具有上下文特征信息和全局詞頻信息且?guī)в幸欢ㄕZ法和語義信息的詞向量=[GloVe(wi);CoVe(wi)]。

訓(xùn)練詞向量是一個耗時耗力的工作,為了更好地推進(jìn)NLP 領(lǐng)域的發(fā)展,不少研究人員開源了預(yù)訓(xùn)練完成的詞向量。Qiu等人[64]開源了在數(shù)十種中文語料庫(百度百科、維基百科、人民日報、知乎、微博、文學(xué)、金融等)上訓(xùn)練生成的中文詞向量(https://github.com/Embedding/Chinese-Word-Vectors)。https://github.com/Embedding 開源了使用多種模型預(yù)訓(xùn)練生成的詞向量。FastText[65]、Word2Vec[4]、GloVe[5]也開源了通過預(yù)訓(xùn)練生成的詞向量(FastText 詞向量下載地址:https://github.com/facebookresearch/fastText/blob/master/docs/crawl-vectors.md;Word2Vec 詞向量下載地址:https://code.google.com/p/word-2vec/;GloVe 詞向量下載地址:https://nlp.stanford.edu/projects/glove/)。

2.4 動態(tài)詞嵌入

靜態(tài)詞嵌入通過對語料庫中的全局詞頻信息和窗口內(nèi)的局部上下文信息進(jìn)行建模,并結(jié)合分層Softmax(hierarchical Softmax)和負(fù)采樣(negative sampling)策略[66]等優(yōu)化方法,能夠簡單高效地訓(xùn)練出低維稠密且蘊(yùn)含語法、語義信息的詞向量。然而,靜態(tài)詞向量訓(xùn)練完畢后其表示的含義也隨之固定,因此靜態(tài)詞嵌入不能夠處理多義詞問題[6]。

基于預(yù)訓(xùn)練語言模型(pre-trained language model,PLM)生成的動態(tài)詞嵌入方法,能夠生成根據(jù)輸入序列的全局語境信息動態(tài)地改變詞向量參數(shù)分布的動態(tài)詞向量,解決了多義詞問題。本節(jié)對動態(tài)詞向量的生成和基于深度上下文語言模型的動態(tài)詞嵌入模型進(jìn)行介紹,并對進(jìn)一步提升動態(tài)詞向量質(zhì)量的一系列研究進(jìn)行分析。

2.4.1 動態(tài)詞向量的生成

與靜態(tài)詞向量的生成方式相比,動態(tài)詞向量是基于PLM 生成的。由于PLM 已經(jīng)在大規(guī)模語料庫中完成了預(yù)訓(xùn)練過程,能夠捕獲輸入序列的整體語境信息并將其嵌入輸出層輸出的特征向量之中[6,13]。

動態(tài)詞向量的生成經(jīng)過兩個步驟:(1)對輸入序列中的每個詞,使用PLM 中的詞嵌入層對其進(jìn)行建模,將其映射到連續(xù)的向量空間;(2)使用PLM 對經(jīng)過詞嵌入層處理的輸入序列進(jìn)行建模并學(xué)習(xí)其全局上下文特征,并在PLM 輸出層生成輸入序列中每個詞的動態(tài)詞向量。經(jīng)過PLM 處理后輸出的詞向量被動態(tài)地嵌入了輸入序列的整體語義信息,能夠根據(jù)輸入序列動態(tài)地改變其語義,解決了靜態(tài)詞向量存在的一詞多義問題。

動態(tài)詞向量的生成過程如圖2 所示。其中S表示原始輸入序列,S=[w1,w2,…,wl-1,wl],l表示輸入序列長度,V表示輸入序列S經(jīng)過詞嵌入層映射,生V=E(S),V=[v1,v2,…,vl-1,vl],V∈Rl×d,d表示詞向量維度,E表示詞嵌入層,H表示經(jīng)過PLM 處理后,輸出層輸出的動態(tài)詞向量。表示動態(tài)詞向量的維度,PLM表示預(yù)訓(xùn)練語言模型。

圖2 動態(tài)詞向量的生成Fig.2 Generation of dynamic word vectors

ELMo[6]作為較早提出的用于生成動態(tài)詞向量的PLM,使雙向LSTM作為基座來建模輸入序列的雙向上下文信息。然而,雙向LSTM 本質(zhì)上還是兩個獨(dú)立的單向LSTM,通過將兩個方向的特征向量進(jìn)行拼接這種方式,并未實現(xiàn)真正意義上的雙向上下文信息同時建模。另一方面,RNN 的串行推理模式限制了模型的計算速度,這導(dǎo)致此類模型難以高效地在大規(guī)模數(shù)據(jù)中進(jìn)行預(yù)訓(xùn)練。

基于Transformer 模塊[9]搭建的深度上下文語言模型很好地解決了基于RNN搭建的語言模型所存在的上述問題。Transformer 模塊[9]內(nèi)部的SAM 賦予了模型雙向上下文建模和并行計算能力,確保了深度上下文語言模型在大規(guī)模語料庫中的高效訓(xùn)練;殘差連接和歸一化操作使得模塊在多層堆疊時模型的整體不會出現(xiàn)衰退,令深度上下文語言模型能通過深層堆疊來擁有足夠多的參數(shù),進(jìn)而存儲足夠多的知識信息,緩解了RNN 模型在大規(guī)模語料庫下存在的欠擬合問題。

2.4.2 自編碼語言模型和自回歸語言模型

自編碼(auto-encoder,AE)和自回歸(auto-regressive,AR)是兩種使用最為廣泛的預(yù)訓(xùn)練方式,它們能夠使模型在大規(guī)模無標(biāo)記語料庫上進(jìn)行自監(jiān)督式的訓(xùn)練。深度上下文語言模型可以根據(jù)所使用的預(yù)訓(xùn)練方式劃分為:自編碼語言模型(auto-encoder language model,AELM)和自回歸語言模型(auto-regressive language model,ARLM)[34]。

(1)自編碼語言模型:自編碼訓(xùn)練方式是指將原始的輸入序列按照一定規(guī)則進(jìn)行破壞,如使用“|Mask|”標(biāo)記符(使用“|Mask|”標(biāo)記符替換的Token叫作被掩碼詞,Mask被稱為掩碼。使用“|Mask|”標(biāo)記符替換輸入序列中某一位置的Token 這一過程被稱為Mask操作)替換部分Token(在自然語言處理領(lǐng)域中,無論是整詞切分還是子詞切分,模型的輸入序列中的每個單元都被稱為Token)或刪除部分Tokens[51],而AELM 的訓(xùn)練目標(biāo)就是將這些被破壞的序列進(jìn)行重建還原[13]。這樣就可以將原序列作為標(biāo)簽,實現(xiàn)語言模型在無標(biāo)簽數(shù)據(jù)上進(jìn)行自監(jiān)督式的訓(xùn)練。但AELM 可能會出現(xiàn)模型在預(yù)訓(xùn)練階段和微調(diào)階段的訓(xùn)練目標(biāo)不一致問題[12-13,39],從而導(dǎo)致誤差的產(chǎn)生[55]。如在預(yù)訓(xùn)練階段引入的“|Mask|”標(biāo)記符并不會出現(xiàn)在下游任務(wù)的微調(diào)階段。

大多數(shù)AELM 使用TEM[9]模塊堆疊作為語言模型的主體框架[13,31-32,34,39],并結(jié)合AE 的訓(xùn)練目標(biāo),使深度上下文語言模型能夠在大規(guī)模無標(biāo)簽語料庫上高效地進(jìn)行預(yù)訓(xùn)練,提升深度上下文語言模型的自然語言理解(natural language understanding,NLU)能力,使其能夠更好地處理情感分類、抽取式問答、自然語言推理、文本語義相似度檢驗、機(jī)器閱讀理解等一系列NLU任務(wù)。

(2)自回歸語言模型:AR 是統(tǒng)計學(xué)習(xí)上一種用于處理時間序列的方法,即根據(jù)歷史上文內(nèi)容預(yù)測下一時間步可能出現(xiàn)的單詞。自回歸語言模型是按照step-by-step 方式串行推進(jìn),因此是自左向右或自右向左的單向語言模型。

與基于TEM[9]的AELM 相比,ARLM 的最大優(yōu)勢在于,其step-by-step 的推理方式能夠直接體現(xiàn)出文本之間的位置信息,使得ARLM 能夠更加自然地適配自然語言生成式任務(wù),如生成式文本摘要任務(wù)、生成式問答任務(wù)、機(jī)器翻譯任務(wù)等。

ARLM 大多基于單向的TDM[9]進(jìn)行搭建[36-37],或使用雙向TEM[9]和單向TDM[9]搭建“編碼器-解碼器”框架,在編碼器端建模輸入序列的上下文特征生成隱向量,并根據(jù)隱向量在解碼器端使用自回歸的方式重建目標(biāo)序列[38,40,54-55]。

2.4.3 對模型的參數(shù)體量和預(yù)訓(xùn)練語料庫規(guī)模的研究

自從預(yù)訓(xùn)練語言模型BERT[13]利用大規(guī)模的預(yù)訓(xùn)練語料庫、大體量的模型參數(shù)以及更多的訓(xùn)練步數(shù),在一系列自然語言任務(wù)上實現(xiàn)性能的顯著提升以來,不少研究人員圍繞模型的參數(shù)體量和預(yù)訓(xùn)練語料庫的規(guī)模展開了進(jìn)一步的探索。

Liu 等人提出RoBERTa[39]深度上下文語言模型證明了這一猜想,RoBERTa[39]在BERT[13]使用的訓(xùn)練數(shù)據(jù)集BookCorpus[67](16 GB)的基礎(chǔ)上,添加了更大的訓(xùn)練語料庫CC-NEWS[68](預(yù)處理后76 GB)、Open-WebText[69](38 GB)和STORIES[68](31 GB),使用了更大的模型訓(xùn)練步數(shù)(500 000),以及更大的BatchSize(8 000 個序列),在多個NLP 任務(wù)上使模型性能得到了進(jìn)一步的提升。You 等人[70]使用32 000 大小的BatchSize 進(jìn)行BERT 模型的訓(xùn)練,探究了BatchSize對模型性能的影響。Megatron-LM[71]使用72 層的Transformer 模塊[9]進(jìn)行堆疊,模型參數(shù)量為8.3 億。Turing-NLG[72]使用78 層的Transformer 模塊[9]進(jìn)行堆疊,模型參數(shù)量達(dá)到了17億。

Qiu 等人[73]認(rèn)為NLP 模型的性能可以通過增加模型的參數(shù)量和在更大規(guī)模的語料庫下訓(xùn)練得到進(jìn)一步提升。Baevski 等人[74]也證明了增加訓(xùn)練數(shù)據(jù)大小能夠提升下游任務(wù)的性能。當(dāng)前,千億參數(shù)體量的ChatGPT、GPT4等大模型的提出,也進(jìn)一步證實了當(dāng)模型體量和訓(xùn)練數(shù)據(jù)達(dá)到一定規(guī)模時,會出現(xiàn)知識的涌現(xiàn)現(xiàn)象。

2.4.4 對掩碼策略的研究

掩碼學(xué)習(xí)策略的提出[13]使模型能夠在大規(guī)模的無標(biāo)簽語料庫上進(jìn)行自監(jiān)督式的訓(xùn)練,充分地學(xué)習(xí)語料庫中蘊(yùn)含的通用知識。掩碼學(xué)習(xí)受到完形填空任務(wù)(Cloze Task)[75]的啟發(fā),以BERT[13]為例,掩碼學(xué)習(xí)的具體做法為在輸入句子中隨機(jī)選擇15%的Tokens作為掩碼候選詞集合C,在C中80%的Tokens用“|Mask|”標(biāo)記符替換,10%的Tokens 保持不變,剩余10%的Tokens用隨機(jī)詞替換,即:

其中,S表示分詞后的原始輸入序列,l表示序列長度,掩碼學(xué)習(xí)的目標(biāo)就是根據(jù)對S進(jìn)行重建還原。其中“|CLS|”和“|SEP|”標(biāo)記符分別表示輸入序列的起始和終止標(biāo)記,語言模型的任務(wù)為學(xué)習(xí)S的上下文表征并預(yù)測被“|Mask|”標(biāo)記符所替換的原始Tokens?!皘Mask|”標(biāo)記符的引入使得大量的非結(jié)構(gòu)化無標(biāo)簽文本數(shù)據(jù)被充分地利用起來。

由于語言模型在進(jìn)行預(yù)測時不能捕獲掩碼詞之間的相關(guān)關(guān)系,即每個“|Mask|”標(biāo)記符之間是相互獨(dú)立的。另一方面,“|Mask|”標(biāo)記符的引入會導(dǎo)致預(yù)訓(xùn)練和微調(diào)階段的不一致,即“|Mask|”標(biāo)記符只有在預(yù)訓(xùn)練階段才會被引入,進(jìn)而產(chǎn)生了人為誤差。

為解決上述問題,XLNet[34]提出了排序語言模型(permutation language model)預(yù)訓(xùn)練任務(wù),即在不引入“|Mask|”標(biāo)記符的情況下,根據(jù)原始輸入序列的下標(biāo)S,生成length(S)! 個全排列列表,例如S=[1,2,3,4,5],List=Perm(S)=([3,5,4,1,2],[1,2,5,3,4],…),其中Perm(?)為排序函數(shù),之后從List里選取部分列表并生成對應(yīng)的自注意力矩陣來控制上下文的關(guān)注范圍。當(dāng)Listk=[1,5,4,2,3],預(yù)測下標(biāo)i=3,即id等于4 位置的Token 時,該位置的Token 不僅注意到了id=1 的Token還注意到了id=5的Token,這樣不僅捕獲了每個詞的上下文信息,且沒有引入“|Mask|”標(biāo)記符,同時模型是以自回歸的方式進(jìn)行推演,因此模型還具備很好的文本生成能力。同時,為解決BERT[13]不能很好地處理長序列問題(即輸入序列長度超過512個Tokens 時導(dǎo)致時間和空間復(fù)雜度過大和性能衰退),XLNet[34]使用Transformer-XL[76]模型進(jìn)行搭建,并提出了相對位置編碼。

BERT[13]提出的掩碼學(xué)習(xí)使得每個輸入序列在整個模型訓(xùn)練過程中只對應(yīng)唯一的掩碼列表,因此不能很好地捕獲句子的多樣性信息。RoBERTa[39]提出了動態(tài)掩碼策略,對每個輸入序列按照一定概率生成多個不同的掩碼列表,在模型預(yù)訓(xùn)練過程中,每個輸入序列在每輪迭代都會從掩碼列表候選集中隨機(jī)采樣,因此在整個模型訓(xùn)練過程中,每個序列使用相同掩碼列表的次數(shù)會大大降低。

由于深度上下文語言模型在分詞時均在子詞粒度進(jìn)行切分,子詞分詞雖然解決了OOV問題,但輸入序列中存在大量的子詞,導(dǎo)致在執(zhí)行掩碼預(yù)測任務(wù)時模型難以充分地學(xué)習(xí)單詞或詞組的整體語義。為此,ERNIE(百度)[51]提出了三種掩碼策略來緩解子詞切分所產(chǎn)生的不完整語義問題:(1)基掩碼策略(basic-level masking)[39],即原始的子詞掩碼;(2)詞段掩碼策略(phrase-level masking),使用詞段分割工具識別句子中的詞段(例如詞組和短語);(3)實體掩碼策略(entity-level masking),由于句子中的命名實體往往包含著句子的重要信息,將句子中的實體進(jìn)行掩碼處理。ERNIE[51]通過三種掩碼策略使得模型生成的詞向量能夠捕獲更加豐富的語義信息。

MacBERT[77]提出了Mac(mask language model as correction)掩碼策略,使用整詞掩碼并結(jié)合N-gram機(jī)制,對多個整詞使用“|Mask|”標(biāo)記符替換。由于“|Mask|”標(biāo)記符的引入會導(dǎo)致人為誤差的產(chǎn)生,MacBERT[77]使用Synonyms 工具包[45]將“|Mask|”標(biāo)記符位置的詞替換為相似詞來緩解人為誤差對模型性能的影響。

SpanBERT[31]使用范圍掩碼(span masking)策略,每次使用一個“|Mask|”標(biāo)記符替換多個相鄰的Tokens,并對掩碼范圍內(nèi)的所有“|Mask|”標(biāo)記符進(jìn)行預(yù)測來捕獲整詞和詞組的語義。

UniLM[30]將掩碼預(yù)測任務(wù)擴(kuò)展至多語種場景,分別使用TEM[9]搭建單向語言模型、雙向語言模型以及Seq-to-Seq 語言模型執(zhí)行掩碼詞預(yù)測任務(wù),以學(xué)習(xí)不同語種之間的語義關(guān)聯(lián)。

2.4.5 對預(yù)訓(xùn)練任務(wù)改進(jìn)的研究

預(yù)訓(xùn)練任務(wù)可以視為模型從語料庫中學(xué)習(xí)知識的途徑,對于NLP 中的預(yù)訓(xùn)練任務(wù),研究人員一直在努力改進(jìn),目的是使得模型能夠更加充分且高效地學(xué)習(xí)語料庫中的內(nèi)隱知識。

XLM[38]在訓(xùn)練多語種翻譯任務(wù)時,對原始端序列和目標(biāo)端序列同時添加“|Mask|”標(biāo)記符來增加任務(wù)難度,迫使模型在翻譯文本時從原始文本抽取更多的信息。

為了學(xué)習(xí)單詞的結(jié)構(gòu)語義信息和句子的結(jié)構(gòu)語義信息,StructBERT[32]將執(zhí)行掩碼操作后序列中Tokens 的順序打亂,通過使模型還原Tokens 的原始順序這種訓(xùn)練目標(biāo)來學(xué)習(xí)單詞級別的結(jié)構(gòu)語義信息;在預(yù)測句子對之間的順序關(guān)系時,針對句子S1,在1/3 的訓(xùn)練時間步中選取S1的下一個句子S2作為S1的句子對(S1,S2),1/3 的訓(xùn)練時間步中選取S1的前一個句子S0作為S1的句子對(S0,S1),其余1/3 的訓(xùn)練時間步中從其他文檔中任選一個句子Sk作為S1的句子對(S1,Sk),這三種句子之間的關(guān)系分別對應(yīng)標(biāo)簽label={1,2,0},通過訓(xùn)練模型正確分類句子對的類別來學(xué)習(xí)句子級別結(jié)構(gòu)語義信息。

在模型訓(xùn)練時除了使用標(biāo)準(zhǔn)的掩碼學(xué)習(xí)策略[10]之外,BART(bidirectional and auto-regressive transformers)[54]還引入了:(1)Token 刪除任務(wù),即刪除一些Token,使模型檢測缺失位置;(2)文本填充任務(wù),以往的模型如SpanBERT[31]每次Mask 掉多個連續(xù)的Token 并用等數(shù)量的“|Mask|”標(biāo)記符替換,而BART[54]一次Mask 掉多個Token 但只使用一個“|Mask|”標(biāo)記符代替,模型預(yù)測“|Mask|”標(biāo)記符之前,首先預(yù)測被“|Mask|”標(biāo)記符覆蓋的范圍中Token的數(shù)量;(3)句子排序任務(wù),文檔中的句子隨機(jī)排序,使模型預(yù)測文檔中句子的正確順序;(4)文檔翻轉(zhuǎn)任務(wù),將一個文檔從中間切分,并互換順序,使模型去識別文檔開始的Token位置。

MacBERT[77]摒棄了BERT 的(next sentence prediction,NSP)任務(wù)[13]而選擇難度更大的句子序列預(yù)測(sentence order prediction,SOP)任務(wù),即預(yù)測句子之間的順序關(guān)系。

ELECTRA[52]受到生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)[78]的啟發(fā)提出了單詞替換檢測任務(wù),使用兩個TEM[9]分別作為生成器和判別器,生成器用于執(zhí)行原始的掩碼預(yù)測任務(wù)[13],判別器在MLM 的基礎(chǔ)上[13]進(jìn)一步判別生成器預(yù)測的“|Mask|”標(biāo)記是否和原始詞相同。

2.4.6 對融入知識信息的研究

使用深度上下文語言模型在大規(guī)模語料庫下進(jìn)行預(yù)訓(xùn)練,雖然能夠捕獲語料庫中豐富的內(nèi)隱知識,但是在處理專業(yè)領(lǐng)域問題時,往往由于缺少特殊領(lǐng)域的專業(yè)知識信息而導(dǎo)致模型性能出現(xiàn)大幅度的衰退。對于預(yù)訓(xùn)練階段使用的語料庫而言,絕大多數(shù)的數(shù)據(jù)為網(wǎng)絡(luò)爬取的非結(jié)構(gòu)化數(shù)據(jù),因此只能夠為模型提供通用知識。為了解決通用知識向?qū)I(yè)領(lǐng)域遷移時所存在的問題,大量研究人員針對如何引入專業(yè)領(lǐng)域知識展開探討。

K-BERT[53]通過知識圖譜將領(lǐng)域知識融入模型,使模型輸出的特征表示(動態(tài)詞向量)中嵌入了專業(yè)的領(lǐng)域知識信息,進(jìn)而提升模型在領(lǐng)域下游任務(wù)的性能。在知識圖譜中,知識是以三元組的形式進(jìn)行表示,即ε={ei,rj,ek},ε∈K,其中ε表示一個知識,K表示一個專業(yè)領(lǐng)域的知識圖譜,ei和ek分別表示兩個命名實體,rj表示兩個命名實體之間的關(guān)系。KBERT[53]從3 個知識圖譜CN-DBpedia[79]、HowNet[80]、MedicalKG 中獲取知識三元組。對于輸入序列S,S=[w1,w2,…,wl],首先提取S中的所有命名實體詞EKG,并在知識圖譜K中檢索每個實體詞ek∈EKG所對應(yīng)的所有關(guān)系r與實體ekr作為知識ε,最后將ε拼接到每個實體詞之后得到帶有領(lǐng)域知識信息的輸入序列SKG,SKG=[w1,w2,…,ei{(ri0,ei0),(ri1,ei1),…,(rik,eik)},…,wl],使模型在捕獲通用知識的同時能夠?qū)W習(xí)到專業(yè)的領(lǐng)域知識。

與K-BERT[53]通過引入知識圖譜捕獲領(lǐng)域知識的做法不同,ERNIE[51]認(rèn)為如果模型在預(yù)訓(xùn)練階段能夠?qū)W習(xí)到更多的先驗知識,那么模型就能夠輸出高質(zhì)量的特征表示。因此,ERNIE[54]并沒有采用通過直接添加知識三元組的方式來學(xué)習(xí)先驗知識,而是通過對話語言模型(dialogue language model,DLM)在對話數(shù)據(jù)集上學(xué)習(xí)對話文本中隱藏的知識信息,如實體間的關(guān)系、實體的屬性和事件的類型。

人類能夠不斷地積累通過學(xué)習(xí)或經(jīng)驗獲得的知識,從而有效地開發(fā)新技能。受到人類學(xué)習(xí)方式的啟發(fā),ERNIE-2.0[81]添加了針對不同粒度的預(yù)訓(xùn)練任務(wù)(單詞級別、句子級別和語義級別)來學(xué)習(xí)語料庫中不同粒度的內(nèi)隱信息,并采用持續(xù)多任務(wù)學(xué)習(xí)[82]的訓(xùn)練方式進(jìn)行模型參數(shù)的更新。持續(xù)多任務(wù)學(xué)習(xí)是指模型在不同任務(wù)上并行地進(jìn)行訓(xùn)練,首先使用一個簡單的任務(wù)訓(xùn)練一個初始模型,然后不斷地引入新的預(yù)訓(xùn)練任務(wù)對模型進(jìn)行參數(shù)更新。當(dāng)一個新任務(wù)到來時,使用前一個任務(wù)的參數(shù)對模型進(jìn)行初始化并與先前所有任務(wù)一起訓(xùn)練,以緩解模型對先前任務(wù)中所積累知識的遺忘。

命名實體詞往往帶有非常關(guān)鍵的語義信息,LUKE(language understanding with knowledge-based embeddings)[83]為了更加充分地利用實體知識信息,在帶有實體標(biāo)簽的語料庫上對語言模型進(jìn)行預(yù)訓(xùn)練來學(xué)習(xí)實體知識,并在詞嵌入層引入實體類型嵌入向量,通過對實體詞添加額外的實體向量來增強(qiáng)模型對序列中實體的關(guān)注度。此外,LUKE[83]還通過引入實體掩碼任務(wù)讓模型預(yù)測被“|Mask|”標(biāo)記符替換的實體,以最大程度地學(xué)習(xí)實體知識信息。

CoFEE(coarse-to-fine entity knowledge enhanced)[84]提出了一種Coarse-to-Fine 的預(yù)訓(xùn)練方式用以學(xué)習(xí)不同粒度的知識。CoFEE[84]首先利用維基百科給出的錨點(diǎn)來抽取出若干實體,并在二分類任務(wù)上訓(xùn)練模型區(qū)分實體詞和非實體詞;之后根據(jù)每個實體對應(yīng)的實體類型,使用多分類任務(wù)訓(xùn)練模型學(xué)習(xí)實體所屬類別;最后對于每個類別下的所有實體,模型根據(jù)其特征表示進(jìn)行聚類,從而得到更加細(xì)粒度的類別標(biāo)簽并返回模型繼續(xù)進(jìn)行學(xué)習(xí)。Coarse-to-Fine 的訓(xùn)練方式使得模型能夠通過逐步執(zhí)行不同粒度的實體任務(wù),從而學(xué)習(xí)不同粒度的實體知識信息。

2.4.7 對模型參數(shù)壓縮的研究

隨著各種大體量預(yù)訓(xùn)練語言模型的提出,各種下游任務(wù)的state-of-the-art被不斷刷新,但是模型的參數(shù)體量也朝著大幅度增長的趨勢發(fā)展,如RoBERTalarge[39]有3.55 億參數(shù),GPT2-xl[37]有15 億參數(shù),GPT-3[85]的參數(shù)達(dá)到了驚人的1 750 億,高額的存儲空間要求和計算資源消耗使各種大體量模型難以有效地部署在硬件條件有限的平臺或終端設(shè)備。為此,不少研究人員開始研究通過對模型進(jìn)行壓縮來減少模型參數(shù)體量并提升模型訓(xùn)練和推理速度。

模型壓縮的主要手段有模型剪枝、知識蒸餾、參數(shù)量化、低秩分解和參數(shù)共享。ALBERT[33]使用詞嵌入矩陣分解和跨層參數(shù)共享的方式大幅度減少了模型的參數(shù)體量。(1)詞嵌入矩陣分解是將高維度的詞嵌入矩陣拆分為兩個低維度的子矩陣,即,其中V為詞匯表大小,d為隱藏層維度,m為中間維度,m遠(yuǎn)小于d。這樣模型的復(fù)雜度由O(V×d)減小為O(V×m+m×d)。(2)對于參數(shù)共享,ALBERT[33]通過共享所有堆疊的Transformer 模塊[10]的參數(shù),來防止模型參數(shù)量隨著模塊堆疊深度的增長而增長,把單層模型變成偽多層(即參數(shù)量減少,但模型的計算量沒有改變)。Lan 等人[33]還證實了這兩種壓縮方式不僅能夠?qū)崿F(xiàn)模型壓縮,還能夠作為一種正則化的方式增強(qiáng)訓(xùn)練穩(wěn)定性并提升模型泛化能力。

DistilBERT[86]、BERT-PKD(patient knowledge distillation)[87]、MiniLM[88]以及TinyBERT[89]使用知識蒸餾的方法,通過構(gòu)建“教師-學(xué)生”網(wǎng)絡(luò),使用小體量模型作為學(xué)生模型去學(xué)習(xí)大體量教師模型的參數(shù)分布,從而在實現(xiàn)模型參數(shù)壓縮的同時,最大程度地提升模型性能。

DistilBERT[86]通過設(shè)計如下蒸餾損失函數(shù)來指導(dǎo)學(xué)生模型對教師模型的參數(shù)學(xué)習(xí)。

其中,ti是教師模型未經(jīng)歸一化操作的輸出特征,si是學(xué)生模型未經(jīng)歸一化操作的輸出特征(也稱logits),并使用溫度系數(shù)來控制平滑程度,使學(xué)生模型能夠充分學(xué)習(xí)到教師模型的參數(shù)分布。

DistilBERT[86]通過對BERT[13]模型使用知識蒸餾的方法,使其模型參數(shù)量減少為BERT-base[13]的40%,推理速度提升了60%,但仍保持BERT-base 模型[13]97%的NLU能力。

BERT-PKD[87]提出了弱知識蒸餾,從教師模型的中間層學(xué)習(xí)知識,避免只學(xué)習(xí)大體量模型輸出層時出現(xiàn)的過擬合問題。通常來說,“|CLS|”標(biāo)記符用于表示整個句子的語義信息,BERT-PKD[87]為了避免中間層學(xué)習(xí)的計算量過大,僅指導(dǎo)學(xué)生模型學(xué)習(xí)“|CLS|”標(biāo)記符在教師模型各中間層輸出的特征分布。

MiniLM[88]針對BERT[13]的自注意力層進(jìn)行蒸餾。TinyBERT[89]對BERT[13]的詞嵌入層、中間層隱狀態(tài)以及自注意力層進(jìn)行蒸餾來全方位地學(xué)習(xí)教師模型的知識。

3 詞向量的評估

嵌入方法通過訓(xùn)練語言模型,將字符型的文本數(shù)據(jù)映射到高維抽象的嵌入空間,生成詞的數(shù)值型向量表示,即詞向量。使用不同的訓(xùn)練方法生成的詞向量,所蘊(yùn)含的內(nèi)隱信息也不相同。使用高質(zhì)量的詞向量作為模型的初始化特征表示,不僅能夠提升模型的整體性能,還能加快訓(xùn)練時的收斂速度。然而,詞向量本身并不具有很好的可解釋性[17]。

詞向量的評估是非常重要的一個環(huán)節(jié),該階段用于檢驗生成的詞向量質(zhì)量,根據(jù)任務(wù)的評價指標(biāo)來直觀地反映詞向量的質(zhì)量。詞向量的評估可分為內(nèi)部任務(wù)評估和外部任務(wù)評估[90]。本章對詞向量的評估方法進(jìn)行分析和闡述。

3.1 內(nèi)部任務(wù)評估

詞向量的內(nèi)部評估用于度量詞向量所蘊(yùn)含的內(nèi)隱信息,通過向量運(yùn)算的方法,如余弦相似度[24,66],計算出詞向量之間的一個數(shù)值得分,通過數(shù)值得分來反映詞與詞之間語法關(guān)系或語義關(guān)聯(lián)的相似程度[91]。內(nèi)部任務(wù)評估需要人工創(chuàng)建帶標(biāo)簽的查詢數(shù)據(jù)集[90],如(查詢詞:“北京”,候選詞集合:[“中國”,“首都”,“故宮”,“北京大學(xué)”]),根據(jù)查詢詞的詞向量與詞匯表中的其他詞向量進(jìn)行得分計算,并將得分最高的詞向量所對應(yīng)的詞與人工標(biāo)注的候選詞進(jìn)行對比評估。

因此,在對詞向量的性能進(jìn)行內(nèi)部任務(wù)評估時,首先要創(chuàng)建查詢數(shù)據(jù)集。Schnabel 等人[90]提出了一種數(shù)據(jù)驅(qū)動的方法用于構(gòu)造進(jìn)行內(nèi)部任務(wù)評估的查詢數(shù)據(jù)集。Finkelstein 等人[92]創(chuàng)建了WordSim-353 數(shù)據(jù)集,數(shù)據(jù)集中數(shù)據(jù)為三元組{w1,w2,score}的格式,表示詞w1和w2的相似性得分為score。Bruni 等人[93]基于圖片數(shù)據(jù)集創(chuàng)建了用于詞向量內(nèi)部任務(wù)評估的有標(biāo)簽數(shù)據(jù)集MEN。Faruqui 和Dyer[94]搭建了一個基于大量查詢數(shù)據(jù)進(jìn)行詞向量自動評估的網(wǎng)站。

內(nèi)部任務(wù)評估主要有相關(guān)性任務(wù)評估(relatedness)、類比任務(wù)評估(analogy)、聚類任務(wù)評估(categorization)、語義優(yōu)選任務(wù)評估(semantic preference)、入侵詞檢測任務(wù)評估(intrusion)和名詞性別判斷任務(wù)評估(noun gender)。

(1)相關(guān)性任務(wù)評估:使用余弦相似度進(jìn)行度量。

其中,vi是詞wi的詞向量,通過計算兩個詞向量之間的距離L,根據(jù)詞向量之間的距離大小來反映兩個詞之間的相似程度,詞向量之間的距離越遠(yuǎn)說明兩個詞的相關(guān)性越小,詞向量之間的距離越近則說明兩個詞越相似[24,66]。

(2)類比任務(wù)評估:該任務(wù)由Mikolov 等人[4]提出,類比任務(wù)的目標(biāo)是給定單詞wb、單詞wc和單詞wd,其中wc和wd存在某種關(guān)系r,找出和單詞wb存在關(guān)系r的單詞wa,使等式va-vb=vc-vd成立。如v國王-v王后=v男人-v女人,其中蘊(yùn)含的關(guān)系r為性別。

其中,Voc表示詞匯表所對應(yīng)的詞向量集合。

(3)聚類任務(wù)評估:使用詞向量對數(shù)據(jù)集進(jìn)行聚類,生成k個詞簇Ci,i=1,2,…,k,每個詞簇中的詞都具有某些共同的內(nèi)隱特征,通過每個詞的標(biāo)簽計算每個詞簇的純度得分進(jìn)行詞向量的評估。

(4)語義優(yōu)選任務(wù)評估:根據(jù)標(biāo)簽判斷一個名詞是一個動詞的主語或者賓語[91]。

(5)入侵詞檢測任務(wù)評估:具有相干性的詞之間往往具有相同的鄰域,入侵詞任務(wù)使用無監(jiān)督聚類的方法用于評估詞與詞之間的相干性[90]。入侵詞檢測任務(wù)是指在一些具有相干性的詞向量集合中添加一個不相干的入侵詞wk,通過向量運(yùn)算來找出入侵詞wk。

(6)名詞性別判斷:對能夠反映出性別信息的名詞使用二分類的方法判斷名詞的性別[61]。如雄性、丈夫、國王等這些帶有性別信息的名詞都表示“性別=男”,而雌性、公主、王后等名詞都表示“性別=女”。通過對名詞性別的判斷可以反映出詞向量是否嵌入了性別特征信息。

除了上述內(nèi)部評估任務(wù)以外,還可以根據(jù)目標(biāo)詞的詞向量進(jìn)行同義詞和反義詞匹配完成詞向量的評估[95]。Mikolov等人[4]設(shè)計了一個“語義-語法”關(guān)系詞測試集,包括五種類型的語義相似詞查詢方法和九種類型的語法相似詞查詢方法,通過詞向量間的余弦相似度計算,查找與目標(biāo)詞具有相似語法和語義關(guān)系的相似詞,通過返回結(jié)果的準(zhǔn)確度來度量詞向量的質(zhì)量。WordRep(http://research.microsoft.com/enus/um/beijing/events/kpdltm2014/WordRep-1.0.zip)是微軟發(fā)布的用于評估和訓(xùn)練詞向量的基準(zhǔn)數(shù)據(jù)集。

3.2 外部任務(wù)評估

內(nèi)部任務(wù)評估可以很好地對詞向量所蘊(yùn)含的各種類別內(nèi)隱信息進(jìn)行分析和評估,但是內(nèi)部任務(wù)評估大都需要人工的參與,因此具有較高的時間和人力成本。

與內(nèi)部評估任務(wù)不同,外部任務(wù)評估將生成的詞向量作為特征直接輸入處理NLP 下游任務(wù)的模型,根據(jù)不同的下游任務(wù)評價指標(biāo)來分析詞向量的質(zhì)量。Arora等人[96]針對靜態(tài)詞向量和動態(tài)詞向量在多個NLP下游任務(wù)上進(jìn)行了實驗,并對兩種詞向量的優(yōu)勢和劣勢展開了深入的分析與探討。不同的下游任務(wù)對詞向量所蘊(yùn)含內(nèi)隱信息的關(guān)注點(diǎn)并不相同[90],如偏向于抽取詞向量語法信息的命名實體識別任務(wù)[97]。外部任務(wù)評估可以通過下游任務(wù)的評價指標(biāo),直觀地對比使用不同方法生成的詞向量的質(zhì)量。然而,僅依靠外部任務(wù)評估并不能夠?qū)υ~向量內(nèi)部蘊(yùn)含的語法、語義等信息進(jìn)行全面且深度的分析[90]。

除了內(nèi)部評估和外部評估,還可以通過對詞向量進(jìn)行可視化這種方式,直觀地分析詞向量所表達(dá)的含義。常見做法是將訓(xùn)練好的詞向量映射到一維、二維或者三維空間并利用繪圖工具將每個詞向量在這些低維空間進(jìn)行繪制[97-98]。通過觀察那些具有語義和語法相關(guān)性或無關(guān)性的詞或詞簇在低維空間上的距離和分布規(guī)律,從而判別詞向量的質(zhì)量。詞向量的維度是詞向量的重要參數(shù),將單詞映射到高維的特征空間能夠使詞向量從更多的角度進(jìn)行語義信息的存儲,但是當(dāng)維度過高時反而會對模型的性能產(chǎn)生負(fù)面作用[17,99]。表2為NLP領(lǐng)域具有代表性的深度上下文語言模型及其模型結(jié)構(gòu)、使用的分詞方法和預(yù)訓(xùn)練階段使用的語料庫。

表2 深度上下文語言模型Table 2 Deep contextual language models

4 詞嵌入方法的未來發(fā)展趨勢展望

通過子詞切分方法解決開放域任務(wù)下的OOV問題,再利用性能強(qiáng)大的預(yù)訓(xùn)練語言模型生成能夠擬合輸入序列整體語境的動態(tài)詞向量,這一流程已成為目前詞嵌入方法的范式。本章對詞嵌入方法的未來發(fā)展趨勢進(jìn)行分析和展望。

4.1 特征提取器

語言模型通過特征提取器對語料庫中的文本序列進(jìn)行建模和特征提取,結(jié)合預(yù)訓(xùn)練任務(wù)能夠?qū)⒄Z料庫中的內(nèi)隱知識嵌入到詞向量中,使詞向量蘊(yùn)含豐富的語義信息。因此,特征提取器能否高效地抽取出大規(guī)模語料庫中所蘊(yùn)含的通用知識,對詞向量的質(zhì)量起重要作用。

特征提取器從結(jié)構(gòu)簡單的小體量神經(jīng)網(wǎng)絡(luò)[4-6,46,63]發(fā)展到如今能夠捕獲雙向上下文且具有并行計算能力的Transformer模塊[9,13,31,34,38-39],特征提取器的特征提取能力和計算效率在不斷提升,基于此搭建的語言模型的性能和生成的詞向量質(zhì)量也在不斷提升。然而,Transformer 模塊[9]在處理每個輸入單元時都需要對整個句子中的所有單元進(jìn)行并行計算,這將導(dǎo)致其計算復(fù)雜度與輸入序列長度呈現(xiàn)線性相關(guān)。因此在輸入序列過長時,對硬件設(shè)備的性能要求很高,這樣的高計算成本影響了模型的實際應(yīng)用。因此,設(shè)計更加高效的且具有較低計算成本的特征提取器是詞嵌入方法未來發(fā)展的一個重要方向。

4.2 模型的推理效率

截至目前,使用動態(tài)詞向量作為詞的特征表示已成為NLP 任務(wù)的一個范式。動態(tài)詞向量本質(zhì)上是預(yù)訓(xùn)練語言模型輸出的特征向量,然而高性能的預(yù)訓(xùn)練語言模型參數(shù)量非常龐大,如有著3.4×108參數(shù)量的BERT-large[13]、8.3×109參數(shù)量的Megatron-LM[71]、1.7×1010參數(shù)量的Turing-NLG[72]甚至是5.3×1011參數(shù)量的Megatron-Turing。參數(shù)量更大的預(yù)訓(xùn)練語言模型其性能也更加優(yōu)異[73],但是這將導(dǎo)致動態(tài)詞向量的生成極為緩慢,因而使用動態(tài)詞向量作為輸入的下游任務(wù)模型的推理速度也受到了很大程度的限制。與此同時,存儲容量和算力有限的計算機(jī)或小型移動終端設(shè)備并不能夠支持大體量模型的部署。Louizos等人[100]通過使用模型剪枝的方式來減少模型的參數(shù)量,進(jìn)而提升模型的推理速度。Shen 等人[101]通過量化的方式實現(xiàn)模型壓縮。因此,減少模型參數(shù)量并提升模型的推理效率,同時最大程度地確保模型性能,將會是詞嵌入方法未來的一個重要發(fā)展趨勢。

4.3 詞向量評估機(jī)制

當(dāng)前詞向量的質(zhì)量評估主要關(guān)注于外部任務(wù)評估,通過將序列的詞向量作為模型的輸入,根據(jù)具體下游任務(wù)評價指標(biāo)來反映詞向量的質(zhì)量。通過下游任務(wù)進(jìn)行詞向量評估雖然可以較為直觀地對比不同模型生成詞向量的質(zhì)量,但是這種由具體任務(wù)驅(qū)動的評價方法很難從多個角度更加全面地對詞向量的質(zhì)量進(jìn)行評判。內(nèi)部任務(wù)評估法雖然能夠從多個角度,如詞向量所蘊(yùn)含的語法信息、語義信息、詞相關(guān)關(guān)系信息等方面,對詞向量進(jìn)行評估[4,90,95],但是當(dāng)前的內(nèi)部任務(wù)評估方法缺少具有說服力的統(tǒng)一評價指標(biāo)和統(tǒng)一測試數(shù)據(jù)集。因此,制作高質(zhì)量的詞向量評估數(shù)據(jù)集以及制定更多角度的詞向量評價指標(biāo)對詞嵌入方法的發(fā)展起關(guān)鍵作用。

4.4 詞向量的可解釋性

通過詞嵌入方法能夠生成低維稠密且蘊(yùn)含豐富內(nèi)隱信息的詞向量,將生成的詞向量作為詞的特征表示輸入模型,解決不同的自然語言處理任務(wù)的表示學(xué)習(xí)方式能夠提升模型的性能[4-5,24,63]。但對于蘊(yùn)含豐富知識信息的詞向量很難清晰地對其進(jìn)行分析,即詞向量的性能雖然良好,但是可解釋性很差。

可解釋性對于人工智能領(lǐng)域和詞嵌入方法都十分重要,可解釋性工作有助于判斷模型輸出誤差并進(jìn)行修正[102],能夠幫助研究人員了解詞向量中包含和未包含的各種內(nèi)隱信息。

之前的研究多從以下兩個角度進(jìn)行詞向量的可解釋性分析:一是對通過語料庫訓(xùn)練生成的詞向量進(jìn)行知識注入,這種方法雖然關(guān)注到了知識庫對詞向量可解釋性的重要性,但由于沒有采用特征注入的方法,只是簡單利用了知識庫,無法表明詞向量在維度取值和語言特征上的具體關(guān)聯(lián);二是對詞向量生成算法及其生成的詞向量進(jìn)行理論分析,嘗試從算法上對詞向量做出解釋,但由于神經(jīng)網(wǎng)絡(luò)自身的不可解釋性使得該方式只能結(jié)合部分任務(wù)對詞向量進(jìn)行解釋分析。

使用可視化工具對詞向量進(jìn)行可視化[98]也只能夠反映出詞向量的部分低維信息。目前已有研究人員對神經(jīng)網(wǎng)絡(luò)的可解釋性進(jìn)行了研究[103],但對詞向量可解釋性的研究仍處于初步階段。因此,詞向量的可解釋性也是詞嵌入方法需要關(guān)注的一個重要研究方向。

4.5 多模態(tài)詞向量

人類在學(xué)習(xí)語言的過程中,能夠通過自身不同的感官與世界進(jìn)行交互來獲取豐富的外部知識信息,比如圖像和聲音。因此,除了文本數(shù)據(jù)以外,其他模態(tài)的數(shù)據(jù)中也蘊(yùn)含著豐富的知識信息。在一些特殊的任務(wù)上,基于純文本的模型可能會因為缺乏語言的外部模式而削弱表征能力[104]。

學(xué)習(xí)多模態(tài)數(shù)據(jù)內(nèi)隱的知識并將其嵌入到詞的向量表示中能夠使詞向量所蘊(yùn)含的知識更加豐富。Feng 等人[105]首次將多模態(tài)思想應(yīng)用于圖像標(biāo)注等任務(wù)。Kiros 等人[106]將視覺特征引入語言模型,提出多模態(tài)神經(jīng)語言模型。Kiela等人[107]研究了聽覺感知信息中的語義表示,利用聽覺詞袋模型(bag of audio words model)來獲得音頻的特征表示,并嘗試多種融合策略將音頻與文本進(jìn)行組合,形成多模態(tài)特征表示。Collell 等人[108]提出了一種方法用于學(xué)習(xí)語言特征到視覺特征的映射,并以此構(gòu)建詞的多模態(tài)特征表示。Mao 等人[109]對多模態(tài)詞向量的訓(xùn)練和評價問題進(jìn)行了深入的探討。因此,多模態(tài)詞向量的研究對NLP領(lǐng)域的發(fā)展有著重要作用。

5 總結(jié)

通過對語料庫進(jìn)行分詞獲取詞匯表,根據(jù)分詞粒度大小可將分詞算法分為粗粒度的整詞切分和細(xì)粒度的子詞切分,在開放域任務(wù)中常使用子詞切分算法解決OOV 問題。在獲取詞匯表后,使用詞嵌入方法生成詞的分布式表示,即詞向量,將詞匯表中的每個詞或字符映射到一個固定維度的連續(xù)稠密特征向量空間,該特征空間中蘊(yùn)含了豐富的內(nèi)隱信息。在處理具體的自然語言處理下游任務(wù)時,可以直接使用預(yù)訓(xùn)練好的詞向量作為詞的初始化特征表示輸入模型,不僅可以提升模型性能,還可以加快模型訓(xùn)練階段的收斂速度。詞嵌入方法的發(fā)展經(jīng)歷了從生成只能表達(dá)固定語義信息的靜態(tài)詞向量,到如今基于預(yù)訓(xùn)練語言模型生成擬合輸入序列語境信息的動態(tài)詞向量。從基于如LSTM 這類小體量神經(jīng)網(wǎng)絡(luò)的神經(jīng)概率語言模型到如今基于Transformer 模塊的深度上下文語言模型,用于訓(xùn)練詞向量的語言模型的性能也在不斷提升,詞嵌入方法正在朝著使用更大規(guī)模的語料庫和更復(fù)雜的大體量語言模型的方向發(fā)展。

猜你喜歡
詞匯表語料庫語義
Peritoneal dissemination of pancreatic cancer caused by endoscopic ultrasound-guided fine needle aspiration: A case report and literature review
語言與語義
《語料庫翻譯文體學(xué)》評介
“上”與“下”語義的不對稱性及其認(rèn)知闡釋
基于JAVAEE的維吾爾中介語語料庫開發(fā)與實現(xiàn)
認(rèn)知范疇模糊與語義模糊
語義分析與漢俄副名組合
語料庫語言學(xué)未來發(fā)展趨勢
詞匯表
詞匯表
商城县| 时尚| 庄河市| 祁阳县| 平阳县| 新源县| 建德市| 年辖:市辖区| 枣阳市| 宁乡县| 萨迦县| 大厂| 酉阳| 延川县| 银川市| 彩票| 武安市| 石河子市| 马公市| 永登县| 甘肃省| 昌江| 昌都县| 南丹县| 东至县| 基隆市| 巴南区| 大连市| 思茅市| 盱眙县| 略阳县| 凤台县| 南川市| 南投市| 余姚市| 屯昌县| 青铜峡市| 汉沽区| 凉城县| 馆陶县| 通渭县|