百度EasyDL AI開發(fā)公開課第3期:如何0代碼、快速定制企業(yè)級NLP模型?百度工程師詳解技術選型與模型調優(yōu)策略
主講人 | 龍心塵 百度NLP資深研發(fā)工程師
量子位編輯 | 公眾號 QbitAI
近幾年以預訓練為代表的NLP技術取得了爆發(fā)式發(fā)展,新技術新模型層出不窮。企業(yè)與開發(fā)者如何將最先進的NLP領域科研成果,高效地應用到業(yè)務場景中并解決實際問題?
「百度EasyDL AI開發(fā)公開課」中,百度資深研發(fā)工程師龍心塵結合世界領先的文心(ERNIE)語義理解技術,通過產(chǎn)業(yè)實踐案例,深入解析技術選型和模型調優(yōu)的方法,分享了工程實踐中的經(jīng)驗。
講解分為5個部分:
- NLP常見任務
- NLP典型應用場景
- EasyDL-NLP與文心(ERNIE)簡介
- 文心核心技術解析
- NLP定制化實踐與經(jīng)驗分享
直播回放:
以下為分享內(nèi)容整理:
NLP常見任務
自然語言處理(NLP)大致分為4大經(jīng)典任務:文本分類,文本匹配,序列標注,文本生成。
文本分類
假設輸入文本為x,輸出標簽為y,如果y 表示x屬于某一個類別的概率,或者一組類別的概率分布,則可抽象為文本分類問題。
典型的文本分類包含情感分析、新聞主題分類、文本蘊含。
情感分析一般需要判斷某句話是積極的或消極的,屬于單標簽分類。
新聞主題分類相對復雜,一個新聞可能同時具有多個互相獨立的屬性,可以同時出現(xiàn),屬于多標簽分類。
文本蘊含任務輸入的是兩段文本,需要判斷兩段文本之間的關系(包含關系、對立關系、中立關系等),屬于句對分類。
文本匹配
假設輸入文本為x,輸出標簽為y,如果x是兩段文本(x1、x2),Y表示二者的相似度,則可抽象為文本匹配問題。
如圖,x1與x2的意思是非常相似的,所以標簽y是1。如果x1與x2的含義不相似,那么輸出的y就是0。如果需要判斷兩者相似的概率,標簽y在0-1之間。
文本匹配任務在搜索引擎、推薦、FAQ等判斷兩句話相似的場景中應用非常廣泛。
除此之外,文本聚類問題也可以通過文本相似度問題進行處理。機器學習的聚類算法的核心步驟是計算兩個樣本之間的距離,而相似度就是兩個文本之間距離的度量,可以很好地判斷文本間語義層面上的距離。
序列標注
假設輸入文本為x,輸出標簽為y,如果x是一段文本,y是一段與x等長的文本,且x與y的每個字符一一對應,則可抽象為序列標注問題。
如上圖是一個命名實體識別任務,需要要判斷一句話里的一些關鍵詞語,是否屬于地址、人名等實體。這句話里面,“廈門”和“金門”是兩個地址實體。
同時,這個句子中的每一個字,我們都會給出判斷,將不需要關注的字標記為O,因此輸出的判斷標簽Y與X是等長的。
除此之外,分詞、詞性標注、組塊分析、語義角色標注、詞槽挖掘等,都是典型的序列標注任務。某些人將閱讀理解也理解成一種特殊的序列標注,X是2段文本,分別表示正文篇章和問題,Y是篇章中的一小段文本,表示對應問題的答案。
文本生成
假設輸入文本為x,輸出標簽為y,如果x是一段文本,y是一段不定長的文本,則可抽象為文本生成問題。
最典型的文本生成問題是機器翻譯,比如輸入一段英文,輸出一段其他語言的文字。這兩段文字的字、詞的順序不一定一一對應,因此輸出的是一個不定長的文本。
另外,文本摘要、標題生成、閑聊等都是典型的文本生成任務。
NLP典型應用場景
上述介紹了四大經(jīng)典NLP任務,核心是希望大家注意不同任務的輸出X與輸出Y。這樣就可以在真實的NLP應用場景中,能把不同任務拆分成簡單的典型任務。
在企業(yè)實際應用和產(chǎn)業(yè)實踐中,業(yè)務需求千變?nèi)f化,往往需要對NLP模型進行定制化的訓練。
定制過程中,企業(yè)要考慮三個要點:效率問題、效果問題、效能問題。
為了幫助中小企業(yè)更高效的實現(xiàn)NLP模型訓練、優(yōu)化、部署應用,百度面向企業(yè)提供了的零門檻、一站式AI開發(fā)平臺—EasyDL提供全流程服務支持,和業(yè)界領先的語義理解技術平臺—文心(ERNIE)為企業(yè)降低NLP定制成本,下文為大家詳細介紹其優(yōu)勢與核心技術。
EasyDL:全流程企業(yè)級定制化服務支持
EasyDL為大家提供一站式定制化NLP開發(fā)平臺,低門檻、簡單易用。面向企業(yè)客戶和開發(fā)者提供全流程技術服務配套,包括業(yè)務問題分析、技術選型指導、模型優(yōu)化指導、開發(fā)者使用培訓等。
EasyDL不僅為企業(yè)客戶提供全流程方案與技術支持,在解決企業(yè)業(yè)務問題的同時,也讓企業(yè)能更好地沉淀自身技術實力,真正做到“授之以漁”。
文心:降低NLP定制成本
文心(ERNIE)是依托百度深度學習平臺飛槳打造的語義理解技術與平臺,集先進的預訓練模型、全面的NLP算法集、端到端開發(fā)套件和平臺化服務于一體,為企業(yè)和開發(fā)者提供一整套NLP定制與應用能力。
文心基于最新一代預訓練范式的技術優(yōu)勢,能夠大幅降低NLP定制成本。
對于企業(yè)來說,文心的低成本定制能力意味著什么呢?更少的標注數(shù)據(jù)、更少的算力投入、更短的開發(fā)周期。
文心核心技術:ERNIE 2.0(持續(xù)學習語義理解框架)
文心開創(chuàng)性地將大數(shù)據(jù)預訓練與多源豐富知識相結合,持續(xù)學習海量數(shù)據(jù)中的知識,避免災難性遺忘,將機器語義理解水平提升到一個新的高度。
以中文模型為例,目前ERNIE已經(jīng)學習了1500萬篇百科語料和詞語、實體知識,700萬個人類對話,3億的文章的因果結構關系,以及10億次的搜索查詢與結果的對應關系,以及2000萬的語言邏輯關系知識。
模型還在持續(xù)不斷地建模新的海量數(shù)據(jù)與知識,不斷地提升下游的應用效果。ERNIE在中英文的16個任務上已經(jīng)超越了業(yè)界最好模型,全面適用于各類NLP應用場景。
文心的技術創(chuàng)新:ERNIE-GEN
為了解決文本生成任務中的問題,ERNIE提出了ERNIE-GEN技術范式。
首先,ERNIE-GEN主要關注文本生成任務中的“曝光偏置”問題。ERNIE-GEN采用了填充式生成技術,在訓練和解碼中,插入人工符號(ATTN)和位置編碼來匯聚上文向量表示,用于每一步的預測。
即將模型的注意力從上一個生成字符轉移到更全局的上文表示,以緩解上一個字符預測錯誤對后續(xù)生成的負面影響,緩解曝光偏置問題,增強生成魯棒性。
其次,ERNIE-GEN采取了多流注意力機制,能夠同時實現(xiàn)逐詞生成任務和逐片段生成任務。
文心的技術創(chuàng)新:ERNIE-ViL
我們知道,人類的認知不僅通過閱讀文字產(chǎn)生,還通過觀察大量的事物、查看大量圖片、動畫片、圖文相結合等方式,是多模態(tài)的形式。
那么,如何讓模型學習文本、圖像、語音等不同形式的信息,從而在認知理解層面取得更好的效果?
在多模態(tài)領域,我們的ERNIE-ViL(知識增強的視覺語言表示學習)更加強調的是在引入圖像信息的同時,融合了更多知識。即細粒度語義信息抽取,區(qū)分普通詞與語義次,構建了物體預測、屬性預測、關系預測三個預訓練任務,聚焦細粒度的語義對齊知識。
正是因為結合了多模態(tài)與知識,ERNIE-ViL在視覺問答、視覺常識推理、引用表達式理解、圖像檢索、標題檢索等5項多模態(tài)任務集合上取得世界最好的效果。并且在視覺常識推理任務榜單中取得第一名。
案例實踐分享
實際應用中,NLP定制化訓練任務可拆分成7個步驟,并不斷循環(huán)、迭代優(yōu)化:
因此,提升NLP模型訓練效果,一方面要提升循環(huán)迭代的速度和效率,另一方面則需要考慮如何提升優(yōu)化效果。
1.任務拆分
首先,遇到任何文本場景的任務問題,都可以拆分成上述的典型任務。接下來,明確任務本身的輸入與輸出是什么,明確子任務的輸入與輸入是什么,然后把這些子任務組合起來,最終解決問題。
以百度APP的搜索問答場景為例,輸入的是問題,輸出的是答案。
首先進行簡單抽象為一個文本匹配問題。因為我們可以提前把這些答案準備好,用戶提問時只需計算問題與答案的匹配度,問題與答案匹配度高,就把答案推薦出來,若匹配度低則不推薦。
再來進一步拆分。首先,用戶輸入的可能并非是明確的問題,未必有答案。因此我們需要前置一個“文本分類”任務來過濾問題,過濾掉大量的不是明確問題的流量。接下來,再將能夠匹配答案的問題進行問答匹配任務。
2.技術選型
技術選型也可理解為一種廣義的優(yōu)化問題:在有限的條件下,找到合適的方案,優(yōu)化出最好的目標。所以問題的核心是先明確現(xiàn)有條件的限制是什么、目標是什么。
接下來,基于應用場景、硬件條件,選擇相應的可選技術方案,來達到目標優(yōu)化效果:
比如對于模型效果的提升的目標,可以借鑒以往經(jīng)驗:
3.選擇網(wǎng)絡
在文本分類的場景下,以BOW網(wǎng)絡為例,典型網(wǎng)絡結構依次包括:輸入文本的ID序列、 Embedding、BOW結構、全連接層、Softmax層。
其中BOW層可替換為CNN、TextCNN、GRU、LSTM,隨著網(wǎng)絡結構越來越復雜,模型效果一般也會依次提升。
Embedding層可以替換為ERNIE、Transformer,也會提升模型效果。
在文本匹配任務場景下,有4種不同的網(wǎng)絡結構,分別是單塔pointwise、雙塔pointwise、單塔pairwise、雙塔pairwise。
回到百度搜索問答場景下,在任務拆分這一步,我們將搜索問答拆分為文本分類、問答匹配兩部分。文本分類、問答匹配對預測速度的要求都非常高,因此我們選擇BOW網(wǎng)絡。在文本分類時選擇分類BOW,在問答匹配時選擇雙塔或者單塔BOW。
4.預訓練模型
下圖詳細介紹了文心預訓練模型的不同特點:
回到百度搜索問答場景,教師模型就需要選擇預訓練模型了。為提升教師模型的效果,其中的分類任務選擇ERNIE-BASE 2.0,匹配任務選擇ERNIE-SIM。
5.訓練模型
為提升訓練效率,如何選擇GPU或CPU,可結合實際情況參考如下:
那么如何用好GPU、提升訓練效率?大原則是GPU的利用率越高,訓練速度越快。
首先,先小后大,先單機單卡,再單機多卡,最后多機多卡。一般來說,單機多卡的GPU利用率更高、更快。
其次,訓練數(shù)據(jù)與batch-size方面的改進。如將大文件拆成多個小文件,設置合理的數(shù)據(jù)緩沖區(qū)以提升數(shù)據(jù)讀取速度;根據(jù)神經(jīng)網(wǎng)絡中最大矩陣估算顯存占用,估算batch-size等;多卡模式下多進程訓練,添加混合精度訓練等方法,提升訓練速度。
回到百度搜索問答場景,教師模型選擇GPU訓練,而學生模型是海量數(shù)據(jù)的淺層網(wǎng)絡,用CPU集群訓練效果更好。
6.提升效率
如何提升迭代效率,不浪費寶貴的開發(fā)時間?我的經(jīng)驗是,要選擇合適的開發(fā)平臺和工具:
另外,規(guī)范的開發(fā)流程也是提升迭代效率的關鍵。首先,需要分析業(yè)務背景,明確任務的輸入和輸出,將其抽象成已得到解決的NLP典型任務,并且明確評估指標。
第二步,快速實現(xiàn)NLP模型基線,建議大家準備幾千條、格式規(guī)范的訓練數(shù)據(jù),進行無代碼訓練。同時選擇好網(wǎng)絡和預訓練模型。
最后,不斷優(yōu)化模型效果。比如結合業(yè)務需求、進行更細致的技術選型,小數(shù)據(jù)調試,配置參數(shù)級訓練、進行自主調參等。
7.優(yōu)化效果
對于ERNIE系列預訓練模型,模型優(yōu)化最重要的一點是優(yōu)化數(shù)據(jù)質量。即反復觀察bad case,針對典型case增加正確樣本;同時也可以考慮數(shù)據(jù)降噪相關策略,提升模型效果。
其次是優(yōu)化數(shù)據(jù)數(shù)量。通過觀察學習曲線來評估數(shù)據(jù)數(shù)量是否合適,可以考慮數(shù)據(jù)增強、數(shù)據(jù)蒸餾等策略。
第三點是增加數(shù)據(jù)特征,可以考慮增加非文本特征,或增加新的文本特征(如N-gram、subword、分詞邊界、詞性等)。
第四點是優(yōu)化調參與組網(wǎng)。大原則是通過學習曲線觀察是否過擬合,若過擬合則降低模型復雜度、增加數(shù)據(jù)量,若欠擬合則增加模型復雜度。
— 完 —
量子位 QbitAI · 頭條號簽約
關注我們,第一時間獲知前沿科技動態(tài)