国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【ERNIE】深度剖析知識增強語義表示模型——ERNIE

閱讀大概需要16分鐘


跟隨小博主,每天進步一丟丟

作者:張貴發(fā) 

來自:AINLP

研究方向:自然語言處理


無監(jiān)督文本的深度神經(jīng)網(wǎng)絡的出現(xiàn),nlp領域又火了起來,深度神經(jīng)網(wǎng)絡大大提升了nlp任務的效果。雖然早期的網(wǎng)絡也是基于上下文進行的向量建模,但是由于單向信息流的弊端,效果上始終難以大幅度提升。Transformer中的多層self-attention的出現(xiàn),推進了深度網(wǎng)絡的發(fā)展。Google提出的BERT模型,通過掩蓋的term,利用多層的self-attention的雙向建模能力,橫掃了NLP比賽的各大排行榜。


前文介紹了bert,想詳細了解Bert請參見:一步步理解bert

什么是語義表示

ERNIE是一個語言理解模型,最大的優(yōu)點就是特別好的理解人類的語言。文字其實是概念背后的符號,更重要的其實是概念的本身。詞語是具有語義的,怎么正確表示語義呢?語義的特點是什么?語義上比較近的詞語真正的距離也是比較接近的,怎么對這部分進行表達,就是詞向量,詞向量每個詞背后對應的是一個高維的向量,所以他們之間的距離是可以度量的。

靜態(tài)詞向量


如圖中所示:將文本信息映射到數(shù)字空間,變成數(shù)字表示的向量,在這種表示上,保留了詞語間的距離信息。在句子的空間結構上我們期望獲取更底層的之間的關系比如:

  • king和queen之間的關系相比與man與woman的關系大體應該相同的,那么他們通過矩陣運算,維持住這種關系

  • Paris 和France之間的關系相比與Berlin與German的關系大體應該相同的,那么他們通過矩陣運算,維持住這種關系



這種向量表示不僅僅可以進行距離的計算,還可以進行推斷,怎么把這種詞向量給學好,出現(xiàn)了各種技術,最好的就是 深度學習的神經(jīng)網(wǎng)絡 ,NLM、skip-gram、cbow、這些都是學習詞向量比較有名的網(wǎng)絡,為靜態(tài)詞向量,但是很難建模人類語言的復雜性,(一詞多義、多詞一意)帶有上下文,語義根據(jù)上下文會變化的。如:
詞向量的問題:無法解決歧義問題

word embeding 有個問題就是我們的詞通常有很多語義的,比如bank是銀行還是河岸,具體的意思要取決與上下文,如果我們強行用一個向量來表示語義的話,只能把這兩種語義都編碼在這個向量里,但實際一個句子中,一個詞只有一個語義,那么這種編碼是有問題的。為了解決這種問題,出現(xiàn)了新的技術,動態(tài)詞向量,或者上下文詞向量,這個詞向量就建模了上下文。

動態(tài)詞向量(上下文詞向量)

在這里插入圖片描述

如圖中展示,在進行映射的同時,編碼器還建模了上下文,保證詞向量的上下文信息。這樣的詞向量中不僅保留了詞信息,還保留了上下文信息,基于上下文可以很好的預測。同時深度網(wǎng)絡模型也不斷的發(fā)展,不斷取得大的進步。2017年Cove出現(xiàn)。2018年ELMo獲得了NAACL最佳論文,后來的BERT、ERNIE、XLNET等。
在這些網(wǎng)絡的發(fā)展中,最終要的是注意力機制的應用,都是不斷的改進注意力機制,改變訓練任務。



隨著序列任務的發(fā)展,到Seq2Seq,接下來出現(xiàn)注意力機制,主要流行的注意力機制有兩種,是Luong Attention 和Bahdanau Attention。具體的注意力機制怎么起作用的呢?可以參考https://zhuanlan.zhihu.com/p/40920384



如圖中是Luong Attention 和Bahdanau Attention兩種注意力機制的主要區(qū)別點,Luong Attention是計算當前時間節(jié)點也就是i時刻,而Bahdanau Attention則是計算上一時間點,也就是i-1時刻。實際應用中效果區(qū)別不大,只是Luong Attention 更容易理解。

位置編碼

后來的出現(xiàn)了掩蓋詞語的訓練任務,出現(xiàn)了位置的編碼信息,對于針對位置的編碼,主要有以下幾種:


正玄位置編碼:


如:我在智聯(lián)招聘。智的映射為:

學習位置向量:把智所在的位置學習成為一個向量。

相對位置的表達,則是針對當前的位置信息的相對位置,如當前智為0,左右兩邊term距離當前距離的數(shù)值,正負號表示方向。絕對位置可以保留更多的信息,但是如bert中長度是512,如果一個句子是120,那么后面的位置信息全是0,過多的無用位置編碼無意義。transformer-xl對位置編碼改進為相對位置,引入了segment,不采用整個句子的,而是采用左右兩端固定segment個數(shù)的term作為上下文。

上述的各個模型都特別好,怎么應用呢,進入了自然語言深度學習特別經(jīng)典的預訓練和下游任務的微調的機制,我們可以通過大量的無監(jiān)督語料去學習一些簡單的深度學習任務,就能得到一個很好的模型,比如bert 、ernie等等,這時候神經(jīng)網(wǎng)絡結構已經(jīng)有了,它的神經(jīng)網(wǎng)絡的參數(shù)權重也有了,我們對下游的任務,比如說文本情感分析,哈爾濱是一個美麗的城市。判斷它是一個積極的情緒還是消極的情緒,小規(guī)模的標注數(shù)據(jù),把網(wǎng)絡結構、參數(shù)照搬,熱啟動,在做一個反向傳播的梯度更新,在這個任務里就能得到很好很好的效果,預訓練和微調的機制。如下圖:


ERNIE的原理介紹

上面簡單回顧了靜態(tài)詞向量與動態(tài)詞向量,以及其中重要的點,那么ERNIE是怎么工作,以及任務是怎么訓練的呢?其實,ERNIE實在BERT的基礎上進行的改進,那么將對比著BERT進行一步步剖析。



跟bert的缺陷進行對比,BERT訓練任務是隨機掩蓋住15%的詞進行預測,中文就是字,英文就是詞,蓋住之后去預測蓋住的部分是什么樣子的,訓練任務叫做隱碼語言模型,這個使它得到很好的效果,這個任務也存在缺陷,強行掩蓋把詞與詞,字與字之間的關系給拆散了,比如說哈爾濱,再去訓練的時候把爾給蓋住了,ERNIE的隱碼語言模型蓋住的不是一個字而是詞或短語、命名實體,這樣去預測整體。兩者的主要區(qū)別如下:
  • BERT mask(sub-word) lm任務存在的問題

    • Word哈爾濱:sub-word  哈##爾##濱

    • Sub-word :預測可以通過word的 局部信息完成

    • 模型缺乏全局建模信息的能力

  • 針對BERT mask sub-word 任務存在的問題,百度提出基于知識增強的語義理解模型

    • ERNIE mask word & entity

    • 強迫模型通過全局信息去預測mask掉的內容,學習序列里mask信息里蘊含的知識

ERNIE學到全局的信息,使它能學習到非常先驗的結果,已經(jīng)進行了大量的自然語言處理的分詞模型,短語拼接的模型,命名實體識別的模型,能夠提前把這些詞或者短語給標注出來,標注出來之后再去學,這樣看它是基于已有的策略再去進行海量的數(shù)據(jù)上訓練出一個很好的模型。

ERNIE 1.0的效果圖:



針對bert的變種不斷更新迭代,以及XLNET的產(chǎn)生,都不再局限于某個詞,也是可以掩蓋住短語、實體等進行任務訓練,ERNIE也在不斷的更新迭代,出現(xiàn)了ERNIE 2.0。


2.0加入更多的任務,經(jīng)過左邊各種各樣的自然語言處理的任務去設計一些自然語言處理的輔助任務,基于這些輔助任務讓ernie不斷的去學習,持續(xù)的學習各種各樣的多任務,效果不斷的提升,然后再去處理下游的任務,比如文本相似度、只能問答,文本匹配效果得到非常明顯的提升。

神經(jīng)網(wǎng)絡上的改造

上述所說各種各樣的任務,怎么讓ernie區(qū)分,特別加入了最下面這行的taskid,叫做taskid embedding,對于上面的輸入是典型的ernie 1.0的輸入,每個詞的embedding,每個詞所在句子的embedding,以及詞在語料中位置的embedding,第四個呢就加上了任務的id embedding.讓每個任務有單獨的識別。

輔助任務

總共整理了7個任務,7個任務分位3類,一類是詞法層的任務,一類是語法類的任務,一類是語義類的任務,詞法層的任務 1.0的掩蓋短語、實體。典型的詞法任務就是句子排序,我們把三句話打亂順序的給擺正,3句話的所有組合的階乘,遍歷組合都遍歷一遍,讓ernie去判斷是這么多可能的哪一個,就把排序問題變成了一個多分類的問題,這樣就很好的排序。語義層的關系:亂砍、亂伐,出現(xiàn)自然災害,因為所以的關系,還有如果就的關系。盡管 但是 轉折關系,或者并且這種并列關系,等等是語義的邏輯關系,大量的語料去學習這些關系,使得ernie能很好的提升自己的效果,

如下圖所示:


學習過程

有這么多的輸入,那么對于輸出怎么學習呢?這些任務讓它很好的學習,關鍵看他的輸出,大致分為兩類,token_evel就是詞匯層次的任務,一類是sentence_level就是句子層次的任務,可以理解為填空題,判斷這個詞到底是哪一類 哪個詞 是敏感詞  還是非敏感詞,是關鍵詞還是非關鍵詞,另一部分呢就是句子輸出cls是a類還是b類是順序1還是順序2,來學習到句子級別的任務。那么這部分神經(jīng)網(wǎng)絡是什么樣的呢?

在這里插入圖片描述

其實上述提到過,ERNIE是基于BERT的改進,內部網(wǎng)絡的設計其實還是基于雙向的self-attention的encoder。


來自與all attention you need 這篇論文,tranfromer,總共有12層,然后每一層又包括自注意力機制、歸一化、又包括求和與歸一化、以及一些前饋神經(jīng)網(wǎng)絡的一些機制,最終構成了一個相對復雜的神經(jīng)網(wǎng)絡結構,這里面最核心的是自注意力機制,能學會每個詞匯和詞之間的關系比如說:詞匯與詞匯之間的搭配,keep up  we have  他們之間的關系線的粗細表示關系的強弱。在一步步理解bert中已經(jīng)描述過,這里不再過多的贅述。

我們訓練任何深度學習模型基本上包括三大部分:第一部分定義任務,一部分網(wǎng)絡結構,第三部分呢設計你的優(yōu)化算法,前面大概介紹了任務和網(wǎng)絡結構,接下來看一下優(yōu)化算法,它本身是一個多任務的學習,并不是一口氣學多個任務,都學好,很可能越學越差,相互之間不是促進而是促退,
那么ERNIE是怎么進行學習的呢?

ernie這里采用了兩種機制,順序學習,一次學習一個任務,參數(shù)是不斷的遞進更新的,這樣的好處是比較容易但另一方面會有很大的問題,容易陷入到遺忘狀態(tài),這種比較適合任務關系比較緊密的任務,同樣是隱碼語義模型,第一次學被蓋住的字,第二次學習被蓋住測詞,第三次學習被蓋住的句子是怎樣的,本質還是完型填空,但是填寫的內容不一樣,這樣是可以進行順序學習的。但是對于其他的任務可能就得同時的學習,比如每次迭代是一個batch,batch與batch之間的任務可以是不一樣的,而同一個batch里面也可以學習不同的任務,batch內有多任務機制,batch內有多任務的機制,使得它能在不同的任務之間不斷的來回切換,使它記得學到不同任務的特點,使它不會陷入到之前的遺忘模式。
ERNIE的官方對比效果圖:


這里XLNET沒有中文,只對比了bert的效果。

ERNIE的應用案例

ERNIE效果那么好,怎么應用到我們自己的場景中呢?

性能不敏感的場景:直接使用


度小滿的風控識別上:訓練完的ernie上直接進行微調,直接預測有沒有風險對應的結果,傳統(tǒng)的缺點:需要海量的數(shù)據(jù),而這些數(shù)據(jù)也很難抓取到的,抓取這些特征之后呢還要進行復雜的文本特征提取,比如說挖掘短信中銀行的催收信息,對數(shù)據(jù)要求的量很高,對數(shù)據(jù)人工的特征的挖掘也很高。這兩項呢造成了大量的成本,如今只需ernie微調一下,當時直接在召回的排序上得到25%的優(yōu)化。這種場景的特點是什么?對于用戶的實時性的需求不是很強,不需要用戶輸入一個字段就返回結果。只要一天把所有數(shù)據(jù)得到,跑完,得到結果就可以了,統(tǒng)一的分析就可以了,適合少數(shù)據(jù)的分析場景
  • 傳統(tǒng)方法

    • 傳統(tǒng)風控模型依賴于特征挖掘

    • 有標注的用戶數(shù)據(jù)稀缺

  • 對比效果提升

    • ERNIE用戶風控模型,AUC提升顯著

    • 21.5%的用戶排序得到優(yōu)化

    • ERNIE用戶風控模型應用于度小滿場景

ERNIE 的模型蒸餾案例:搜索問答Query識別和QP匹配


另外的一個場景需要非常高的性能優(yōu)勢的,采用的解決方案就是模型蒸餾,是搜索問答query識別和qp匹配,輸入一個問題,得到答案,本質是文本匹配,實際是輸入問題,把數(shù)據(jù)庫中大量的候選答案進行匹配計算得分,把得分最高的返回。但是百度每天很多用戶,很快的響應速度,數(shù)據(jù)量大,要求響應速度還快,這時候要求不僅模型特別準,而且還要特別快,怎么解決就是模型蒸餾,

把這個分成兩段,第一段判斷是不是真的問題可能有答案,過濾完是可能有答案的,再與數(shù)據(jù)庫中進行匹配,因為大部分輸入框的不一定是個問題,這樣過濾掉一部分,排除掉一部分后,在做匹配就能得到很大的提升,提升還是不夠
第一部分其實是文本分類,通過量的小規(guī)模的標注特征數(shù)據(jù)進行微調,得到一個好的模型,同時日志上是有很多沒有標注的數(shù)據(jù),用ernie對這些數(shù)據(jù)進行很好的標注,用一個更好的模型去標注數(shù)據(jù),用這些標注數(shù)據(jù)訓練相對簡單的模型,就實現(xiàn)了蒸餾,ernie處理速度慢,但是可以用題海戰(zhàn)術的方式訓練簡單的模型如simnet。

輸入的是問題,接著詞向量,然后是求和運算,然后是全連接,最后進行一個分類,這個模型比較簡單。其實就是將ernie模型的效果蒸餾到了簡單模型上,
同理,下面問題匹配也是,右邊也是query和答案,embedding,加權求和,全連接,最后計算他們之間的預選相似度,就是余玄。時召回提升7%
搜索場景,用戶的輸入是多變的,沒法窮盡所有的輸入,提前計算好。

離線推薦

推薦場景:是可以提前計算好,保存好的,可變的比較少,視頻本身就是存好的,變化量不會很大,更新也不會特別頻繁,離線把相似度計算好,保存起來就可以,兩兩計算之間的相似度計算量是非常大的,
那么怎么減少計算量呢?使用了一個技術叫離線向量化,用ERNIE直接過一遍視頻庫,simnet的倒數(shù)第二層保留向量的輸出。這樣減少實際ERNIE直接對兩兩視頻進行計算


方便交流學習,備注:昵稱-學校(公司)-方向,進入DL&NLP交流群。
方向有很多:機器學習、深度學習,python,情感分析、意見挖掘、句法分析、機器翻譯、人機對話、知識圖譜、語音識別等。
記得備注呦
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
論文解讀:Bert原理深入淺出
AI研習丨面向中醫(yī)古籍的文言文信息抽取技術研究
賽爾筆記 | 自然語言處理中的遷移學習(上)
內存用量1/20,速度加快80倍,騰訊QQ提出全新BERT蒸餾框架,未來將開源
一步步理解BERT
業(yè)界總結 | BERT的花式玩法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服