開啟NLP新時代的BERT模型,是怎麼一步步封神的?

naojiti發表於2018-12-13

NLP領域的伸手黨們,上個月簡直像在過年!

不僅號稱谷歌最強NLP模型的BERT如約開源了,而且最新版本還支援中文,可以用於中文命名實體識別的Tensorflow程式碼!最關鍵的是,這個強大的模型還橫掃11項記錄,"閱讀理解超過人類"。

谷歌團隊的Thang Luong更直接宣告:BERT模型開啟了NLP的新時代。“BERT在手,天下我有”的既視感啊!

人工智慧漫長的發展史上,能夠讓行業“鑼鼓喧天,鞭炮齊鳴”的演算法模型還真不多見。不過,在跟風成為這個模型的舔狗之前,我們先來扒下它的外衣,看看到底有沒有那麼神奇。

開啟NLP新時代的BERT模型,是怎麼一步步封神的?


什麼是BERT模型?

這個讓全球開發者們為之歡欣鼓舞的新模型,全稱是Bidirectional Encoder Representation from Transformers,即對Transformer的雙向編碼進行調整後的演算法。

這種預訓練模型所針對的核心問題,就是NLP的效率難題。

眾所周知,智慧語音互動要理解上下文、實現通順的交流、準確識別物件的語氣等等,往往需要一個準確的NLP模型來進行預測。

但越是精準的模型,越是依賴於海量的訓練語料,往往需要人工來進行標註和製作,因此,透過某種模型來預訓練一個語言模型,幫助進行超大規模的表徵學習,就成了一種靠譜且被廣泛採用的方法。

而傳統採用的預訓練模型,比如AI2的 ELMo,以及OpenAI的fine-tune transformer,也同樣需要透過人力標註來製作訓練資料。

譬如說常用的中文漢字有3500個,詞彙數量50萬,製作中文語言預訓練模型的引數數量自然也就十分龐大,中文的預訓練模型需要對每個都進行人工標註,這就又陷入了“有多人工就有多少智慧”的死衚衕。

那麼,呱呱落地的BERT為什麼能解決這一問題呢?它的優勢主要體現在三個方面:

1. BERT擁有一個深而窄的神經網路。transformer的中間層有2018,BERT只有1024,但卻有12層。因此,它可以在無需大幅架構修改的前提下進行雙向訓練。由於是無監督學習,因此不需要人工干預和標註,讓低成本地訓練超大規模語料成為可能。

開啟NLP新時代的BERT模型,是怎麼一步步封神的?


2. BERT模型能夠聯合神經網路所有層中的上下文來進行訓練。這樣訓練出來的模型在處理問答或語言推理任務時,能夠結合上下文理解語義,並且實現更精準的文字預測生成。

3. BERT只需要微調就可以適應很多型別的NLP任務,這使其應用場景擴大,並且降低了企業的訓練成本。BERT支援包括中文在內的60種語言,研究人員也不需要從頭開始訓練自己的模型,只需要利用BERT針對特定任務進行修改,在單個雲TPU上執行幾小時甚至幾十分鐘,就能獲得不錯的分數。

用一些開發者的話來說,就是BERT的“效果好到不敢相信”,這也是其快速躥紅的核心原因。

BERT是如何工作的?

這樣厲害的模型,是怎樣被訓練出來的呢?主要分為五個步驟:

首先,將語料中的某一部分詞彙遮蓋住,讓模型根據上下文雙向預測被遮蓋的詞,來初步訓練出通用模型。

然後,從語料中挑選出連續的上下文語句,讓transformer模型來識別這些語句是否連續。

這兩步合在一起完成預訓練,就成為一個能夠實現上下文全向預測出的語言表徵模型。

最後,再結合精加工(fine tuning)模型,使之適用於具體應用。

開啟NLP新時代的BERT模型,是怎麼一步步封神的?


而BERT應用起來也非常簡單,具體到什麼程度呢?個人開發者可以在任意文字語料庫上完成“預測下一句”之類的任務。

只需要進行資料生成,把整個輸入檔案的純文字做成指令碼儲存到記憶體,就可以用BERT進行預訓練了。

透過一段簡單程式碼,預訓練20步左右,就能得到一個基礎的NLP任務模型。如果想在實際應用中有更好的表現,訓練10000步以上也不會花費很長時間。

開啟NLP新時代的BERT模型,是怎麼一步步封神的?


從上述實驗成果來看,似乎可以直接得出結論:BERT開啟了一個NLP的新世界!

以前我們總是吐槽機器翻譯、自然語言理解等NLP技術都是“實驗室的人工智慧,生活中的“人工智障”,而且每個廠商的語音產品似乎都停留在用論文和跑分隔空叫板,實際應用場景上體驗感其實差異並不明顯。但BERT的出現,不僅讓機器語言理解上有了更好的效果,尤其是上下文理解和文字生成上,表現十分驚豔。更重要的是,它為自然語言處理技術帶來的新想象空間。

封神之前,BERT還要面對哪些問題?

說到這裡,是不是已經有種“有條件要上BERT,沒有條件創造條件也要上BERT”的感覺了?

別急,BERT模型看起來很美好,但並不是一枚誰拿來都能快速見效的“救心丸”,至少有三點需要額外注意:

一是開銷巨大,在GPU上跑一次成本很高,而Google推薦的雲TPU價格雖然低廉(500美元),卻需要兩週時間。

二是資料規模要求高。如果沒有足夠龐大的訓練語料,很難在針對性開發中復現同樣的評測效果。

三是BERT無法單獨完成計算問題,需要後續任務補全推理和決策環節。而且BERT本身是無監督學習,因此不能直接用於解決NLP問題,往往需要結合現有的有監督學習以避免演算法歧視或偏見。

目前看來,BERT的魅力雖然讓開發者和企業們難以抗拒,但也存在著諸多門檻,想要見效並不是一朝一夕的事兒。但它能夠被人吹爆,並不僅僅只是因為演算法和資料上的突破,真正的價值還是隱藏在對產業端的推動力量。

BERT帶來的想象空間

眾所周知,自然語言處理技術被稱為AI領域的明珠,但在產業端,智慧語音企業對於自家技術的競爭力,不是宣傳又在SQuAD這樣的頂級賽事中跑了多少分,就是基於各自的資料集大吹特吹準確率。但是,彼此之間的資料往往都十分焦灼,很難真正拉開差距。

而BERT的出現,顯然為智慧語音技術公司的競爭帶來了全新的關鍵要素,那就是效率,以及成本。

BERT的橫空出世,抹平了訓練語料的人工標註成本,讓超大規模的模型訓練不再遙不可及,從而使得產業端研發出互動更友好、理解力更高的語音互動產品成為了可能。

另一方面,在垂直應用端,多種語言支援和低成本地針對性訓練,讓BERT可以很快在垂直領域進行部署,大大提升了智慧語音的配置效率和應用範圍,為NLP的產業端實錘落地提供了長期發展的支撐力量。

解決了模型和應用的問題,NLP領域的新賽道自然就落在了語料和算力上。

想要藉助BERT訓練出更精準、更好的應用模型,考驗著企業的兩方面能力:一個是訓練語料的規模;一個是強大算力的支撐。

BERT使用了超大的資料集(BooksCorpus 800M + English Wikipedia 2.5G單詞)和超大的算力(對應於超大模型)來在相關的任務上做預訓練。未來,是否有足夠的訓練語料來複現同樣的效果,又是否足夠的GPU(背後就是錢)來支撐跑BERT,將是智慧語音技術企業拉開身位的關鍵。

開啟NLP新時代的BERT模型,是怎麼一步步封神的?


總而言之,BERT在NLP界還是個新生事物,但已經有了封神的潛質。比此前的解決方案更優秀,更有發展潛力。

不過,對資料規模和算力的要求,以及與自身業務的耦合,也在無形中提升著智慧語音的門檻和成本。

從這個角度看,最終能夠藉助BERT拉開競爭區位的,要麼是搜狗、阿里、百度這樣以搜尋、電商為主業的大資料“富一代”,要麼是憑藉強大效率與業務創新實現“彎道超車”的新獨角獸,接下來恐怕可以激發不少新腦洞和解題思路。

無論如何,BERT的出現,終於讓專注“跑分”和“隔空叫板”的NLP領域,多了一些更有趣的想象力。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2285085/,如需轉載,請註明出處,否則將追究法律責任。

相關文章