知識增廣的預(yù)訓(xùn)練語言模型K-BERT:將知識圖譜作為訓(xùn)練語料
?原創(chuàng)作者|?楊健
論文標(biāo)題:
K-BERT: Enabling Language Representation with Knowledge Graph
收錄會議:
AAAI
論文鏈接:
https://ojs.aaai.org/index.php/AAAI/article/view/5681
項目地址:
https://github.com/autoliuweijie/K-BERT
01?背景論述
筆者在前面的論文解讀中提到過ERNIE使用基于自注意力機(jī)制來克服異構(gòu)向量的融合,而KEPLER更進(jìn)一步,將實體的描述文本作為訓(xùn)練語料,利用文本編碼器生成實體的初始化語料,避免了異構(gòu)語義向量的生成。
那么除了這一方式以外,是否還存在別的方式在注入異構(gòu)知識的過程中解決異構(gòu)向量的問題呢?
既然造成異構(gòu)向量的原因在于使用不同的表示學(xué)習(xí)方式對不同結(jié)構(gòu)的對象進(jìn)行表示學(xué)習(xí),那么一個直接的思路就是將不同結(jié)構(gòu)的對象轉(zhuǎn)換成同一結(jié)構(gòu),從而使用同一種表示學(xué)習(xí)方式對其編碼。
本文所解讀的K-BERT模型正是通過將知識圖譜中的三元組轉(zhuǎn)換為文本序列實現(xiàn)了結(jié)構(gòu)的統(tǒng)一,在此基礎(chǔ)上使用預(yù)訓(xùn)練語言模型編碼文本和知識。
具體而言,K-BERT首先將圖譜中的三元組視為單向的文本序列,通過對齊輸入序列中的相同的實體名作為橋梁,實現(xiàn)文本序列和三元組序列之間的鏈接,形成如下圖所示的句子樹結(jié)構(gòu):

盡管這種方式生成了統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),然而在使用已有的預(yù)訓(xùn)練語言模型對它編碼時卻會遇到引入知識噪音的問題。
也即由于預(yù)訓(xùn)練語言模型中的自注意機(jī)制,會使得模型中的無關(guān)詞關(guān)注到三元組中的實體,從而影響其正確的語義。
比如文本序列中的visiting會受到apple和CEO等無關(guān)詞的影響。
02?解決方案
K-BERT使用BERT模型作為基礎(chǔ)模型,為下游任務(wù)構(gòu)造含有知識的句子樹作為輸入序列,并通過下游任務(wù)的目標(biāo)函數(shù)微調(diào)模型。
K-BERT模型主要包括知識層(knowledge layer)、表示層(embedding layer)、可見層(seeing layer)和編碼器(mask-Transformer encoder)四個組成模塊。
其中知識層負(fù)責(zé)知識的注入以及句子樹的生成;表示層負(fù)責(zé)將句子樹這一輸入序列投影成表示向量;可見層通過使用可見矩陣記錄向量的可見范圍,解決知識噪音的問題;編碼層則負(fù)責(zé)基于注入的三元組知識所提供的信息編碼表示向量。
模型結(jié)構(gòu)如圖1所示:

給定輸入序列,知識層首先挑選出序列中的命名實體,并將其作為頭實體,從知識圖譜中檢索出實體所在的三元組,然后將三元組中的關(guān)系和尾實體鏈接到命名實體后面,形成深度為1的句子樹。
獲得句子樹后,K-BERT使用和BERT相同的方式生成文本初始表示向量,段落(segment)表示向量,與BERT所不同的是,由于引入了三元組,K-BERT使用軟位置編碼方式生成位置向量。
以圖1中的句子為例,“CEO”和“is”都處于Cook后面,因此他們擁有相同的絕對位置向量,然而這會使得編碼器在計算自注意力時,認(rèn)為“CEO”和“is”關(guān)聯(lián)密切,從而受到誤導(dǎo)。
表示向量的生成示例如下圖所示:

為了解決這一問題,模型在可見層部分額外設(shè)計了一個可見矩陣,控制每一個文本向量的可見范圍。
同樣以圖1中的句子為例,句子樹總長度為12,對于第一個單詞Tim而言,文本序列中的所有單詞都可見,而句子中的分支,也即三元組的關(guān)系和尾實體不可見。
針對可見單詞,將矩陣中對應(yīng)位置賦值為0,對于不可見的單詞則賦值為負(fù)無窮。依次對序列中的每一個單詞進(jìn)行相同的處理,從而生成12*12的矩陣。

其中紅色標(biāo)記的點代表縱向上某個單詞對橫向上某個單詞可見,白色標(biāo)記的點則代表不可見。
矩陣取值規(guī)則如下面公式所示:

矩陣Mij將在自注意力層中和權(quán)重矩陣(query矩陣Q和key矩陣K的乘積)求和,從而使得無關(guān)單詞之間的權(quán)重為負(fù)無窮,經(jīng)過Softmax計算后關(guān)注度為0,而相關(guān)詞之間的權(quán)重由于和0值求和,關(guān)注度不受影響,從而克服無關(guān)詞帶來的語義影響。
計算公式如下圖所示:

03?實驗分析
實驗主要包括針對開放和特定領(lǐng)域的中文自然語言理解實驗,以及消融實驗。
3.1 開放領(lǐng)域自然語言理解實驗
面對開放領(lǐng)域,作者分別使用HowNet和CN-DBpedia兩個知識圖譜微調(diào)模型,分別在情感分類、自然語言推理、句子對語義相似性判斷、問答和實體識別任務(wù)上測試經(jīng)過訓(xùn)練后的模型的有效性。
其測試結(jié)果如圖2和圖3所示:

結(jié)果表明知識圖譜對于情感分類任務(wù)沒有較大的影響(正確率見綠框中顯示),這是因為任務(wù)中判斷句子的情感類別更依賴于句中的情感詞,而非外部的知識庫。
但對于這一點,筆者認(rèn)為外部知識庫也同樣有著很大的重要,比如當(dāng)某人引用“西出陽關(guān)無故人,勸君更盡一杯酒”這類古詩時,僅僅依賴于情感詞就無法判斷個人此時的情感傾向。

其次在語義相似性任務(wù)上,圖3的結(jié)果表明使用HowNet微調(diào)比使用CN-DBpedia取得的正確率更高,在問答和實體識別任務(wù)上則相反。
這是因為HowNet是一個語義粒度更小的知識圖譜,它是通過將單詞分解為最小語義單元的方式組織知識圖譜,圖譜中實體之間的關(guān)系表達(dá)的是“組成”這一關(guān)系,因而更適用于對單詞語義要求更高的語言理解型任務(wù)。而對于要求實體間更為多樣關(guān)系的任務(wù),百科知識圖譜更更為適用。
此外,在金融和醫(yī)療領(lǐng)域的問答和實體識別任務(wù)上測試的結(jié)果表明,相比BERT,通過使用知識圖譜能夠有效提高模型的性能,使用領(lǐng)域知識圖譜則有進(jìn)一步的提高。
3.2 消融實驗
該實驗部分檢測了軟位置編碼和可視矩陣的有效性。結(jié)果表明,當(dāng)不使用軟位置編碼或可視矩陣時,模型會受到知識噪音的影響,造成模型的性能下降,而使用它們能夠提高模型的魯棒性,從而更有效的利用外部知識。
04?點滴思考
模型通過構(gòu)造句子樹這一統(tǒng)一結(jié)構(gòu)融合了知識圖譜中的三元組,具有下面幾個優(yōu)點,一是模型不需要重新預(yù)訓(xùn)練,而僅需通過微調(diào)注入知識,保持了預(yù)訓(xùn)練語言模型的參數(shù)不變,并且訓(xùn)練效率更高。
這對于應(yīng)對會動態(tài)變化的真實世界而言非常重要,由于外部知識庫會不斷更新,重新預(yù)訓(xùn)練一方面會增加訓(xùn)練成本,另一方面也容易造成參數(shù)遺忘。
對于參數(shù)遺忘的問題,一個較為成熟的解決方式是在原有模型的基礎(chǔ)上引入適配器,使用適配器記錄額外的參數(shù),而保持原有模型參數(shù)在訓(xùn)練的時候不變[1]。二是和KEPLER一樣,在知識注入的同時避免了異構(gòu)向量的生成。
然而K-BERT將三元組視作一個獨立的單元,忽略了三元組間的關(guān)聯(lián)。此外,K-BERT在微調(diào)階段注入知識也使得知識注入的程度有限。為此,[2-3]嘗試引入知識圖譜中的子圖作為基本的知識單元,從而引入實體在圖譜中的上下文信息。
參考文獻(xiàn)
[1] K-Adapter: Infusing Knowledge into Pre-Trained Models with Adapters
http://arxiv.org/abs/2002.01808
[2] CoLAKE- Contextualized Language and Knowledge Embedding
https://arxiv.org/abs/2010.00309
[3] Integrating Graph Contextualized Knowledge into Pre-trained Language Models
https://arxiv.org/abs/1912.00147