感謝清華大學自然語言處理實驗室對預訓練語言模型架構的梳理,我們將沿此脈絡前行,探索預訓練語言模型的前沿技術,紅框中為已介紹的文章,綠框中為本期介紹的模型,歡迎大家留言討論交流。
在之前的一期推送中,我們給大家介紹過百度的ERNIE。其實清華大學NLP實驗室,比百度更早一點,也發表了名為ERNIE的模型,即Enhanced Language Representation with Informative Entities。
他們認為現存的預訓練語言模型很少會考慮與知識圖譜(Knowledge Graph: KG)相結合,但其實知識圖譜可以提供非常豐富的結構化知識和常識以供更好的語言理解。他們覺得這其實是很有意義的,可以通過外部的知識來強化語言模型的表示能力。在這篇文章中,他們使用大規模語料的語言模型預訓練與知識圖譜相結合,更好地利用語義,句法,知識等各方面的信息,推出了Enhanced language representation model(ERNIE),在許多知識驅動的任務上獲得了巨大提升,而且更適用于廣泛通用的NLP任務。
作者提出,要將知識嵌入到自然語言模型表達中去,有兩個關鍵的挑戰:
知識的結構化編碼
對于一個給定的文本,如何從知識圖譜中,高效地將和文本相關的常識或知識抽取出來并編碼是一個重要問題。
異構信息融合
語言模型表示的形式和知識圖譜的表達形式是大不相同的,是兩個獨立的向量空間。怎么樣去設計一個獨特的訓練任務來將,語義,句法,知識等信息融合起來是另一個挑戰。
針對這些挑戰, 清華NLP實驗室提出方案是 Enhanced Language RepresentatioN with Informative Entities (ERNIE)
首先,通過識別文本中的命名實體,然后將其鏈指到知識圖譜中的相應實體上,進行知識的抽取和編碼。相比于直接使用知識圖譜中基于圖結構的信息,作者通過TranE這樣的知識嵌入算法,對知識圖譜的圖結構實體進行編碼,然后將這富有信息的實體表示作為ERNIE的輸入,這樣就可以把知識模塊中的實體的信息表示,引入到模型下層的語義表示中去。
其次,和BERT類似,采用了MLM和NSP的預訓練目標。除此以外,為了更好地融合文本信息和知識信息,設計了一個新的預訓練目標,通過隨機地mask一些命名實體,同時要求模型去知識圖譜中尋找合適的實體,來填充被mask掉的部分。這個訓練目標這樣做就可以要求語言模型,同時利用文本信息和知識圖譜來對token-entity進行預測,從而成為一個富有知識的語言表達模型。
本文在兩個知識驅動的NLP任務entity typing 和 relation classification進行了實驗,ENRIE在這兩個任務上的效果大幅超越BERT,因為其充分利用了語義,句法和知識信息。在其他的NLP任務上,ENRIE的效果也很不錯。
定義
首先,定義我們的文本token序列為{w1, 。 . 。 , wn},n為token序列的長度。同時,輸入的token可以在KG中對應entity。所對應entity的序列為{e1, 。 . 。 , em}, m是序列中entity的數量。因為不一定每一個token都對應得到KG中的一個entity,所以在大多數情況下m不等于n。所有token的集合也就是字典為V,在KG中所有entity的列表為E。如果,某個在V中的token w ∈ V 在KG中有對應的entity e ∈ E。那么這個對應關系定義為f(w) = e
我們可以看下方的模型結構圖,大概包括兩個模塊。
下層的文本編碼器(T-Encoder),負責捕捉基本的詞法和句法的信息,其與BERT的encoder實現是相同的,都是多層的Transformer,層數為N。
上方的知識編碼器(K-Encoder),負責將跟entity相關的知識信息融入到下方層傳來的文本編碼信息中,兩者可以在統一的特征空間中去表示。T-Encoder的輸出是{w1, 。 . 。 , wn},實體輸入通過TranE得到的知識嵌入為{e1, 。 . 。 , em}。兩者通過K-Encoder計算出對應的特征以實現特定任務。
K-Encoder的結構和BERT略微不同,包含M個stacked aggregators。首先對token的輸出和entity的embedding通過兩個多頭自注意力進行self attention。
接著,通過以下的式子進行兩者的結合。Wt和We分別是token和Embedding的attention權重矩陣。
Pre-training for Injecting Knowledge
除了結構的改變以外,文章提出了特殊的預訓練語言模型訓練目標。通過隨機地mask一些entity然后要求模型通過知識圖譜中實體來進行選擇預測,起名為denoising entity auto-encoder(dEA)。由于知識圖譜中entity的數量規模相對softmax層太大了,會首先在KG中進行篩選找到相關的entity。有時候token和entity可能沒有正確的對應,就需要采取一些措施。
5%的情況下,會將token對應的entity替換成一個隨機的entity,這是讓模型能夠在align錯的時候,能夠糾正過來。
15%的情況下,會將entity mask掉,糾正沒有把所有存在的entity抽取出來和entity進行對應的問題。
其余的情況下,保持token-entity alignments 不變,來將entity的表示融合進token的表示,以獲得更好的語言理解能力。
Fine-tuning for Specific Tasks
對于大量普通的NLP任務來說,ERNIE可以采取和BERT相似的finetune策略,將[CLS]的輸出作為輸入文本序列的表示。對于一些知識驅動的任務,我們設計了特殊的finetune流程。
對于關系分類任務,任務要求模型根據上下文,對給定的entity對的關系進行分類。本文設計了特殊的方法,通過加入兩種mark token來高亮實體。[HD] 表示head entity, [TL]表示tail entity。
對于實體類別分類任務,finetune的方式是關系分類的簡化版,通過[ENT]標示出entity的位置,指引模型同時結合上下文和實體的信息來進行判斷。
模型細節
從頭開始訓ENRIE的代價太大了,所以模型用了BERT的參數初始化。利用英文WIKI作為語料,和WiKidata進行對應,語料中包含大約4500M個subwords,和140M個entities,將句中小于三個實體的樣本丟棄。通過TranE算法在WiKidata上訓練entity的embedding。使用了部分WiKidata,其中包含5040986個實體和24267796個三元組。
模型尺度上來說,T-encoder的層數N為6,K-encoder層數M為6。隱藏層維度兩個網絡分別Hw = 768, He = 100。Attention的頭數分別 Aw = 12, Ae = 4。總參數量大約114M。
ERNIE僅在語料上訓練了一輪,最大文本長度由于速度原因設為256,batch-size為512。除了學習率為5e-5,其他參數和BERT幾乎一樣。
實驗效果
直接放圖吧,比當時的state-of-the-art :BERT在很多任務上都提升了不少。
這里作者認識到,有了知識圖譜的介入,可以用更少的數據達到更好的效果。
結論
在文中提出了一種方法名為ERNIE,來將知識的信息融入到語言表達的模型中。具體地,提出了knowledgeable aggregator 和預訓練任務dEA來更好地結合文本和知識圖譜兩個異構的信息源。實驗表明,ENRIE能更好地在有限的數據上進行訓練和泛化。
未來還有幾個重要的方向值得研究
將知識嵌入到基于特征的預訓練語言模型如ELMo。
引入更多不同的結構化知識進入到語言表達模型中去,比如ConceptNet,這和WiKidata是完全不同的方式。
進行真實世界更廣泛的語料收集,可以進行更通用和有效的預訓練
編輯:jq
-
編碼器
+關注
關注
45文章
3664瀏覽量
135209 -
自然語言
+關注
關注
1文章
291瀏覽量
13397 -
nlp
+關注
關注
1文章
489瀏覽量
22100 -
知識圖譜
+關注
關注
2文章
132瀏覽量
7738
原文標題:ENRIE:知識圖譜與BERT相結合,為語言模型賦能助力
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論