智東西(公眾號:zhidxcom)
作者 |? 子佩
編輯 |? Panken
如果你在谷歌上搜索“如何在沒有馬路的山上停車”,谷歌會告訴你什么?
如果是兩年前,網頁可能會教你怎么停車或怎么在山上停車,因為它檢測到了“停車”、“山上”這些關鍵字,而忽略了那個看似無關緊要的小詞“沒有”。
但現在,它能在頁面最顯眼的位置,直接向你提供你最關心的問題:如何在沒有車道的山坡上停車。因為它不僅學會找到這些關鍵詞,也學會理解了這些詞之間的聯系。

在搜索引擎“猜”透人心背后,是谷歌的BERT模型逐漸開始理解人類語言。
今年10月,谷歌在“Search On”活動中介紹了數千項AI領域的新應用,其中就包括BERT模型的新進展:已應用于谷歌上近乎所有的英文查詢,適用范圍也拓展至70多種語言,而去年這個時候,BERT在英文查詢中的使用比例不超過10%。
使用比例翻十倍、涵蓋語言增至70余種……自2018年誕生至今,是哪些硬技術賦予BERT“超人類”的語言理解能力,它在NLP屆(自然語言處理,下稱NLP)又有怎樣的“江湖地位”?
今天,就讓智東西和你一起,走過BERT這兩年的進階之路,看看NLP屆如今的半壁江山。
一、誕生即崛起,BERT的發家史
BERT最出圈的“榮耀時刻”是2018年:稱霸機器理解測試SQuAD,橫掃其他10項NLP測試,達成“全面超過人類”成就。
SQuAD是行業公認的機器閱讀理解頂級測試,主要考察兩個指標:EM和F1。

EM指的是模型答案與標準答案的匹配度;F1指的是模型的召回率和精確度。在這兩項上,BERT得分分別87.433和93.160,超過人類的82.3和91.2,被不少研究人員認為,是自然語言領域的重大成就,將會改變NLP的研究方式。
BERT為什么這么牛?
那我們得先看看模型是怎樣“學語言”的。
模型和人一樣,在會說話能閱讀之前,它也需要背單詞、學語法,只是它不是通過語境去理解詞義,而是將單詞轉化為可以計算的向量或者矩陣,再通過神經網絡計算特征權重學會“語法”,從而“理解”人類語言。
BERT誕生于2018年,全名是Bidirectional Encoder Representations from Transformers,從名字上來看,BERT是基于Transformer模型建立的一個雙向編碼器。
Transformer模型起源于機器翻譯領域,拋棄了循環神經網絡(RNNs)中循環式網絡結構方法,利用注意力機制構建每個詞的特征,通過分析詞之間的相互影響,得到每個詞的特征權重。
這種基于注意力的Transformer模型關注的不單是個別詞語,而是詞與詞之間的關系,比起單純地提取詞向量更“善解人意”。

在解決了如何“背單詞”的問題后,下面一步就是怎么學語法。
嵌在BERT名字里的雙向編碼就是它的答案。
如下圖,OpenAI的GPT模型使用的是從左到右的Transformer,即通過分析上文得到下一詞的特征權重,而不能通過下文驗證前文的詞義,而AllenNLP的ELMo通過將獨立訓練的兩個方向結果串聯,生成下游任務特征。

▲BERT與GPT、ELMo的比較
但BERT不僅能同時進行雙向預測,還能通過上下文全向預測。
在BERT面世之前,NLP大廈頭頂上有兩片烏云:標記數據集不足和結果的低準確率。
前者,BERT在無標記數據集中用無監督學習解決;后者,BERT通過加深Transformer層數和雙向編碼的方法精進。
在出生時就帶著橫掃各大賽事的“戰績”,兩年的實戰更歷經無數風雨,現如今的BERT不僅在學界具有里程碑意義,在實際應用這片廣闊天地中更是大有作為。
二、兩年不止步,BERT的進階史
要在網頁搜索屆呼風喚雨,谷歌的真本事當然不止BERT一個,用于搜索引擎優化的Panda、Penguin、Payday,打擊垃圾郵件的Pigeon以及名聲在外的網頁排名算法Pagerank……每一塊小模組都各司其職,組成了谷歌搜索的“最強大腦”。

BERT是在一歲時,也就是2019年10月15日,正式加入谷歌搜索的算法大腦,承擔在美國境內的10%英文查詢中。
“深網絡”、“雙通路”的BERT不僅能“猜心”,還能識錯。
據谷歌統計,在每十次搜索中,就會出現一個拼寫錯誤,如下圖用戶想搜索dinner,卻誤輸成dibber,但BERT可以繞過這個錯誤,直接識別出用戶意圖,提供餐館位置。

兩個月后,BERT開始承擔70多種語言的搜索任務。
一年后,BERT在谷歌搜索中使用比例近乎100%,憑借出色的理解能力,替代上一代查詢工具RankBrain,成為搜索大腦的王牌。
在這“高分高能”的實績背后,是BERT模型一直的默默進階。
2019年12月,通過更加有效地分配模型容量、簡化Transformer隱藏層中的參數和冗余度檢查,BERT在性能提升的同時減少計算量,升級為更為輕量級ALBERT。
2020年3月,受生成對抗網絡(GAN)的啟發,BERT改進了預訓練方式,減少了模型訓練的時間,從而可以在更少的計算量內達到相同的文本識別效果,衍生出了ELECTRA模型。
2020年8月,BERT內引入了多語言嵌入模型,實現不同語言間互譯,讓用戶可以在更大范圍內搜索有效信息。
2020年10月,BERT著眼于減少模型本身的“偏見”,利用模型評估指標來調整預訓練模型中的參數,減少搜索時可能出現的性別種族歧視。
從10%到100%,帶著滿分出生的BERT并沒有固步自封,而是不斷地順應時代的需求,一次又一次地自我更新,用更少的訓練時間、更小的計算量達到更為優越的性能。
今年十月,谷歌公布了BERT在搜索領域的表現,除了擴大應用范圍和可應用的語言外,BERT將谷歌在學術檢索上的準確率提高了7%。
谷歌也表示,會在未來利用BERT模型繼續精進搜索算法,擴大搜索的范圍,提高搜索的精度。
三、BERT開球,百家爭鳴
BERT的貢獻遠不止是提升谷歌搜索性能或者獲得“機器超過人類”的名號,而是作為一個泛化性極強的通用模型,為今后NLP屆開辟了一條光明的研究賽道。

▲圖源網絡
以BERT為分界線,NLP領域可以分為動態表征模型(Dynamic Representation)時代和深度動態表征模型(Deep Dynamic Representation)時代,在前一個時代,標注數據集的不足和單向編碼器限制了模型的可拓展性;而在后一個時代,基于BERT發展出來的方法,“支棱”起了NLP屆半壁江山。
改進BERT的方法千千萬,其中大概可以分為兩個方向:一是縱向,通過改進Transformer層的結構或者調整參數,得到更加輕量級的模型,例如之前提及過的ALBERT模型;二是縱向,通過在BERT模型中延伸其他算法模型,拓展BERT模型的功能,如受GAN影響誕生的ELECTRA模型。
在BERT逐漸發揮影響力、實現應用落地的同時,NLP屆的新秀也輪番亮相。
2019年出現的XLNet和2020年出現的GPT-3就是殺出重圍的兩員大將。
XLNet,在BERT的基礎上,加入了自回歸的預訓練方法,得到一個既擅長語義理解也擅長語義生成的模型,補齊了BERT模型在長文閱讀、以及文字生成方面的短板。
而GPT-3更是來勢洶洶,作為OpenAI旗下第三代深度語言學習模型,它自帶1705億個參數,是前一代模型GPT-2的100倍,經過5000億個單詞的預訓練,在無微調的情況下,取得多個NLP基準測試上的最高分數。

與此同時,GPT-3也解決了BERT模型存在的兩個問題:對標注數據的依賴,以及對訓練數據集的過擬合,旨在成為更通用的NLP模型。
基于更大的數據集和更多的參數,GPT-3不僅能搜索網頁,還能答題、聊天、寫小說、寫曲譜,甚至還能自動編程。
在目前的調試階段,GPT-3也暴露出了包括仇恨言論、錯誤信息等許多問題,所以縱使頂著NLP界最強后浪的名號,它目前暫時還無法像前輩BERT一樣,落地應用,為人類帶來價值。
結語:NLP新時代,BERT不缺席
自然語言處理(NLP)領域有很多細分方向:文本分類、機器翻譯、閱讀理解、機器人聊天……每一個子題都對應著人工智能在現實生活中的實際應用:網頁檢索、自動推薦、智能客服……
如何讓人工智能真正走入我們的生活,第一個要解決的問題就是如何讓機器真正地理解我們想要什么。
BERT讓我們邁出了一大步,基于自監督學習處理無標記數據,再通過雙向編碼理解文義,BERT打破了之前訓練數據需要標記的“魔咒”,充分利用了大量無標記文本,是NLP屆里程碑式的革新。
從誕生、進階到衍生出一系列語言模型,已經兩歲的BERT用時間證明了自己的巨大潛力,或許在未來,它將融合進新的應用,為我們帶來意想不到的AI革命。
參考資料:谷歌AI blog、Rock Content、searchengineland