狂破11項記錄,谷歌年度最強NLP論文到底強在哪裡?
新智元專欄作者:鄧侃
從2018年年初以來,深度學習在語言處理方面,一直沒有特別靚麗的突破性進展。三天前,2018年10月11日,谷歌人工智慧語言研究組發表了一篇論文,立刻引起業界巨大反響。
這篇論文的題目是,《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。這個題目很直白,一眼望去就能猜得到,這篇文章至少會講到四大問題中的三個,應用場景、模型、訓練數據。
論文地址:
https://arxiv.org/abs/1810.04805
多種應用場景,與通用語言模型
自然語言處理(NLP)的應用場景,從大的方面講,是對於語言文字的智能處理,包括閱讀理解、問答對話、寫作、翻譯等等。這些應用場景,又可以細分成若干任務,包括從一連串字中識別詞,從一連串詞中識別片語、從語句中識別主謂賓定語狀語、從語句中識別語氣情緒、從整篇文章中提煉摘要、根據提問從整篇文章中尋找答案,等等。
這篇論文介紹了一種模型,BERT,它至少能解決 NLP 諸多任務中的 11 種,包括:
* 淘寶上有很多用戶評論,能否把每一條用戶轉換成評分?-2、-1、0、1、2,其中 -2 是極差,+2 是極好。假如有這樣一條用戶評語,「買了一件鹿晗同款襯衫,沒想到,穿在自己身上,不像小鮮肉,倒像是廚師」,請問這條評語,等同於 -2,還是其它?
* 當用戶提問,「兩歲的男孩為什麼食欲不振」,深度學習是否可以從大量書籍中,自動摘錄相關內容,並組織成流暢的語言,回答用戶提問?
用同一種模型,解決多種不同任務。這涉及到一個十分激進的猜想:在以往的實踐中,我們通常為每種具體任務,單獨定製模型。是否存在一種「通用」的語言模型,能夠用它來完成多種不同的任務?
BERT 的研究者們,試圖證明 Deep Bidirectional Transformers就是這樣一種通用的語言模型,它不僅能解決 11 種不同的 NLP 任務,而且在所有任務上的精度,大幅度領先以往其它模型,甚至超越人類。
為什麼 Deep Bidirectional Transformers 能夠擔當通用的語言模型?論文沒有提供嚴格的數學證明,只是用 11 種不同的具體任務,來經驗地驗證這個模型的通用性。
Deep Bidirectional Transformers,這三個詞分別是什麼意思?
假如在一個句子 「中國的首都是北京」中 ,先遮蓋某一個詞,譬如 「首都」。然後,把遮蓋後的殘缺的句子,「中國的[mask]是北京」 ,輸入進電腦,讓電腦猜一猜 [mask] 應該是什麼詞。
電腦可以從前往後猜,也就是根據前文 「中國/的」 ,猜測 [mask] 會是什麼詞。電腦也可以從後往前猜,也就是根據後文 「北京/是」,猜測 [mask] 會是什麼詞。這兩種方式都是單向預測 unidirectional。
很顯然,單向預測不能完整地理解整個語句的語義。於是研究者們嘗試雙向預測。把從前往後,與從後往前的兩個預測,拼接在一起 [mask1/mask2],這就是雙向預測 bi-directional。細節參閱《Neural Machine Translation by Jointly Learning to Align and Translate》。
BERT 的作者認為,bi-directional 仍然不能完整地理解整個語句的語義,更好的辦法是用上下文全向來預測[mask],也就是用 「中國/的/ .. /是/北京」,來預測 [mask]。BERT 的作者把上下文全向的預測方法,稱之為 deep bi-directional。
如何來實現上下文全向預測呢?BERT 的作者建議使用 Transformer 模型。這個模型在《Attention Is All You Need》一文中,被首次提出。論文發表後,立刻引起業界轟動,成為深度學習 NLP 的里程碑式的進展。
Transformer 模型的核心是聚焦機制,對於一個語句,可以同時啟用多個聚焦點,而不必局限於從前往後的或者從後往前的,序列的串列處理。所以,幾乎不用修改 Transformer 的代碼,就可以完成上下文全向的預測任務。
訓練數據與 Pre-training
模型不僅需要功能強勁的結構,而且還必須具備正確的參數,這樣才能擔當通用語言模型,準確理解文章語句的語義。
BERT 這篇論文,嘗試了兩種規模的 transformer 模型。第一個模型的規模較小,總共有 12 層模塊(L=12)、在每個模塊中語義數值向量的維度為 786(H=768)、聚焦探頭 12 個(A=12)。整個小模型,需要訓練的模型參數的總數是 12 * 768 * 12 = 110M。大模型 L=24,H=1024,A=16, 大模型參數的總數是 24 * 1024 * 16 = 393M。
幾億個參數需要訓練,自然需要海量的訓練數據。如果全部用人力標註的辦法,來製作訓練數據,人力成本太大。從哪裡收集這些海量的訓練數據?
2003年發表的《A Neural Probabilistic Language Model》論文,提出一個收集訓練數據的辦法:每一篇文章,從新聞到小說到論文,天生都是訓練數據,不需要額外做人工標註。
受這篇論文的啟發,BERT 研究者們嘗試用以下方法,訓練模型參數。方法分兩步,
1. 把一篇文章中 15% 的辭彙遮蓋,讓模型根據上下文全向地預測被遮蓋的詞。通過預測任務,來初步訓練 Transformer 模型的參數。
假如有 1 萬篇文章,每篇文章平均由 1 千個辭彙構成,隨機遮蓋 15% 的辭彙,那麼模型需要預測 150 萬個辭彙。
2. 用一個新任務,識別兩個句子是否連續,來進一步訓練模型參數。
譬如從上述 1 萬篇文章中,挑選 20 萬對語句,總共 40 萬句語句。在這些語句中,經過第一步的處理,15% 的辭彙被遮蓋(某些細節,不必絮述)。
挑選 20 萬對語句的時候,讓其中一半是上下文中連續的兩個語句,剩餘的一半,由不是連續的兩個語句構成。然後讓 Transformer 模型來識別這 20 萬對語句中,哪些對子是連續的,哪些對子不連續。
這兩步訓練合在一起,稱為預訓練 pre-training。訓練結束後的 Transformer 模型,就是通用的語言模型,BERT。
Pre-training 與 Fine-tuning
預訓練 pre-training 出來的通用模型,能夠正確理解語句和文章的語義。通用模型不能直接用於解決不同的 NLP 具體問題,需要給通用模型穿一件外套。
BERT 論文中的 Figure 3,描述了針對四類不同問題的四種不同外套。
Figure 3
不僅模型需要穿外套,而且外套也有參數,找到這些參數的最優值,是精加工 fine-tuning 的目標。另外,在精加工的過程中,有時也自動地順帶微調 BERT 通用模型的一些參數。
對模型外套進行精加工時,不同具體問題,需要不同的訓練數據。這篇論文,嘗試了 11 種不同問題的多種公開的,經過人工標註的訓練數據集。
模型的參數高達幾億個,用海量的文章作為 pre-training 的訓練數據,再用多種人工標註的訓練數據,來訓練模型,找到模型參數的最優值。不難想像,計算成本非常非常高。
BERT 論文中說,他們動用了谷歌 Cloud AI 資源,用了 64 顆 TPU,算了 4 天,模型參數尋優的訓練過程才收斂。
如果不是用 TPU,而是用普通 GPU,不知道會需要多長時間。
按谷歌 Cloud AI 的正常價格,每訓練一次,需要 9.6 萬人民幣。即便這些天 Google Cloud AI 打七折,也需要 1.4 萬。如果程序有 bugs,需要返工,計算成本相當高。
深度學習 NLP 四大里程碑
前文說到,「一個完整的深度學習系統,通常包括以下四個部分,1. 應用場景、2. 模型、3. 訓練數據、4. 算力」。BERT 這篇論文,一口氣把四個問題,全部說到了。
有業界老師認為,深度學習 NLP 到目前為止,有四大里程碑,分別是,
1. 2003年2月,深度學習大神 Yoshua Bengio,與他的學生共同發表論文《A Neural Probabilistic Language Model》,把深度學習引入自然處理領域,把自然語言的辭彙,轉換成數值向量。從此,自然語言處理的基本研究方法,發生質的飛躍。這是深度學習 NLP 的第一個里程碑。
2. 2016年5月,Sequence to Sequence 技術日臻成熟,尤其是引入聚焦機制,如虎添翼。這是深度學習 NLP 的第二個里程碑,代表作是 Yoshua Bengio 大神與他的學生們,共同執筆的論文《Neural Machine Translation by Jointly Learning Align and Translate》。
3. 2017年6月,谷歌的 Ashish Vaswani 等人,發表論文《Attention Is All You Need》,對 NLP 使用的深度學習模型,做了革命性的改進。這是深度學習 NLP 的第三個里程碑。
4. 2018年10月,谷歌的 Jacob Devlin 等人,發表的這篇 BERT 論文,很可能是第四個里程碑。不僅提議了一個通用的語言模型,而且用非監督的辦法做預訓練,用有監督的辦法做精加工,取得了驚艷的效果。
2018年以後,會發生什麼?很可能會出現若干深度學習 NLP 產品,獲得巨大的商業成功。
※最新GAN教程,153PPT附代碼
※「ECCV 2018」谷歌AI超大規模圖像競賽,中國團隊獲目標檢測冠軍
TAG:新智元 |