近日,谷歌AI團隊釋出的BERT模型已經刷屏各大技術平臺與部落格,燃爆AI的同時,也激起了“迪瓦”的好奇心。BERT模型的全稱是Bidirectional Encoder Representations from Transformers,它是一種新型的語言模型。之所以說是一種新型的語言模型,是因為它與其他語言模型相比,有獨到之處,這個獨到之處在於BERT通過聯合調節所有層中的雙向Transformer來訓練預訓練深度雙向表示。所以,它只需要一個額外的輸出層來對預訓練BERT進行微調就可以滿足各種任務,沒有必要針對特定任務對模型進行修改,這也是為什麼BERT模型能做11項NLP任務上取得突破進展的原因。
想深入瞭解BERT模型,首先應該理解語言模型。預訓練的語言模型對於眾多自然語言處理問題起到了重要作用,比如SQuAD問答任務、命名實體識別以及情感識別。目前將預訓練的語言模型應用到NLP任務主要有兩種策略,一種是基於特徵的語言模型,如ELMo模型;另一種是基於微調的語言模型,如OpenAI GPT。這兩類語言模型各有其優缺點,而BERT的出現,似乎融合了它們所有的優點,因此才可以在諸多後續特定任務上取得最優的效果。
圖1 預訓練模型結構對比圖
下面將從BERT模型的結構、輸入以及訓練三塊進行介紹。
BERT模型總體結構
BERT是一種基於微調的多層雙向Transformer編碼器,其中的Transformer與原始的Transformer是相同的,並且實現了兩個版本的BERT模型,在兩個版本中前饋大小都設定為4層:
lBERTBASE:L=12,H=768,A=12,Total Parameters=110M
lBERTLARGE:L=24,H=1024,A=16,Total Parameters=340M
其中層數(即Transformer blocks塊)表示為L,隱藏大小表示為H,自注意力的數量為A。
BERT模型輸入表示
輸入表示可以在一個詞序列中表示單個文字句或一對文字(例如,[問題,答案])。對於給定的詞,其輸入表示是可以通過三部分Embedding求和組成。Embedding的視覺化表示如圖1-2所示。
圖2 BERT模型的輸入表示
其中:
Token Embeddings表示的是詞向量,第一個單詞是CLS標誌,可以用於之後的分類任務,對於非分類任務,可以忽略詞向量;
Segment Embeddings用來區別兩種句子,因為預訓練不只做語言模型還要做以兩個句子為輸入的分類任務;
Position Embeddings是通過模型學習得到的。
BERT模型預訓練任務
BERT模型使用兩個新的無監督預測任務對BERT進行預訓練,分別是Masked LM和Next Sentence Prediction:
Masked LM
為了訓練深度雙向Transformer表示,採用了一種簡單的方法:隨機掩蓋部分輸入詞,然後對那些被掩蓋的詞進行預測,此方法被稱為“Masked LM”(MLM)。預訓練的目標是構建語言模型,BERT模型採用的是bidirectional Transformer。那麼為什麼採用“bidirectional”的方式呢?因為在預訓練語言模型來處理下游任務時,我們需要的不僅僅是某個詞左側的語言資訊,還需要右側的語言資訊。
在訓練的過程中,隨機地掩蓋每個序列中15%的token,並不是像word2vec中的cbow那樣去對每一個詞都進行預測。MLM從輸入中隨機地掩蓋一些詞,其目標是基於其上下文來預測被掩蓋單詞的原始詞彙。與從左到右的語言模型預訓練不同,MLM目標允許表示融合左右兩側的上下文,這使得可以預訓練深度雙向Transformer。Transformer編碼器不知道它將被要求預測哪些單詞,或者哪些已經被隨機單詞替換,因此它必須對每個輸入詞保持分散式的上下文表示。此外,由於隨機替換在所有詞中只發生1.5%,所以並不會影響模型對於語言的理解。
Next Sentence Prediction
很多句子級別的任務如自動問答(QA)和自然語言推理(NLI)都需要理解兩個句子之間的關係,譬如上述Masked LM任務中,經過第一步的處理,15%的詞彙被遮蓋。那麼在這一任務中我們需要隨機將資料劃分為等大小的兩部分,一部分資料中的兩個語句對是上下文連續的,另一部分資料中的兩個語句對是上下文不連續的。然後讓Transformer模型來識別這些語句對中,哪些語句對是連續的,哪些對子不連續。
主流語言模型對比
Word2vec作為里程碑式的進步,對NLP的發展產生了巨大的影響,但Word2vec本身是一種淺層結構,而且其訓練的詞向量所“學習”到的語義資訊受制於視窗大小,因此後續有學者提出利用可以獲取長距離依賴的LSTM語言模型預訓練詞向量,而此種語言模型也有自身的缺陷,因為此種模型是根據句子的上文資訊來預測下文的,或者根據下文來預測上文,直觀上來說,我們理解語言都要考慮到左右兩側的上下文資訊,但傳統的LSTM模型只學習到了單向的資訊。在今年年初,ELMO的出現在一定程度上解決了這個問題,ELMO是一種雙層雙向的LSTM結構,其訓練的語言模型可以學習到句子左右兩邊的上下文資訊。但此處所謂的上下文資訊並不是真正意義上的上下文。除此之外,OpenAI 的GPT是利用了transform的編碼器作為語言模型進行預訓練的,之後特定的自然語言處理任務在其基礎上進行微調即可。和LSTM相比,此種語言模型的優點是可以獲得句子上下文更遠距離的語言資訊,但也是單向的。BERT的出現,似乎融合了它們所有的優點,並摒棄了它們的缺點,因此才可以在諸多後續特定任務上取得最優的效果。
模型 | 獲得長距離語義資訊程度 | 左右上下文語義 | 是否可以並行 |
Word2vec | 1 | True | True |
單向LSTM | 2 | False | False |
ELMo | 2 | True | False |
OpenAI GPT | 3 | False | True |
BERT | 3 | True | True |
注*並非真正意義上的雙向
BERT模型場景應用
深思考人工智慧(iDeepWise Artificial Intelligence)最為突出的技術是“多模態深度語義理解技術”,可同時理解文字、視覺影像背後的語義,結合公司在具體業務場景,在此我們簡要分析BERT在機器閱讀理解、命名實體識別以及情感計算等應用場景下的前景。
命名實體識別
命名實體是文字中資訊的主要載體,是構建資訊抽取系統的重要組成部分。BERT模型在CoNLL-2003 NER資料集的試驗結果F1值相對於基線模型(CVT+Multi)只提高0.2個百分點,似乎指標上沒有什麼驚豔的表現——模型在實驗上獲得的指標提升遠低於增加的計算成本。但是這種方式可以有效利用已有資料進行預訓練,充分利用先驗知識,在領域遷移性,模型通用型方面有巨大優勢。在命名實體識別,尤其是在開放域實體方面,BERT模型給了我們很大的想象空間,相信以後在開放域實體識別方面會不斷重新整理基線模型的指標。
機器閱讀理解
在機器閱讀理解領域,經過谷歌、微軟、百度、科大訊飛、騰訊、史丹佛大學等在內的眾多研究機構的不懈努力,目前已形成了“向量化-語義編碼-語義互動-答案預測”這樣一套四層機器閱讀理解模型體系。從英文領域的代表SQuAD技術評測到中文領域的代表2018機器閱讀理解技術競賽,Top團隊無一例外的在“向量化”層做足了文章,“向量化”層主要負責將問題及篇章公離散字元轉變為隱含語義的表徵向量,從One-Hot到Word2vec/Glove再到Elmo,這一系列技術的變革都是在最大化的利用無監督的預訓練方式將更多的隱含語義資訊嵌入模型,從而在不用應用場景中提高模型的評測指標。BERT模型則是利用Deep Bidirectional Transformers預訓練一個通用語言模型,從而更好的正確理解語句和文章的語義資訊。通過在SQuAD1.1競賽評測中驚人表現也證實了該模型至少在目前已經開始引領NLP發展的潮流,但能不能最終摘取AI領域最後的皇冠,只能時間去驗證。
情感計算
在情感計算領域,希望可以藉助其強大的語言建模能力來獲得更多的領域知識,進而減少後續特定自然語言任務的人工標註成本。比如:可以先在維基百科或者某些商業售後評論上預訓練語言模型,對相關領域進行“知識學習”,然後結合現有的有監督學習進行情緒識別和情感計算。
.....
總結
語言模型的每一次進步都推動著NLP的發展,從Word2vec到ELMo,從OpenAI GPT到BERT,我們有幸見證著一個又一個記錄被打破,見證著一個又一個AI專案成功落地。在多個應用場景,我們基於“多模態深度語義理解技術”研發的多個AI產品的問世正是眾多NLP核心技術的結晶,它們整合了先進的機器閱讀理解、場景理解、多輪互動、意圖識別、情感計算等能力,為使用者帶來專業、溫馨、體貼的多輪互動體驗。
通過這些發展我們也可以洞悉到,未來表徵學習(Deep learning is representation learning)將會越來越多的應用到NLP相關任務中,它們可以充分的利用目前海量的資料,然後結合各種任務場景,去訓練出更為先進的模型,從而促進AI專案的落地。
未來已來,引領AI,這是我們的使命,也是廣大AI科技工作者的使命。