知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

NLP論文解讀發表於2022-03-04

©原創作者 | 楊健

論文標題:

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使用基於自注意力機制來克服異構向量的融合,而KEPLER更進一步,將實體的描述文字作為訓練語料,利用文字編碼器生成實體的初始化語料,避免了異構語義向量的生成。

那麼除了這一方式以外,是否還存在別的方式在注入異構知識的過程中解決異構向量的問題呢?

既然造成異構向量的原因在於使用不同的表示學習方式對不同結構的物件進行表示學習,那麼一個直接的思路就是將不同結構的物件轉換成同一結構,從而使用同一種表示學習方式對其編碼。

本文所解讀的K-BERT模型正是通過將知識圖譜中的三元組轉換為文字序列實現了結構的統一,在此基礎上使用預訓練語言模型編碼文字和知識。

具體而言,K-BERT首先將圖譜中的三元組視為單向的文字序列,通過對齊輸入序列中的相同的實體名作為橋樑,實現文字序列和三元組序列之間的連結,形成如下圖所示的句子樹結構:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

 

儘管這種方式生成了統一的資料結構,然而在使用已有的預訓練語言模型對它編碼時卻會遇到引入知識噪音的問題。

也即由於預訓練語言模型中的自注意機制,會使得模型中的無關詞關注到三元組中的實體,從而影響其正確的語義。

比如文字序列中的visiting會受到apple和CEO等無關詞的影響。

02 解決方案

K-BERT使用BERT模型作為基礎模型,為下游任務構造含有知識的句子樹作為輸入序列,並通過下游任務的目標函式微調模型。

K-BERT模型主要包括知識層(knowledge layer)、表示層(embedding layer)、可見層(seeing layer)和編碼器(mask-Transformer encoder)四個組成模組。

其中知識層負責知識的注入以及句子樹的生成;表示層負責將句子樹這一輸入序列投影成表示向量;可見層通過使用可見矩陣記錄向量的可見範圍,解決知識噪音的問題;編碼層則負責基於注入的三元組知識所提供的資訊編碼表示向量。

模型結構如圖1所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

圖1. K-BERT模型結構

給定輸入序列,知識層首先挑選出序列中的命名實體,並將其作為頭實體,從知識圖譜中檢索出實體所在的三元組,然後將三元組中的關係和尾實體連結到命名實體後面,形成深度為1的句子樹。

獲得句子樹後,K-BERT使用和BERT相同的方式生成文字初始表示向量,段落(segment)表示向量,與BERT所不同的是,由於引入了三元組,K-BERT使用軟位置編碼方式生成位置向量。

以圖1中的句子為例,“CEO”和“is”都處於Cook後面,因此他們擁有相同的絕對位置向量,然而這會使得編碼器在計算自注意力時,認為“CEO”和“is”關聯密切,從而受到誤導。

表示向量的生成示例如下圖所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

 

為了解決這一問題,模型在可見層部分額外設計了一個可見矩陣,控制每一個文字向量的可見範圍。

同樣以圖1中的句子為例,句子樹總長度為12,對於第一個單詞Tim而言,文字序列中的所有單詞都可見,而句子中的分支,也即三元組的關係和尾實體不可見。

針對可見單詞,將矩陣中對應位置賦值為0,對於不可見的單詞則賦值為負無窮。依次對序列中的每一個單詞進行相同的處理,從而生成12*12的矩陣。

矩陣示意圖如下圖所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

 

其中紅色標記的點代表縱向上某個單詞對橫向上某個單詞可見,白色標記的點則代表不可見。

矩陣取值規則如下面公式所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

 

矩陣Mij將在自注意力層中和權重矩陣(query矩陣Q和key矩陣K的乘積)求和,從而使得無關單詞之間的權重為負無窮,經過Softmax計算後關注度為0,而相關詞之間的權重由於和0值求和,關注度不受影響,從而克服無關詞帶來的語義影響。

計算公式如下圖所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

 

03 實驗分析

實驗主要包括針對開放和特定領域的中文自然語言理解實驗,以及消融實驗。

3.1 開放領域自然語言理解實驗

面對開放領域,作者分別使用HowNet和CN-DBpedia兩個知識圖譜微調模型,分別在情感分類、自然語言推理、句子對語義相似性判斷、問答和實體識別任務上測試經過訓練後的模型的有效性。

其測試結果如圖2和圖3所示:

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

圖2. K-BERT在情感識別任務、自然語言推理和句子對語義相似性判斷任務上的正確率

結果表明知識圖譜對於情感分類任務沒有較大的影響(正確率見綠框中顯示),這是因為任務中判斷句子的情感類別更依賴於句中的情感詞,而非外部的知識庫。

但對於這一點,筆者認為外部知識庫也同樣有著很大的重要,比如當某人引用“西出陽關無故人,勸君更盡一杯酒”這類古詩時,僅僅依賴於情感詞就無法判斷個人此時的情感傾向。

知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料

圖3. K-BERT在問答和實體識別任務上的F1值

其次在語義相似性任務上,圖3的結果表明使用HowNet微調比使用CN-DBpedia取得的正確率更高,在問答和實體識別任務上則相反。

這是因為HowNet是一個語義粒度更小的知識圖譜,它是通過將單詞分解為最小語義單元的方式組織知識圖譜,圖譜中實體之間的關係表達的是“組成”這一關係,因而更適用於對單詞語義要求更高的語言理解型任務。而對於要求實體間更為多樣關係的任務,百科知識圖譜更更為適用。

此外,在金融和醫療領域的問答和實體識別任務上測試的結果表明,相比BERT,通過使用知識圖譜能夠有效提高模型的效能,使用領域知識圖譜則有進一步的提高。

3.2 消融實驗

該實驗部分檢測了軟位置編碼和可視矩陣的有效性。結果表明,當不使用軟位置編碼或可視矩陣時,模型會受到知識噪音的影響,造成模型的效能下降,而使用它們能夠提高模型的魯棒性,從而更有效的利用外部知識。

04 點滴思考

模型通過構造句子樹這一統一結構融合了知識圖譜中的三元組,具有下面幾個優點,一是模型不需要重新預訓練,而僅需通過微調注入知識,保持了預訓練語言模型的引數不變,並且訓練效率更高。

這對於應對會動態變化的真實世界而言非常重要,由於外部知識庫會不斷更新,重新預訓練一方面會增加訓練成本,另一方面也容易造成引數遺忘。

對於引數遺忘的問題,一個較為成熟的解決方式是在原有模型的基礎上引入介面卡,使用介面卡記錄額外的引數,而保持原有模型引數在訓練的時候不變[1]。二是和KEPLER一樣,在知識注入的同時避免了異構向量的生成。

然而K-BERT將三元組視作一個獨立的單元,忽略了三元組間的關聯。此外,K-BERT在微調階段注入知識也使得知識注入的程度有限。為此,[2-3]嘗試引入知識圖譜中的子圖作為基本的知識單元,從而引入實體在圖譜中的上下文資訊。

參考文獻

[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

相關文章