浅谈 Knowledge-Injected BERTs
作者丨張成蹊
學校丨北京大學碩士生 / 字節跳動AI-Lab實習生
研究方向丨自然語言處理、命名實體識別
序
在當下的 NLP 領域,BERT 是一個繞不過的話題。?
自從 2018 年底橫空出世以來,它以勢不可擋的態勢橫掃了整個 GLUE 榜單,將基準推進到 80% 的水平線,在 SQuAD1.1 中全部指標超越人類水平。在使用其預訓練的參數后,幾乎所有的下游任務都獲得了相當的增益(當然,大量參數隨之帶來的也有運算效率的下降),自此開創了大語料無監督任務的預訓練模型時代,自成一個山門,史稱 Bertology。?
從任務本身來看,BERT 本質上是一個通用的語言模型(Language Representation Model),在進行預訓練時,我們希望它能夠學習到詞表中每個詞的向量表示,即對我們平時所接觸的自然語言進行編碼(encode),使之轉化成模型能理解的語言。?
這樣的設定本身存在一個小問題:通過模型編碼之后的語言向量,人類無法理解,那如何才能確保模型正確地學到我們希望的知識?一個解決方案是,我們將模型的輸出映射到原來的詞表,然后將概率最大的單詞作為模型的預測結果。如果這個單詞就是與我們模型的輸入一致,即意味著模型確實知道了這個單詞的含義。?
BERT 將上述解決方案巧妙地實現為一個完形填空的過程,即隨機遮住一些單詞,只給模型上下文信息,讓模型去預測這些單詞的表示。此外,為了讓模型對句子之間的段落關系有更好的理解,我們也可以讓它去嘗試預測兩個句子之間的關系:是否連續——我們只需要留出一個 token 的空位來進行這個二分類訓練就可以。
這些設計保證了模型能夠同時建模句子內部的詞法信息與外部的關系信息,而輸入的數據本身除了一個預先定義好的詞表外,不需要任何多余的監督信號,所以能在大量語料上進行預訓練。合理的任務設計+大量語料的支持,讓 BERT 有了超越同儕的效果。?
隨著對任務理解的加深,有些人開始提出了這樣的問題:?
“如果完型填空任務中遮住的不是一個單詞,而是一個短語,是不是 BERT 就能夠更好的對短語進行辨析?如果我們增加可以學習到更多知識的任務,BERT 會不會變得更好?——如果我們設計一些任務不停地訓練它,讓它一直學習下去呢?”
從直覺上來說,如果我們遮住一個短語(phrase),而非一個單詞(word),即便 BERT 在大部分任務中并沒有變好,我們也有理由相信它會在一些需要短語知識的任務中變好(比如 NER);而如果我們增加更多的任務,嘗試給它灌輸更多的知識(并且它的復雜度本身又足以支撐它在諸多任務的填鴨式教育中不會頭昏)的話,它將同時編碼更多方面的信息。?
上面的思路似乎值得一試,然而大部分的想法都需要外部知識的支持。例如:如果我們在一個句子的隨機位置遮住一個隨機長度的短語,這個短語大部分情況下不會具有值得學習的實質性意義(雖然 SpanBERT [1] 就是這么做的)——而如果我們有辦法將結構化的信息注入到大量的原始語料中去,我們就能知道哪些短語是有意義的了,以此就可以進行更多的探索性實驗。?
這也是本文將關注的重點:將外部知識注入到預訓練語言模型中。具體而言,我將探討下面三個問題:?
-
我們可以把哪些信息引入到 BERT 的預訓練語料中,以使 BERT 在某些或者全部的任務上有更好的表現??
-
如何根據這些信息的內容,針對性地設計有意義又易于實現的預訓練任務??
-
這些信息的加入是否能帶來我們預期的模型提升??
值得注意的是,本文僅探討(至少在建模預期上)著眼于對通用 NLP 任務提升的 paper。在 arXiv 上也有相當一部分的 paper 嘗試了將結構化的知識注入到 BERT 中,隨后進行一些特定領域的應用(大部分基于 Commonsense 的 QA 任務,少部分的文檔分類或藥品推薦任務),有感興趣的讀者可以自行搜索閱讀。?
我將默認讀者已經對 BERT 的結構與任務具有一定的了解,不花時間介紹相關的背景知識。對于想了解這些知識的同學,我覺得 BERT 的原文 [2]、 BERT 中的核心結構:Transformer [3],以及 Transformer 的圖形化解讀 [4] 這三個資料值得一讀。
Knowledge Enhanced BERTs
Overview
正如上文所說,如果要對 BERT 進行改動,最易于嘗試的方法就是將 mask 這個行為從 token level 提升到 phrase level,SpanBERT [1] 就進行了這樣的一次嘗試。鑒于此,盡管 SpanBERT 中并沒有使用到任何外部的知識,我也會對它的預訓練策略進行簡單的論述——而在了解 SpanBERT 的思路以后,對于一些殊途同歸的實體mask策略(如 WKLM / ERNIE-baidu / ERNIE-thu 等)就更容易理解了。
▲?圖1. Knowledge-injected BERTs的思路簡圖
我總結了大部分模型在進行知識注入時所采用的策略(見圖 1),它們或多或少地修改了傳統 BERT 的任務與結構。?
其中,大部分的 paper 旨在修改模型的預訓練任務:與傳統BERT的預訓練策略不同的是,現在我們能夠根據手頭上已有的外部知識,來更加精確地選擇我們的 mask 目標——也就是特定的實體了(WKLM [5] / ERNIE-baidu [6]);此外,我們也能人工設計一些預訓練任務,來針對性地提高 BERT 在詞法、語法或句法方面的表現(LIBERT [7])。?
ERNIE-thu [8] 做得更深一步,在增加一項預訓練目標的基礎上修改了部分的模型結構,將其中一半的 transformer 層用來同時編碼 token 與實體,并注入實體信息到所對齊的 token 上。?
K-BERT [9]?在輸入的 embedding 上做了嘗試:它直接使用知識庫中的信息擴展了原有的輸入,然后使用 soft-position 來對齊插入單詞與原有單詞之間的距離。由于在絕對位置上,插入的單詞仍然影響到了整體的 self-attention 計算,所以 K-BERT 也修改了部分的模型結構,以糾正這個負面影響。?
最后,盡管沒有出現在圖中,ERNIE2.0-baidu [10]?將預訓練任務數量擴展到了 7 個,然后采用多任務序貫訓練模式,來保證模型在所有任務上都有很好的效果。截止本文寫作之時(2020.01.20),ERNIE2.0 仍然居于 GLUE benchmark 榜首,緊隨其后的是前幾天阿里達摩院的 Alice v2。?
下面,我將按我個人的理解對這些模型進行簡單的歸類,然后通過循序漸進的方式來詳細說明這些模型提出的思路與采用的訓練模式。希望大家在看過總結之后,能夠根據自己想完成的任務設計更具針對性的預訓練 task。
畢竟,無論是否要用到外部的知識,設計一個數據友好、功能有效的策略,總比調參或組件的堆疊更有成就感一些。相信如果 Bi-LSTM 看到我們所做的努力,也會在天上給我們豎起一個大拇指吧。?
一次簡單的試探:SpanBERT
遙記得兩個月前參加實習生面試的時候,現在的 leader 提出了一個有趣的問題:現在假設你有預訓練一個 BERT 的能力,你覺得可以做出什么樣的調整,來提升預訓練以后的模型在 NER 任務上的效果??
我當時緊皺眉頭,思索片刻,猶豫了一會兒后回答:我覺得可以把 mask 策略從 token level 改成 entity level,這樣模型能更好的學到實體的表示,相信會對 NER 任務有提升。?
leader 說:哦,這個啊,這個不是已經做過了嗎。?
(年幼無知的)我:????
誠然,如果說要對 BERT 進行改進,最容易想到的就是修改 mask 的策略,SpanBERT 的思路也非常簡單:?
1. 隨機選擇一個長度,這個長度是從一個幾何分布中采樣出來的;幾何分布保證了采樣出來的長度更傾向于短而非很長;?
2. 隨機在句子中選擇一個起始點,將從這個起始點開始的、指定長度的 token(subword 在這里不算做一個獨立的 token)序列全部 mask 掉;?
3. 重復 1、2兩 個步驟,直到任務設定的需要 mask 的數量夠了為止。?
與 BERT 相同,SpanBERT 也總共 mask 每個句子中 15% 的 token。在這 15% 的 token(span) 中,每個 span 有 80% 的概率被直接替換成 [MASK],10% 的概率被其他隨機的 span 替換,最后 10% 的概率保留原詞不變。
▲?圖2. SpanBERT中一次mask的示例
上圖是這種 mask 策略的一個簡單示例:在這里,我們隨機選擇到了一個長度為 4 的 span,選擇起始位置在 an 處,因此我們 mask 的內容就是:an American football game;我們將這四個單詞 mask 住,然后讓模型通過前后文+當前單詞表示來嘗試復原每個單詞。具體操作如下:?
在嘗試復原單詞 football 時:使用了當前單詞的輸出 x_7 來嘗試復原 football 在詞表中的下標(這也就是傳統 BERT 中的?MLM?任務);除此以外,SpanBERT 的作者提出了一個叫 Span Boundary Objective (SBO) 的任務,即使用當前 span 的前后各一個單詞的表示,以及當前待預測單詞的位置下標來復原當前單詞。?
與傳統的 BERT?復原單個 token?的預期不同,作者希望通過人為的設定,能夠賦予模型通過上下文來復原整個 span 的能力——當然,精確到 span 中每個具體的 token 時,我們還需要加入當前 token 的位置信息,這就是整個 SBO 任務設計的初衷。?
通過預期的設定,作者也得到了想要的結果:SpanBERT 在 GLUE 的所有實體相關任務上相對傳統 BERT 有更好的表現:
▲?圖3. SpanBERT的結果。作者在很多數據集上做了比較,在此只截取了部分GLUE數據集上的結果
可以看到,SpanBERT 在 QNLI 和 RTE 兩個數據上有非常顯著的提升,此外在 SQuAD1.1 和 2.0 也有明顯的提升(不在圖中)。作者認為 SpanBERT 在 QA 任務上的提升是因為同時聚合了 token level 和 phrase level 的信息。?
篇幅所限(以及作者太懶),對其他比較實驗有興趣的同學,可以去查看原文的第五部分,里面對 QA / Conreference Resolution / Relation Extraction 三類數據集與 GLUE 都做了詳細的評測。另外,作者還在文中詳細論證了 NSP 任務在預訓練任務中的有效性,得到移除 NSP 任務能使模型學得更好的結論,由于與本文核心主題無關,在此不進行詳述。?
Entity信息的使用:WKLM & ERNIE1.0-baidu?
說完 SpanBERT,讓我們認識它另外兩個孿生兄弟:WKLM 與 ERNIE1.0-baidu。與前者不同,后面兩位兄弟都正式使用了知識庫中的 entity 信息,雖然他們的預訓練任務的設計與訓練目標有所不同,但將他們合在一起講,能更好的加深對 mask entity 這一策略的印象。?
話說回來,其實在 SpanBERT 中也已經對 mask entity 這一想法進行了簡單嘗試(當然,作者首先使用了一個現成的 entity 抽取工具來抽取句子中的 entity,詳請參閱原文的 Ablation Test 部分),但是并沒有 work。
對于這個結果,私以為是預訓練的任務 objective 設計與這個任務并不 match(換句話說就是相性不合)導致的,可能造成這種情況的原因是:SBO 中只使用了 entity 前后各一個 token,以及其中各個 token 的位置信息來預測當前 token,對于隨機截取的 span,這個目標設計會 work,因為在絕大多數情況下我們截斷了很多有意義的信息,所以前(后)的那個 token 將對預測 span 中的 token 提供很大的信息量。而對于本身封裝了一個很強信息的命名實體來說,前后的 token 就無法提供那么多信息了,導致這個預訓練任務結果不好。?
舉例來說:?
怎么會這樣呢,明明是我先來的。
這個句子中,如果我們將我先識別成了一個人名,并將它 mask 掉之后,是和先 這兩個 token 并不能給模型重新復原出我這個 entity 提供很好的信息。其實直覺上來講,是的后面一般有更大的可能性是我,相對還好一些,而先這個 token,對于復原任務著實不會提供什么幫助。?
而如果我們采用 SpanBERT 中的隨機 mask,mask 掉了我先之后,前后的單詞反而對這個 span 的關聯性增強了,對于復原其中的每個 token 就能提供更多的信息。?
所以,在 WKLM 與 ERNIE1.0 中,由于使用了外部的知識庫,可以采用更多不同的預訓練任務的定義方式:?
WKLM主要采取的是同類替換的思路,以期增強模型對于事實知識的建模:具體來說,對于某個 entity,我們使用與它同類型的另一個 entity 來替換它,這樣就能構造一個在語法上正確,但是在事實上錯誤的負樣本——當然,原始句子是正樣本。作為訓練目標,我們讓模型來判斷每個 entity 是否被替換,這樣模型就能夠學到因果事實。一個替換的樣本如下圖所示:
▲?圖4. WKLM構造負樣本的一個示例
?
為了實現這個訓練目標,作者定義了增加了一個預訓練的二分類任務,即對于每個 entity 的輸出,模型需要判斷這個 entity 是否被經過替換。當然,傳統 BERT 中的 MLM 任務仍然被保留了下來以建模上下文的關系,但是 token 的 mask 只會在 entity 以外進行,并且 mask 的概率從 15% 減小到了 5%。?
此外,我們需要準備對應的數據以保證訓練任務順利進行。?
-
找到句子中的實體:在 English Wikipedia 中本身已經存在了實體的 anchor link;我們通過 link 找到這個實體以及實體所有的別名,并通過字符串匹配將文本中所有的別名也識別出來,都視作 entity。?
-
構造負樣本:如上文所說,每個原始句子我們都通過替換與原始 entity 相同類型的另一個 entity 來構造對應的負樣本。正負樣本的比例是 1:10;此外,作者限定在不會出現兩個連續的 entity 同時被 mask 的情況,以此來減少雖然兩個 entity 都被替換了,但是替換完以后的兩個 entity 所構造的新句子正好符合事實的情況。?
在使用外部 entity linking 工具的情況下,該預訓練過程可以不僅局限在 English Wikipedia 數據上,所以這個方法也具有很強的擴展性。?
作者在 QA 與 entity typing 的數據集上進行了測試,并對 MLM 進行了 ablation test,事實證明了模型的有效性(For detail,請查閱原文第三部分)。
ERNIE1.0-baidu 采用的思路是多階段學習,請首先容我吐槽一下這個名字,因為清華和華為諾亞實驗室聯合發表的另一篇 paper 也叫 ERNIE(所以我管它叫 ERNIE-thu),從 ELMo 到 BERT 到 ERNIE,使用芝麻街人名作為模型名字屬實是種新常態。?
在知道了 SpanBERT 和 WKLM 的預訓練思路之后,我們可以來這樣總結 ERNIE-baidu 的設計思路:集百家之長。ERNIE-baidu 的預訓練分為了三個階段:?
1. Basic-Level Masking:和傳統 BERT 一樣,以 15% 的概率來 mask 句子中的 token;?
2. Phrase-Level Masking: 和 SpanBERT 一樣隨機 mask 一些 phrase,不同的是 ERNIE 中使用了外部工具來輔助識別句子中的 phrase,然后 mask 整個 phrase,最后通過模型的輸出來復原 phrase 中的每一個 token;?
3. Entity-Level Masking: 與 WKLM 相似,隨機 mask 了 entity。相較于上個階段的 phrase,entity 是一種具體的存在,所以會保有句子中更多更重要的信息。?
在依次通過三個階段的學習過程之后,模型同時具有了詞級別的表示能力,短語級別的表示能力與實體級別的表示能力,把更豐富的語法知識集成到了模型中。?
如此來看,ERNIE-baidu 主要是在預訓練的任務上做了增強。為了進一步增強模型在 QA 上的效果,ERNIE 修改了傳統 BERT 中的 segment embedding,將它原有的標識上下兩個句子的功能轉換為了標識 Query-Response 的功能;在此設定上,就能夠允許模型 encode 多階段的對話信息(如 QRQ、QRR、QQR 等),以期在 QA 任務上有更好的表現。?
作者在語言推理:XNLI、語義相似度:LCQMC、NER:MSRA-NER、情感分析:ChnSentiCorp 與檢索式 QA:NLPCC-DBQA 五個任務上進行了效果的測試。
▲?圖5. ERNIE-baidu實驗結果
結果表明,相對于傳統的 BERT,ERNIE 在五個任務上都有一定的提升,其中在語言推理、NER、情感分析與 QA 上提升相對比較顯著,而在計算語義相似度的任務上提升相對不夠明顯。
私以為這與預定義的訓練目標有著比較直接的關系,因為盡管我們預期的目標是提升模型在語義上的理解,但是實際上 mask entity 這種形式并不能非常直觀的提升模型對于語義的認知(正如我在面試中所理解的那樣,如果 mask entity,直接加強的是模型通過上下文來對短語進行完形填空的能力,我們可以通過定義預訓練的任務來將這種能力不直觀地轉換到其他目標上)。?
讀者可以通過在 AAAI-20 上發表的 SemBERT [11] 來進一步了解如何通過設計預訓練任務的方式來直接地提升模型在語法上面的結果,在此不再贅述。
詞法層面的直接加強:LIBERT
現在,讓我們拋開所有的 entity mask 策略到一邊,重新審視上面引出的問題:?
如何借助外部已有的知識,通過設計預訓練任務的方式,來直觀地加入一些詞法、語法、句法信息到模型中呢?
作為開闊思路的甜點,我們來簡單了解下 Linguistically-informed BERT (LIBERT) 是如何做的。?
除了 English Wikipidea 之外,我們可以在一些其他的知識庫中獲得另外的信息,比如:?
-
從 WordNet 與 Roget's Thesaurus 中能夠獲得同義詞對,如:car & automobile.
-
從 WordNet 中能獲得上下位詞對,如:car & vehicle.
LIBERT 通過以下步驟來生成額外的訓練樣本:?
1. 首先,選擇一個靜態的詞向量生成方法,在給定樣本后能夠產生詞的向量表示;使用這個靜態的詞向量,目的是為了使得我們能夠直觀地衡量兩個詞之間的詞義距離(如文中使用的最直接的cos相似度方法);?
2. 我們將同義詞對與上下位詞對都視為正例,將所有的詞對劃分為指定大小的 batch;?
3. 對于給定的正例詞對?,我們首先找它所在 batch 的所有??中,與當前??相似度最高的詞?,以此構造一個負樣本對?;使用同樣的方法能夠對于 ?也生成一個負樣本;綜上,對于每個正樣本,我們能夠產生兩個負樣本。?
4. 直接將詞對中兩個詞合在一起作為一個句子,并在中間插入一個 [SEP] 符號,前面的詞使用 segment id=0 來標識,后面的使用 1 來標識。
▲?圖6. 通過近義詞對構造的最終輸入形式
值得一提的是,我個人對于第四步的構造方法持比較強烈的懷疑態度,雖然模型最終結果證明了其有效性,但我認為使用 segment id(一個傳統 BERT 中來表示上下句子的符號)來標識不同的詞會給原來的訓練任務造成負面的影響;此外,手動構造的輸入也有太短的普遍情況。總的來說,這樣構造的輸入并不能與原來預訓練的輸入等量齊觀。我也期待看過此文的同學闡述自己對這個任務獨特的理解。
▲?圖7. LIBERT模型結構
模型的預訓練目標是在原本的 MLM 與 NSP 任務上增加了一個任務:Linguistic Constraint Prediction (LCP),即一個二分類標簽,在做線性變換后通過 softmax 來判斷輸入的詞對中的兩個詞是否具有有效的詞法關系(即近義詞或上下位詞)。作者在 GLUE 上測試了預訓練后的模型。?
值得思考的一點是,鑒于語法本身包含了詞法與句法兩個層面,如果我們想要提升模型在整個語法上的理解,我們也可以構造一些從各種層面對模型有益的任務。ERNIE2.0 在這方面做了許多有用的探索,我會在全文末對它進行簡單闡述。?
模型結構的百花齊放:K-BERT與ERNIE-thu
通過上面的了解,我們已經對外部知識所能起到的作用,以及如何基于此設計合適的預訓練任務有了充分的了解。接下來,K-BERT 與 ERNIE-thu 將給我們以結構上的啟發:如何通過修改模型結構,以更匹配我們所想要指定的預訓練任務呢??
ERNIE-thu 給出了一種思路:將 entity 的信息在模型訓練時注入到所對齊的 token 中。?
具體來說,ERNIE-thu 保留了傳統 BERT 中前 6 層 transformer 來建模 token 的上下文信息,并將之后的六層改成了下圖的結構:
▲?圖8. ERNIE-thu模型結構,使用右側的Aggregator替換了原來的BERT后6層transformer
想要把 entity 信息注入到原有 token 中,需要解決三個問題:?
-
如何從句子中提取出一個 entity,并將其與句子中的 token 對齊??
-
在增強 token 信息時,如何提取出 entity 中蘊含的信息??
-
如何具體實現這個增強??
首先,提取 entity 的途徑有許多,上文已經介紹了基于 Wiki 的 anchor link 與外部的 NER 工具,ERNIE-thu 中使用了前者進行實體的提取與對齊。值得注意的是,如圖中所示,作者僅將 entity 與其第一個 token 進行對齊,也即 entity 中的信息只會與這個 token 發生直接的交互。?
為了簡單直接地獲得 entity 中所包含的信息,作者使用了一個知識圖譜的 embedding 工具:TransE [12] 來通過原始的知識圖譜就獲得 entity 的向量表示,隨后作者在模型預訓練過程中控制這個表示不變,來進行信息的交互。這樣做的目的是可以直觀地觀察到僅僅將 entity 的信息注入到原始文本中,將對模型產生什么影響。?
在訓練過程中,句子及其對應的 entity 將同時放入上圖的 Aggregator 中,entity 隨后將通過一個 Multi-Head Attention(下稱 MHA)來建模所有 entity 之間的關系信息,隨后與前面對齊的 token(當然也過了一個 MHA),共同喂到一個 Information Fusion 層(從模型結構上來看,這個 Fusion 層替換了 Transformer 中原來的 FFN)。?
Information Fusion 實現了這樣的一個功能:?
當普通的 token(沒有 entity 信息直接注入)進入該組件后,將直接通過一個 FFN 輸出;
▲?圖9. 普通token在Information Fusion層做的變換,本質上就是一個FFN變換
當有信息注入 token 時,做如下變換:
▲?圖10. Enhance token embed. with entity embed.
對于有 entity 信息注入的 token 來說,該層主要目的是將 entity 信息與 token 信息通過矩陣變換求和,獲得一個集成所有信息的向量,隨后根據這個向量來重新生成 token 與 entity 的分布。?
最后,作者將變換后輸出的 entity embedding 經過 softmax 之后,映射到輸入句子所有的 entity 中的一個(至于為什么不映射到整個知識圖譜的 entity 空間中,作者說是因為這個空間對于 softmax 這個操作來說太大了——盡管如此,個人認為這個設定仍是一個值得商榷的點)。?
作者在 Entity Typing、Relation Classification 與 GLUE benchmark 中測試了模型的結果,發現在前兩個任務中有十分明顯的提升,而在 GLUE 上也與傳統的 BERT 不相上下。
K-BERT 從模型的輸入出發,將輸入的句子進行了巧妙的重新排列,來實現了注入外部知識的目的。?
對于一個已經做完知識圖譜對齊的句子輸入,K-BERT 所做的事情不可謂不簡單粗暴:它直接將與當前實體 e 相關的知識??加入到 e 的后頭,就像下圖里做的那樣:
▲?圖11. K-BERT的輸入
當然,這樣的做法會帶來兩個很嚴重的問題:?
1. 首先,外部的關系(諸如:CEO、Apple、is_a、City 等)的表示會嚴重影響原有句子的分布,加入了很多無關的信息,導致模型學習效果變差;?
2. 其次,在做 MHA 的時候,插入的一些 token 影響了原本句子之間的位置關系,比如原來 Cook 與 is 之間的距離差為 1,現在變成了 3(因為插入了 CEO 與 Apple)。?
K-BERT 做了兩個十分巧妙的變換,解決了上述兩個問題:?
首先,除了傳統 BERT 中的 positonal encoding 方法(對應于上圖的 hard-position encoding)以外,作者提出了另一種編碼模式 soft-position encoding,即上圖紅色標識的數字。這種編碼體系的好處在于允許 token 出現在同一位置,保持了原有 token 之間的位置信息不變。可以看到,這種編碼體系下,Cook 與 is 之間的距離仍然保持為 1;?
其次,盡管我們使用 soft-position encoding 的方式保持了相對位置不變,但是喂到 BERT 模型中做 MHA 時,在絕對位置上 Apple 仍然影響了 is 的信息,因此作者提出了可視矩陣(Visible Matrix),控制了相關的知識之間的相互影響,而避免了知識對原有句子的分布產生影響(作者在文章中管這種影響叫 Knowledge Noise)。
▲?圖12. 圖11中的輸入所對應的可視矩陣:紅點表示相互可視,白點表示不可視
從另一個角度上來考慮,這種做法本質上還是在對齊 entity-relation 與原有句子中的 token,只是 ERNIE-thu 將 entity 對齊到了 entity 所在的第一個 token 中,而 K-BERT 將外部知識對齊到了整個 entity 之上。?
可以預見地,加入了可視矩陣之后,我們需要將原有的 MHA 修改為支持 mask 的形式,也即作者文中所提出的 Masked Multi-Head Attention。?
最后,作者 XNLI、LCQMC 等多個數據集上進行對比實驗,證明了模型結構的有效性。作者也進行了詳細的 Ablation Test,論證了所加入的 soft-position 以及可視矩陣的效果。?
最后之前:ERNIE2.0-baidu
ERNIE2.0 實屬預訓練任務定義之王者,大力出奇跡之踐行者。百度毫不吝嗇地在文中提出了高達7種預訓練任務,涵蓋了單詞級別的大小寫識別、頻率識別與 entity mask(即 ERNIE1.0-baidu),結構級別的句子重排序任務、句間距離預測任務,語義級別的修辭關系與檢索相關度任務,目前仍霸榜 GLUE benchmark。?
為了很好地平衡所有預訓練任務之間的關系,不讓模型遺忘訓練順序靠前的任務,作者也提出了多階段多任務 warm-up 式(我的個人稱法)訓練過程。?
不過有點遺憾的是,作者在文中并沒有給出 Ablation 實驗,來一一比較所有的預訓練任務之間的有效性。
References
[1]?https://arxiv.org/abs/1907.10529
[2]?https://arxiv.org/abs/1810.04805
[3]?https://arxiv.org/abs/1706.03762
[4] https://jalammar.github.io/illustrated-transformer/
[5]?https://arxiv.org/abs/1912.09637
[6]?https://arxiv.org/abs/1904.09223
[7]?https://arxiv.org/abs/1909.02339
[8]?https://arxiv.org/abs/1905.07129
[9]?https://arxiv.org/abs/1909.07606
[10]?https://arxiv.org/abs/1907.12412
[11]?https://arxiv.org/abs/1909.02209
[12]?http://papers.nips.cc/paper/5071-translating-embeddings-for-modeling-multi-rela
??
點擊以下標題查看更多期內容:?
-
AAAI 2020?| 語義感知BERT(SemBERT)
-
從Word2Vec到BERT
-
任務導向型對話系統:對話管理模型研究最新進展
-
后BERT時代的那些NLP預訓練模型
-
BERT的成功是否依賴于虛假相關的統計線索?
-
從三大頂會論文看百變Self-Attention
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 獲取最新論文推薦
總結
以上是生活随笔為你收集整理的浅谈 Knowledge-Injected BERTs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7装好后怎么联网 Win7如何连接
- 下一篇: win10网络打印机没反应怎么办啊 解决