全文共2975字,預計學習時長6分鐘
自然語言處理領域中最具突破性的發展是BERT的發布(曾被認為是自然語言處理領域的ImageNet)。與傳統的自然語言處理模式相比,BERT層次最高,是具有革命性意義的自然語言處理模式。這給很多現有的計算機邏輯框架、訓練方法、語言模型帶來了啟發,比如說谷歌的TransformerXL, OpenAI’sGPT-2, ERNIE2.0, XLNet, RoBERTa等等。
讓我們一起來了解一下BERT,及其在轉換自然語言處理方面的潛力。
什麼是BERT?
BERT(Bidirectional EncoderRepresentations from Transformers)是由谷歌的研究者於2018年開發的 一款開原始碼的NLP預訓練模型。它是GPT(廣義語言模型)的延續,BERT在自然語言處理中優於其他幾種模式並且在問答(SQuAD v1.1)、自然語言推理 (MNLI),和其他框架中提供了最優結果。
BERT建立於預訓練上下文表徵的基礎上——包括半監督序列學習(由Andrew Dai和Quoc Le提出)、ELMo(由Matthew Peters和來自AI2和來自UW,、CSE的研究人員提出)、ULMFiT(由fast.ai 創始人Jeremy Howard和Sebastian Ruder提出)、OpenAI transformer(由OpenAI研究人員Radford、Narasimhan、Salimans和Sutskever提出)和Transformer (Vaswani等人提出)。
BERT之所以在其他框架中如此獨一無二,是因為它首次使用深層雙向無監督語言表徵和在預訓練中只使用純文本語料庫。因為BERT是開源的,所以任何人只要懂得機器學習知識,就能輕鬆地建立起一個NLP模型,且無需使用訓練模型的大量源數據集。因此,節約了時間、精力、知識和資源。
最後,在未標記文本的大型語料庫中對BERT進行預訓練,該語料庫包括維基百科(大約25億字)以及一個圖書語料庫(大約8億字)。
BERT怎樣運作的?
傳統的與上下文無關模型(如word2vec或GloVe)為詞彙表中的每個單詞生成一個單獨的單詞嵌入表徵,這意味著單詞「right」在「I 'm sure I 'm right」和「Take a right turn」中具有相同的上下文無關表徵。
但是,BERT是基於上下文的,所以它是雙向的。雖然雙向的理念已經存在很長時間了,但是BERT是首次在深層神經網絡成功實行預訓練雙向性的案例。
BERT是怎麼實現這一點的?
BERT使用兩種技術。一種是MLM(Mask Language Model)模型—通過屏蔽輸入中的一些單詞,然後對每個單詞進行雙向條件設置,以預測屏蔽的單詞。在將單詞序列輸入轉換器BERT之前,每個序列中15%的單詞被替換為一個[MASK]指令。該模型試圖根據序列中其他非屏蔽詞提供的上下文來預測屏蔽詞的初始值。
第二種技術是NSP(Next Sentence Prediction),BERT學習將句子間的關係進行模型。在訓練過程中,該模型接收成對的句子作為輸入,並學習預測其中的第二個句子是否是原文檔中的第二個句子。考慮兩個句子A和B, B是語料庫中A後面的下一個句子,還是一個隨機的句子?例如:
當訓練BERT模型時,兩種技術一起訓練,因此將兩種策略的組合損失函數最小化。
BERT架構
BERT是深度雙向的,OpenAI GPT是單向的,而ELMo是淺層雙向的。圖片來源:谷歌AI博客
BERT架構建立在Transformer之上。有兩種變體:
BERT Base: 12層(transformer blocks),12個注意事項,1.1億個參數BERT Large:24層(transformer blocks),16個注意事項,3.4億個參數
結果
在SQuAD v1.1表格中,BERT的F1分數達到93.2%(測量的準確性),超過了以前最先進的分數91.6%和人類層面的91.2%的得分:BERT在絕對非常具有挑戰性的GULE基準下也提高了到了最先進的7.6%,這是一組9個多樣化的自然語言理解(NLU)任務的集合。
BERT能在現實中應用嗎?
BERT無疑是機器學習用於自然語言處理的一個裡程碑。但是我們需要反思BERT如何在各種自然語言處理場景中使用。
文本分類是自然語言處理的主要應用之一。例如,這個概念已經在票務工具中有所使用,根據簡短的描述或電子郵件對票務進行分類,並將票務分類/發送到正確的團隊進行解決。同樣,它也可以用來區分電子郵件是否是垃圾郵件。
在日常生活中也可以找到BERT的一些應用。
郵件的建議回復、智能撰寫和谷歌搜索的自動完成
聊天機器人能回答用戶查詢和處理各種任務,這正影響著著信息產業。然而,聊天機器人的最大限制之一是意圖識別和從句子中捕獲詞語。
問答模型(QnA)是自然語言處理的基本系統之一。在QnA中,基於機器學習的系統從知識庫或文本段落中生成作為輸入的問題的答案。BERT 能夠在聊天機器人中使用嗎? 毫無疑問,可以。BERT現在被用在許多人工智慧對話應用中。所以,聊天機器人應該變得更聰明。
但是,BERT只能用於回答非常短的段落中的問題,而且有很多關鍵問題需要解決。作為一種通用的任務,NLP過於複雜,具有更多的含義和微妙之處。BERT只解決了其中的一部分,但肯定很快就會改變字詞識別模型。
BERT如今只能解決有限的一類問題。然而,還有許多其他的任務,如情緒檢測、分類、機器翻譯、命名實體識別、摘要和問題回答,都需要在此基礎上進行。現在關於BERT有這樣的批評意見:這樣的任務是基於對表象的操縱,沒有任何理解,添加簡單的對抗性內容,修改原始內容,會使其混淆。
BERT只有在操作中廣泛使用並在實際場景中得以改進,它的真正好處才能在自然語言處理中實現,從而應用在支持企業和用戶的廣泛應用程式中。
然而,隨著一波基於轉換的方法(例如,GPT-2、RoBERTa、XLNet)的出現,情況正在迅速變化,這些方法通過展示更好的性能或更簡單的訓練或其他一些特定的好處來不斷提高標準。
來看看BERT發布之後的其他模型的發展情況
RoBERTa
RoBERTa由Facebook開發,建立在BERT的語言屏蔽策略上,並修改了BERT中的一些關鍵超參數。為了改進訓練過程,RoBERTa從BERT的預訓練中刪除了NSP任務,並引入了動態掩蔽,使得掩蔽的令牌在訓練期間發生變化。它也接受了比BERT多一個數量級的訓練,所需時間更長。
DistilBERT
DistilBERT由HuggingFace開發,學習了BERT的一個提取(近似)版本,在GLUE標準下保持95%的性能,但只使用了一半的參數(只有6600萬個參數,而不是1.1億個參數)。這意味著,一旦一個大型的神經網絡被訓練,它的全部輸出分布可以用一個更小的網絡來近似(比如後驗近似)。
XLM/mBERT
XLM由Facebook開發,使用了一種已知的預處理技術(BPE)和一種與BERT一樣的雙語言訓練機制,用以學習不同語言單詞之間的關係。在多語言分類任務中,該模型的表現優於其他模型,並且當使用預先訓練的模型初始化翻譯模型時,該模型顯著地改進了機器翻譯。
ALBERT
ALBERT(一種用於自我監督語言表徵學習的精簡型BERT)由谷歌研究中心和豐田技術研究所聯合開發,將會接替BERT。ALBERT比BERT更小、更輕、更聰明。兩個關鍵的架構變化使ALBERT性能更好,並極大地減小了模型的大小。第一個是參數的數量。它通過跨所有層共享所有參數來提高參數效率。這意味著前饋網絡參數和注意參數都是共享的。
研究人員還將隱藏層的大小與詞彙嵌入的大小分開。這是通過將一個獨熱向量投射到一個低維嵌入空間,然後投射到隱藏空間來實現的,這使得在不顯著增加詞彙表嵌入的參數大小的情況下,更容易增加隱藏層的大小。
談及預訓練,ALBERT有自己的訓練方法,叫做SOP(Sentence-Order Prediction),而不是NSP。NSP的問題在於,它將主題預測與相干預測混為一談。
ALBERT代表了幾個基準上自然語言處理和參數效率的最新技術。這是一個驚人的突破,ALBERT建立在BERT所做的偉大工作上,並在多個方面發展了自然語言處理。
BERT和類似的模型無疑是自然語言處理領域遊戲規則的變革者。機器現在可以更好地理解語音,並實時做出智能響應。許多基於BERT的模型正在開發,包括VideoBERT、ViLBERT(視覺和語言BERT)、PatentBERT、DocBERT等。
你對NLP和BERT的未來有什麼看法?
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範