【NLP】 深入浅出解析BERT原理及其表征的内容
本篇介紹目前NLP領域里影響力最大的預訓練模型BERT。首先,大致介紹了BERT里有什么;接著,介紹了BERT的結構和其預訓練的方式;最后,再總結BERT的表征的內容和分布。
作者&編輯 | 小Dream哥
1 BERT是什么?
了解自然語言處理的同學,應該沒有不知道BERT的;甚至連很多自然語言處理圈外的開發的同學,都知道這個模型的厲害。不得不佩服谷歌的影響力和營銷水平,當然,也確實是它的效果有這么棒。
這里就不再說BERT當年是怎么樣橫掃各大NLP任務榜單的故事了。畢竟現在出了個XLnet,各方面都比他強了一點點;而且,也開始有一些論文開始接BERT的短了。
那我們言歸正傳,現在來看看BERT究竟是什么,有什么樣的結構,如何進行預訓練等。
BERT,全稱是Pre-training of Deep Bidirectional Transformers for Language Understanding。注意其中的每一個詞都說明了BERT的一個特征。
Pre-training說明BERT是一個預訓練模型,通過前期的大量語料的無監督訓練,為下游任務學習大量的先驗的語言、句法、詞義等信息。
Bidirectional說明BERT采用的是雙向語言模型的方式,能夠更好的融合前后文的知識。
Transformers說明BERT采用Transformers作為特征抽取器。
Deep說明模型很深,base版本有12層,large版本有24層。
總的來說,BERT是一個用Transformers作為特征抽取器的深度雙向預訓練語言理解模型。
2 BERT的結構
上圖是BERT的模型結構,它由多層的雙向Transformer連接而成,有12層和24層兩個版本。BERT中Transformer的實現與上一期講的Transformer實現別無二致。
要理解BERT,最主要在于它預訓練時采取的方法,下面我們做一個詳細的講解。
3 BERT預訓練模式
(1) Input Representation
我們先看看,BERT網絡接受的輸入是什么,如上圖所示,BERT接受的輸入包括三個部分:
1) 詞嵌入后的Token Embedding,每次輸入總以符號[CLS]的embedding開始,如果是兩個句子,則句之間用[SEP]隔開。
2) 句子類別的符號
3) Position Embedding,這個與Transformer中的一致。
上述三個向量相加,組成BERT的輸入。
(2) Masked Language Model
那么,BERT是通過什么樣的任務進行訓練呢?其中一個是Masked Language Model。BERT會在訓練時遮住訓練語料中15%的詞(實際的MASK機制還有一些調整),用符號[MASK]代替,通過預測這部分被遮住的內容,來讓網絡學習通用的詞義、句法和語義信息。
那么,該怎么理解Masked Language Model呢?我們不妨回想一下高中階段都做過的英語完形填空,我們在做完形填空題目的時候,為了填上空格中的詞,常常需要不斷的看空格詞的上下文,甚至要了解整個段落的信息。有時候,有些空甚至要通過一些英語常識才能得到答案。通過做完形填空,我們能夠學習到英語中很多的詞義、句法和語義信息。BERT的訓練過程也類似,Masked Language Model通過預測[MASK]代替的詞,不斷的“對比”上下文的語義,句法和詞義信息,從而學到了大量相關的知識。
哈哈,不知道BERT的提出者們是不是受中國英語試卷里完形填空題目的啟發呢?
(3) Next Sentence Prediction
BERT的預訓練過程,還有一個預測下一句的任務。就是輸入兩個句子,判斷第二個句子是不是第一個句子的下一句的任務。這個任務是為像QA和NLI這樣需要考慮句子間關系的下游任務準備的。
通過這個任務,BERT獲得了句子級表征的能力。通常,BERT的第一個輸出,即[CLS]對應的輸出,就可以用來當作輸入句子的句向量來使用。
4 BERT到底學到了什么?
(1) 在BERT在預訓練過程中,學習到了豐富的語言學方面的信息。
短語句法的信息在低層網絡結構中學習到;BERT的中層網絡就學習到了豐富的語言學特征;BERT的高層網絡則學習到了豐富的語義信息特征。
上述觀點來自如下的論文,該團隊用一系列的探針實驗,佐證了上述的觀點,對我們進一步了解BERT和更有效的使用BERT有一定的指導意義。
Ganesh Jawahar Beno??t Sagot Djam′e Seddah (2019). What does BERT learn about the structure of language?.
(2)?BERT其實并沒有學習到深層的語義信息,只是學習到了一些淺層語義和語言概率的線索?
最近有一篇論文"Probing Neural Network Comprehension of Natural Language Arguments",討論BERT在Argument Reasoning Comprehension Task(ARCT)任務中是不是其實只是學習到了數據集中一些虛假的統計線索,并沒有真正理解語言中的推理和常識。
事情大概是這樣子,論文作者為了殺殺BERT的威風,挑了自然語言處理中比較難的任務ARCT,并且在測試數據中做了一些“手腳”,想試一試BERT的身手。所謂的ARCT,是一個推理理解的任務。如下圖所示,展示了一個ARCT數據集中的例子。ARCT數據中有一個結論Claim,一個原因Reason,一個論據Warrant,還有一個錯誤論據Alternative。
如上圖所示,是ARCT任務的通用模型結構,就是同時輸入,Claim,Reason和兩個Warrant,預測哪個Warrant是正確的。
論文作者首先在ARCT原始數據集上用BERT進行ARCT任務的預測,發現BERT的效果確實很好,達到71.6±0.04,跟沒有接受過訓練的人員成績接近。
然后,研究人員研究測試數據集發現數據集里面其實隱藏了一些統計線索。簡單的說就是,數據集里正確的Warrant里包含某些詞的概率比錯誤的Warrant要高。例如,只要看到Warrant中包含not就預測其為正確的Warrant就能夠達到60的正確率。
同時,研究人員還做了只把warrant和claim、warrant和reason作為輸入來訓練模型的實驗。實驗發現,BERT的效果也能達到70+。這就好像老師題目都還沒有說完,學生就把答案寫出來,這顯然不太合理的,要么是學生作弊,要么是學生提前把答案背下來了。
最后,研究人員來了一招狠的,就是將數據集中的數據進行反轉和一些詞概率上的平均處理,如下所示:
實驗結果令人驚訝,BERT最好的效果只有53%,只比瞎猜好一點點。
所以,BERT的預訓練過程到底學到了什么呢?
要準確回答這個問題并不容易。但通過上述兩篇論文在兩個維度上對BERT的解析,我們心里應該能夠給BERT一個清晰的定位。BERT是一個強大的預訓練,因其超大的參數量和較強的特征提取能力,能夠從海量的語料中學習到一些語言學和一定程度的語義信息。但是,筆者認為,跟此前的所有NLP模型一樣,它還遠沒有學習到語言中蘊含的大量的常識和推理。例如,利用BERT或許能夠從"天下雨了",推斷出“要帶傘”。但是更深層次的,“要帶傘是因為怕淋濕,淋濕了會感冒”這些BERT是很難學到的。
NLP的難處就在于,語言是高度精煉和情境化的。一句簡單的話,可能需要豐富的知識才能理解。現在來看,預訓練模型是一條有希望但漫長的道路。
總結
BERT是目前最火爆的NLP預訓練模型,其基于MLM和雙向語言模型和以Transformer作為特征抽取器,是其成功最主要的兩個原因。我們先想想,BERT還有哪些地方可以改進的,下周我們介紹XLnet的時候,就可以更好的理解了。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:XLnet:BERT和GPT的結合
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
【NLP】自然語言處理專欄上線,帶你一步一步走進“人工智能技術皇冠上的明珠”。
【NLP】用于語音識別、分詞的隱馬爾科夫模型HMM
【NLP】用于序列標注問題的條件隨機場(Conditional Random Field, CRF)
【NLP】經典分類模型樸素貝葉斯解讀
【NLP】 NLP專欄欄主自述,說不出口的話就交給AI說吧
【NLP】 深度學習NLP開篇-循環神經網絡(RNN)
【NLP】 NLP中應用最廣泛的特征抽取模型-LSTM
【NLP】 聊聊NLP中的attention機制
【NLP】 理解NLP中網紅特征抽取器Tranformer
【每周NLP論文推薦】從預訓練模型掌握NLP的基本發展脈絡
【技術綜述】深度學習在自然語言處理中的應用發展
總結
以上是生活随笔為你收集整理的【NLP】 深入浅出解析BERT原理及其表征的内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识星球】颜值,自拍,美学三大任务简介
- 下一篇: 【知识星球】为什么图像分类任务要从256