分享嘉賓:孫宇,百度NLP主任研發架構師、語義計算技術負責人。本文根據做者在「2019天然語言處理前沿論壇」語義理解主題的特邀報告整理而成。git
**本報告提綱分爲如下3個部分:
· 語義表示
· 語義匹配
· 將來重點工做**
語義計算方向在百度NLP成立之初就開始研究,研究如何利用計算機對人類語言的語義進行表示、分析和計算,使機器具有語義理解能力。相關技術包含語義表示、語義匹配、語義分析、多模態計算等。github
本文主要介紹百度在語義表示方向的技術發展和最新的研究成果艾尼(ERNIE),同時也會介紹工業應用價值很大、百度積累多年的語義匹配SimNet的相關內容,最後再談談將來的重點工做。算法
計算機理解語言是一個具備很大挑戰的問題。人類在理解語言的過程當中,除了語言符號自己的識別,還包含符號背後的語義和知識。舉個例子,當人看到「計算機」這個符號時,腦子裏能迅速浮現出計算機的畫面以及和計算機相關的知識和概念,可是這對於計算機就比較困難。因此如何讓計算機可以表示語言是研究的重點,讓其既可以蘊含語義信息又能夠計算。網絡
當前主要有兩類方法,一是基於形式化規則的方法,如經過構建語義關係網絡來描述語義的信息;二是基於統計的方法,包括主題模型、Word Embedding等技術。架構
2007年百度便開始語義表示研究,最開始的思路是利用搜索引擎來完成。經過搜索引擎把要表示的句子或者詞語檢索出來,再根據檢索的結果經過Term的分析以及網頁的分析,把相關的詞、信息抽取出來,作成語言符號的表示。可是這個表示實際上停留在原始詞彙空間,表示的空間大小依然是詞表的維度,只是相對於One-Hot的表示來講更精細,這個方法是基於1954年Harris提出來的「上下文類似的詞,其語義也類似」的假設。框架
此後,百度又研究了Topic Model的語義表示技術,這種方法的核心思路是把文檔詞彙空間降維,將文檔映射到淺層主題的分佈上,而這種主題空間要比詞的分佈空間更小一些。經過降維的方法,能夠獲得每一個詞到主題的映射,經過這種主題的方法作語義的表示。分佈式
當時百度主要解決的問題是怎樣作這種新文檔的表示,難點是超大規模語料訓練、Online EM、MPI並行化。此外,百度還將自研的主題模型以及一些主流的主題模型整理爲工業應用工具,對外開源了百度NLP主題模型工具包FAMILIA。工具
深度學習技術興起,基於Word Embedding的表示佔了主流,此類技術在各類NLP任務中也表現出色。從NNLM到如今BERT的技術,取得了不少進展。2013年的Word2vec成爲NLP標配性的初始化向量,2018年有了上下文相關的詞向量ELMo等。
從2013年到2016年,百度也大力投入到Word Embedding的研究,主要研究工做是在工業界如何用大規模分佈式從海量數據中計算詞向量。好比,怎麼才能高效訓練規模爲1T的語料?如何構建大規模分佈式文本計算?此外,算法上咱們也有一些研究,好比,如何在一百萬超大規模的詞表裏完成Softmax分類?咱們經過一些策略和技術,作成啓發式Hierarchical Softmax的方法,從而有效地提高分類的效率。2016年,百度把訓練的1T的網頁數據和100萬詞表規模的詞向量對業界進行了開放。性能
BERT的核心思路仍是大力出奇跡,它利用了大規模的無監督數據,同時藉助Transformer這種高性能的Encoder的能力,在MASK建模任務上作了一些優化,致使這個效果可以在各個任務上顯著提高。學習
百度實際在2017年進行了這方面的探索,當時是研究基於對話的口語理解問題,這個問題的核心是作意圖的分類和槽位的標註。難點在於口語理解的問題標註語料很是少。當時想能不能利用海量的搜索語料作Pre-Training,把這個Model做爲初始化模型用到下游的SLU任務裏。
咱們採用20億搜索的Query,經過LSTM模型作單向Language Model的預訓。咱們發如今SLU任務上,在各個垂類上樣本數的增長很是顯著,從10個樣本到2000個樣本。但遺憾的是,當時研究的是一個超小規模數據上效果,即2000的數據,在2萬甚至是20萬的數據上的表現並無研究,同時在其餘應用的通用性上的研究也不夠充分。
BERT提出後,咱們發現一個問題,它學習的仍是基礎語言單元的Language Model,並無充分利用先驗語言知識,這個問題在中文很明顯,它的策略是MASK字,沒有MASK知識或者是短語。在用Transformer預測每一個字的時候,很容易根據詞包含字的搭配信息預測出來。好比預測「雪」字,實際上不須要用Global的信息去預測,能夠經過「冰」字預測。基於這個假設,咱們作了一個簡單的改進,把它作成一個MASK詞和實體的方法,學習這個詞或者實體在句子裏面Global的信號。
基於上述思想咱們發佈了基於知識加強的語義表示ERNIE(1.0)。
咱們在中文上作了ERNIE(1.0)實驗,找了五個典型的中文公開數據集作對比。不論是詞法分析NER、推理、自動問答、情感分析、類似度計算,ERNIE(1.0)都可以顯著提高效果。
英文上驗證了推廣性,實驗代表ERNIE(1.0)在GLUE和SQuAd1.1上提高也是很是明顯的。爲了驗證假設,咱們作了一些定性的分析,找了完形填空的數據集,並經過ERNIE和BERT去預測,效果如上圖。
咱們對比了ERNIE、BERT、CoVe、GPT、ELMo模型,結果如上圖所示。ELMo是早期作上下文相關表示模型的工做,但它沒有用Transformer,用的是LSTM,經過單向語言模型學習。百度的ERNIE與BERT、GPT同樣,都是作網絡上的Transformer,可是ERNIE在建模Task的時候作了一些改進,取得了很不錯的效果。
在應用上,ERNIE在百度發佈的面向工業應用的中文NLP開源工具集進行了驗證,包括ERNIE與BERT在詞法分析、情感分類這些百度內部的任務上作了對比分析。同時也有一些產品已經落地,在廣告相關性的計算、推薦廣告的觸發、新聞推薦上都有實際應用。目前模型已經開源(http://github.com/PaddlePaddle/ERNIE),歡迎你們去下載。
7月31日,百度艾尼(ERNIE) 再升級,發佈了持續學習語義理解框架ERNIE 2.0,同時藉助飛槳(PaddlePaddle)多機多卡高效訓練優點發布了基於此框架的ERNIE 2.0 預訓練模型。該模型在共計16箇中英文任務上超越了BERT 和XLNet,取得了SOTA 效果。
語義匹配在工業界具備很是大的技術價值,它是一個很基礎的問題,不少產品、應用場景都會用到它。不少問題也能夠抽象爲語義匹配問題,好比,搜索解決的是Query和Document相關性的問題,推薦解決的是User和Item關聯度、興趣匹配度的問題,檢索式問答解決的是問題與答案匹配度,以及檢索對話Query和Response的匹配問題。因爲語言比較複雜,匹配靠傳統的方法是比較難的。
百度搜索在匹配類似度計算方面作了較多工做,包括挖掘同義詞、詞級別泛化、語義緊密度、對齊資源挖掘、共線關聯計算等。
2013年百度提出SimNet技術,用於解決語義匹配的問題。這個技術基於DNN框架,沿襲Word Embedding的輸入,基於End-to-End的訓練作表示和匹配,並結合Pairwise訓練。當時,微軟也提出了DSSM,中科院、CMU等研究機構也作了不少語義匹配研究工做。
這幾年,百度總體上從語義匹配的框架上作了升級,抽象了三個層次,改進了基礎算法,包括擴展針對不一樣場景的模型,好比字和語義的匹配模型;在不一樣的應用場景,針對問題網頁和問題答案的匹配狀況分別作了針對性地優化,集成到了匹配框架裏。
匹配算法主要有兩種範式,一種是基於表示的匹配,首先把天然語言表示成向量,而後再進行類似度計算,這方面也有一些改進,主要是作一些Attention;另外一種新匹配範式Interaction-based Model,強調更細的匹配,即一個句子的表示再也不是一個向量,而是原來的Term,並把原來的位置信息保留,最後以Attention的方式表示,讓匹配更加充分和精細。
關於SimNet技術前瞻性工做,2019年百度在IJCAI上發表了一篇論文「RLTM:An Efficient Neural IR Framework for Long Documents」,其中長文本匹配有一個很大的挑戰,就是讓Document直接作表示,若是文本太長,不少信息會丟失,計算效率也很是低。但若是咱們先作一個粗匹配,選擇好相關的句子之後再作精細化的匹配,效果就比較不錯。
SimNet技術在百度應用很是普遍,包括搜索、資訊推薦、廣告、對話平臺都在使用。
搜索是百度很是重要的產品,搜索有兩個核心功能,下圖的左側上方是搜索的精準問答,經過問答技術把精準答案直接呈現出來;下方是天然排序,主要採用LTR框架和相關性、權威性、時效性等Features。
SimNet在百度搜索的發展能夠分爲三個時期。萌芽期,上線了BOW Model,這是業界第一次在搜索引擎上線DNN模型;發展期,作了CNN、RNN,並把知識融合進RNN,在語義相關性計算中,除了標題不少其餘文本域在相關性建模中也很重要,因此,咱們還作多文本域融合匹配的Model;拓展期,除了相關性,在權威性、點擊模型和搜索問答上都有推廣和使用。
在搜索中,SimNet是用超大規模用戶反饋數據訓練。那麼如何依靠海量數據來提高效果?頻次如何選?咱們發現模型應用效果並非靜態的,而是動態變化的,特別是搜索反饋的數據,隨着時間的推移,網民在搜索的時候,Term的分佈、主題的分佈會發生變化,因此數據的時效性影響仍是很是大的。
除了模型上的融合,咱們把Bigram知識也融入了進去。儘管RNN已經很厲害了,但加入知識、模型仍是會有很大地提高。
另外,咱們還作了Query和網頁正文的建模,因爲Query中每一個詞都有必定的用戶意圖,因此在模型建模時,會考慮Query中每一個詞被Title和正文覆蓋的狀況,並基於Matching Matrix匹配方法計算。此外,搜索架構也作了配合改進,搜索也上線了基於GPU和CPU的異構計算架構。
上圖是一個案例,「羋殊出嫁途中遇到危險」,咱們後來作了一些分析,發現「危險」和「投毒」有很強的語義關聯,就把這個結果排了上去。
在模型裁減壓縮上,咱們也作了不少工做,包括量化的壓縮和哈希技術的壓縮。整個語義的模型基本上已經從依靠一個Embedding 32bits來存,到如今達到Embedding一維僅需4bits,節省線上DNN匹配模型87.5%的內存消耗。這項技術,除了搜索的使用,移動端的使用也有很是大的價值。
SimNet技術除了百度搜索,包括Q&A,Query和Answer的匹配等方面都有一些嘗試。
接下來咱們會在通用語義表示方面進一步研究與突破,除了如何充分地利用先驗知識,利用一些弱監督信號外,模型方面也會進一步探索創新。技術拓展上,跨語言、多語言表示,面向生成、匹配等任務的表示,面向醫療、法律等領域的表示,多模態表示等都是咱們的一些重點方向。
RLTM論文地址:
https://arxiv.org/abs/1906.09404
至此,「2019天然語言處理前沿論壇」語義計算主題《百度語義計算技術及其應用》的分享結束。若是你們想更深刻地瞭解百度持續學習語義理解框架艾尼(ERNIE),歡迎加入ERNIE官方交流羣(QQ羣號:760439550)。
劃重點!!!
掃碼關注百度NLP官方公衆號,獲取百度NLP技術的第一手資訊!
加入ERNIE官方技術交流羣(760439550),百度工程師實時爲您答疑解惑!
當即前往GitHub( github.com/PaddlePaddle/ERNIE )爲ERNIE點亮Star,立刻學習和使用起來吧!
最強預告!!!
11月23日,艾尼(ERNIE)的巡迴沙龍將在上海加場,乾貨滿滿的現場,行業A級的導師,還有一羣志同道合的小夥伴,還在等什麼?感興趣的開發者們趕忙掃描下方「二維碼」或點擊「連接」報名參加吧!
報名連接:https://iwenjuan.baidu.com/?code=vc78lp