Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?
文 | 小喂老師
編 | 小軼
作為NLP領(lǐng)域的“三高”用戶(高產(chǎn)、高能、高鈔),FaceBook最近(2020年11月)又發(fā)表了一篇高水準(zhǔn)文章,目前已被COLING-2020接收,號稱解決了自然語言生成(NLG)落地的問題:Best Practices for Data-Efficient Modeling in NLG:How to Train Production-Ready ?Neural Models with Less Data
看到這個(gè)有點(diǎn)標(biāo)題黨的文章,我不禁要發(fā)出關(guān)于NLG落地的素質(zhì)三連:
眾所周知,對于自然語言處理中的NLG問題,一直都沒有很好的落地場景,即便是目前最合適的“文本自動摘要-Auto Text Summarization”,也沒有特別合適的產(chǎn)品和落地領(lǐng)域。所以雖說你是大佬,但我也不覺得你可以做第一個(gè)吃螃蟹的人!
抱著這些疑惑,我一口氣讀完了整個(gè)paper,然后不禁發(fā)出感慨:“就這?”——啊不,打錯(cuò)了——然后不禁發(fā)出感慨:“四高一”!!!
本篇文章的亮點(diǎn)比較多,屬于一篇偏實(shí)驗(yàn)性論文,總結(jié)為一句話就是:流程化NLG在對話系統(tǒng)落地過程中開發(fā)步驟和評估策略。
文中研究的NLG主要指對話系統(tǒng)中的NLG。為解決NLG應(yīng)用落地的難題,論文設(shè)計(jì)了一套Tree-Based數(shù)據(jù)集,并據(jù)此推出Bucketing訓(xùn)練策略 + TreeAccuracy評價(jià)策略。此外,還討論了NLG中的數(shù)據(jù)增強(qiáng),知識蒸餾,生成模型選擇和Data-fficiency問題。為對話系統(tǒng)中的NLG落地給出了一套完備&Less-Data&Low-Latency&生成結(jié)果High-Acceptable的方案。
哈哈,這么高的評價(jià),那我們看一下這篇文章到底做了啥!
論文題目:
Best Practices for Data-Efficient Modeling in NLG:How to Train Production-Ready Neural Models with Less Data
論文鏈接:
https://arxiv.org/abs/2011.03877
Arxiv訪問慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復(fù)關(guān)鍵詞 【1221】 下載論文PDF~
NLG先驗(yàn)知識
在談?wù)撨@篇論文之前,我先和大家的溝通一下NLG這個(gè)任務(wù),保證大家有一個(gè)共通的認(rèn)知觀點(diǎn)。
自然語言生成(Natural Language Generation)是一個(gè)很難或者說高復(fù)雜度的自然語言處理任務(wù)。廣義的NLG是給定一個(gè)輸入(可以是文本、表格、圖片或是結(jié)構(gòu)化的數(shù)據(jù)),輸出符合該輸入的一段文本描述(可以是文章寫作、摘要,也可是圖片內(nèi)容描述)。NLG通常被認(rèn)為是真正意義上的人工智能,一個(gè)完備的NLG任務(wù)意味著圖靈機(jī)的實(shí)現(xiàn)。本論文的NLG是特指對話系統(tǒng)(Chatbot System)中的自然語言生成,對于一個(gè)對話系統(tǒng),它通常有如下幾個(gè)部分:
自動語音識別-ASR
自然語言理解-NLU
對話策略-DM
自然語言生成-NLG
對于此處的NLG任務(wù),它的輸入是<Query, DM產(chǎn)生的Actions>,輸出的是一段文本回復(fù)。
因?yàn)槭且黄珜?shí)驗(yàn)性的論文,所以論文的要點(diǎn)理解和模型框架并不算特別的難,但是需要大量的先驗(yàn)知識儲備。接下來的四個(gè)小節(jié)中,我將依次列舉一些必要的先驗(yàn)知識,包括:
Chabot System中的NLG
Structured NLG Data
Bucketing策略
BART模型
Chabot System中的NLG
在對話系統(tǒng)中,經(jīng)過NLU,DM之后會獲得一系列的Dialogue Actions,這類Dialogue Actions就是NLG的重要輸入。在Chabot System中做NLG,常用的方法是基于模板生成結(jié)果。但是太過于死板且不可遷移。后來就提出了基于Encoder-Decoder的模型生成,和模板生成進(jìn)行比較,也是有各自的優(yōu)劣點(diǎn)(具體討論可見論文細(xì)節(jié))。
這里為了能讓讀者有一個(gè)對NLG任務(wù)比較直觀的理解,給出了一個(gè)簡單的例子(其中Query和Actions通常作為NLG的輸入,ExpectResponse則指代模型NLG的輸出):
Query:?"我要買一張明天去北京的火車票。" Actions:?{ "intent":"買火車票", "slots":["destination":北京,"departure":UNK,"time":DayTime[“明天”]_DetailTime["UNK]] "actions":["詢問具體時(shí)間","詢問出發(fā)地點(diǎn)"]"ExpectResponse":"請問您想買【明天】【幾點(diǎn)】的火車票?【出發(fā)地點(diǎn)】又是哪里呢?" }Structured NLG Data
如果使用Encoder-Decoder的生成模型來做NLG,那么不可避免地就引入了模型輸出結(jié)果不可控制的問題。在生成的模型中,可能缺少重要的要素,也可能要素值生成錯(cuò)誤,這些都是生成模型中不可控制的。
作者所在的團(tuán)隊(duì)在2019年的一篇論文中(Constrained decoding for neural NLG from compositional representations in task-oriented dialogue ),給出了一種解決方法:它將輸入的action使用tree-structured的方式進(jìn)行存儲。這樣的結(jié)構(gòu)引入了更多的信息,也便于后面對生成結(jié)果進(jìn)行判定。本文實(shí)際上也算是Facebook在以前工作上的一種再創(chuàng)新。
為了便于讀者理解,這里給出了論文中一個(gè)關(guān)于tree-structured input的數(shù)據(jù)。這是Facebook發(fā)布的Dialogue System中的一個(gè)case。他將Actions結(jié)構(gòu)化。Reference指期望給出的NLG輸出。
Query:?"Do?I?have?any?reminder?to?buy?milk?" Structured?Actions:?INFORM?1[amount[?3?]]INFORM?2[todo[?buy?milk?]?date?time[time[?7?pm?]]]INFORM?3[todo[?buy?milk?]?date?time[colloquial[?tomorrow?]]]INFORM?4[amount?remaining[1]] Reference:?Yes,?there?are?3?reminders.?The?first?two?are,?buy?milk?at?7?PM?and?tomorrow.?There’s?1?other?reminder.Bucketing策略
這種策略方式使用比較少,在機(jī)器學(xué)習(xí)中有使用過(我也是咨詢了一位同事之后,才了解和理解的)。
在深度學(xué)習(xí)中,我們通常隨機(jī)選取一批數(shù)據(jù)進(jìn)行模型的訓(xùn)練。如batch_size = 64,選取64個(gè)隨機(jī)數(shù)據(jù)進(jìn)行訓(xùn)練。Bucketing則是一種按照某種【策略】將數(shù)據(jù)分成一個(gè)個(gè)的bucket(桶),然后將一個(gè)個(gè)的Bucket的數(shù)據(jù)丟入到模型中進(jìn)行訓(xùn)練。這樣的訓(xùn)練方法可以減少在模型訓(xùn)練過程中由imbanlanced distribution帶來的bias,也能提高數(shù)據(jù)的利用率,是常用的一種利用“少量數(shù)據(jù)”訓(xùn)練模型的方法。
在Bucketing的過程中,這種【策略】就非常的重要。好的策略能大大提高數(shù)據(jù)利用率,壞的策略通常不比隨機(jī)好,甚至?xí)`導(dǎo)模型的學(xué)習(xí)。設(shè)置Bucket策略的出發(fā)點(diǎn)是:各個(gè)bucket中的數(shù)據(jù)中,不一樣的信息是希望模型能夠?qū)W習(xí)的信息,一樣的(共有的)信息是模型可以忽略的信息。
在本論文的任務(wù)上,因?yàn)閿?shù)據(jù)是tree-structured的數(shù)據(jù),作者這里數(shù)據(jù)的tree-structured degree和argument values,嘗試了多種方法進(jìn)行Bucketing,都取得了比random好的效果。
BART模型
BERT模型我聽過,BART模型又是啥??是不是寫錯(cuò)了?BART是FaceBook AI團(tuán)隊(duì)在2019年發(fā)布的一款適用于生成的預(yù)訓(xùn)練語言模型。
▲BERT、GPT、BART模型框架比較如果說BERT適合做NLU,GPT框架適合做NLG。那如果我二者取其長,是不是就能更好的做NLP任務(wù)了?這個(gè)想法很簡單也很正常,但你發(fā)不了paper,因?yàn)槟銢]錢去訓(xùn)練這樣的模型,但人家FaceBook有,所以人家FaceBook發(fā)了Paper(手動狗頭)。模型框架很簡單,但是非常有效,出來即刷新榜單,目前在NLP任務(wù)中,同量級的模型上仍有多處屬于SOTA。
BART模型在HuggingFace的Transformers上開源了自己的預(yù)訓(xùn)練模型。筆者在今年8月份使用過BART模型進(jìn)行過文本摘要生成。對于英文的生成來說,效果確實(shí)非常好,基本不用fine-tune也能比較好的生成通順的有意義的文本;但是對于中文,因?yàn)闆]有Bart-zh,所以無法直接測試。不過FaceBook開放了25種語言的mBART,可用來做中文的文本生成,但直接生成的效果不好,語句通順都成問題,還未嘗試過fine-tune。不過從當(dāng)前他人的使用評價(jià)和論文的結(jié)果來看,BART是一個(gè)很適合文本生成的預(yù)訓(xùn)練模型。
Paper Body
在介紹文章主體之前,我們再梳理一下文章說到的幾個(gè)要點(diǎn)知識。確保這幾個(gè)知識點(diǎn)你都能接受和掌握,我們再來看文章細(xì)節(jié)。
NLG任務(wù)是給定輸入的(dialog act,user query),生成語句通順,信息正確的回答。
傳統(tǒng)NLG系統(tǒng)大多使用基于模板的文本生成(template-based text generation),有優(yōu)有劣。
新的基于神經(jīng)網(wǎng)絡(luò)的NLG(neural-network-based language generation),其框架中主要步驟包括:
對于輸入進(jìn)行meaning representation(MR);
使用sequence-to-sequence(S2S)框架,產(chǎn)生對應(yīng)的response。
因?yàn)楸菊撐囊接懙氖荖LG產(chǎn)品化落地,所以我們期望探索不同數(shù)據(jù)量下模型精度結(jié)果的情況。即,在Data-Reduction的情況下,如何提高Data-Efficiency。
因?yàn)槭且接慛LG的產(chǎn)品化落地,所以也期望做一下模型壓縮在NLG方面的探索。
在上面的幾點(diǎn)理解后,我們從以下4個(gè)方面來看這篇論文:
訓(xùn)練數(shù)據(jù)
Bucketing策略
評估方法
模型
四種訓(xùn)練數(shù)據(jù)
數(shù)據(jù)這里使用的是Facebook團(tuán)隊(duì)2019年給出的四個(gè)對話系統(tǒng)相關(guān)的數(shù)據(jù),數(shù)據(jù)的存儲格式都是tree-structured的,數(shù)據(jù)的領(lǐng)域分別是:Weather, Reminder, Time, Alarm。數(shù)據(jù)的樣例格式如上面給出。
四種數(shù)據(jù)處于不同難度級別,其中Weather最難,Alarm最簡單。論文作者認(rèn)為,這四個(gè)領(lǐng)域的數(shù)據(jù)能基本代表Task-oriented Dialogue System上NLG的難度水平,也基本滿足NLG任務(wù)的任務(wù)需求(雖然筆者我不這么認(rèn)為,讀者也不一定這么認(rèn)為????)。
三種Bucketing策略
這里作者根據(jù)數(shù)據(jù)tree-structured的結(jié)構(gòu)特色,使用了三種Bucketing策略,分別是:
Coarse grained(CB): 使用data中argument names進(jìn)行Bucket group
Medium grained(MB): 精細(xì)到使用data中sub-arguments進(jìn)行Bucket group,對于詞語的形態(tài)進(jìn)行歸一化
Fine grained buckets(FB&FBQ): 更精細(xì)化的操作,包括對argument-value去語義化,甚至對query進(jìn)行去語義化 (FBQ)
一個(gè)完整的訓(xùn)練集使用不同的Bucketing策略,將會被分割成不同數(shù)量的buckets。越精細(xì)的Bucketing策略,被劃分的buckets數(shù)量就越多。比如Weather的訓(xùn)練數(shù)據(jù)集使用CB:MB:FB劃分得到的buckets數(shù)量分別是2240:6406:15456. 如上圖是一個(gè)case以及其各種bucket策略的例子表述。
實(shí)驗(yàn)結(jié)果證明,無論哪種Bucketing策略,效果都優(yōu)于random。其實(shí)可以預(yù)料得到,因?yàn)橐粋€(gè)正確的bucket策略相當(dāng)于引入了先驗(yàn)知識,讓模型更能按照正確的方向進(jìn)行優(yōu)化學(xué)習(xí)。所以同等訓(xùn)練量和模型容納能力的情況下,模型效果會更優(yōu)。
三種評估方法
說到NLG問題,就一定繞不開NLG產(chǎn)生結(jié)果的評估。因?yàn)槭亲匀徽Z言生成的結(jié)果,和標(biāo)準(zhǔn)結(jié)果之間不能簡單的用“==”來判斷結(jié)果是否正確,因?yàn)闀嬖谡Z義相同,表述不同的結(jié)果;也不能使用簡單的Rouge-L來評判,因?yàn)槿绻陉P(guān)鍵詞(如數(shù)字,是否)上表述錯(cuò)誤,是不可原諒的。所以NLG的結(jié)果評判也一直是一個(gè)問題。當(dāng)然,可以引入人為評測,但是如果每一個(gè)NLG都使用認(rèn)為評測,那么成本將非常的高昂。這里作者所使用的3種評測方法是:
Tree Accuracy: 因?yàn)閿?shù)據(jù)本身是tree-structured數(shù)據(jù),所以非常方便的檢測生成文本的重要token是否是MR中的token,如果是記為1,否或者缺失記為0;
BLEU: 2002年提出,是NLG中通用的一種結(jié)果檢測方法。此處不做細(xì)述。
人工評測:有錢土豪用人工,土豪FaceBook沒道理不用。這里論文從Correctness和Grammaticality兩個(gè)方面對生成文本進(jìn)行測評。
三種模型方法和結(jié)果
在原論文中最后給了7種模型策略,但我只列舉了三種,因?yàn)槠渌际窃谠撊N方法上的排列組合。
S2S:使用Sequence-to-Sequence框架,用LSTM做encoder和decoder,輸入的embedding使用的是glove的embedding。優(yōu)點(diǎn)是輕量級,小。
BART:基于BART的模型框架進(jìn)行Encoder-Decoder的模型訓(xùn)練,在BART的基礎(chǔ)上進(jìn)行fine-tune。
KD(Knowledge Distillation,知識蒸餾):使用BART的模型太大了,不利于模型的線上使用,需要使用知識蒸餾的做法。這里KD指的是將BART蒸餾到S2S模型中。
此外,作者還提到了JT和DDA。這不算模型,算是兩種通用的增強(qiáng)模型效果的方法:
Joint-Training(JT): 將多個(gè)相近領(lǐng)域的數(shù)據(jù)一起訓(xùn)練。
Dynamic Data Augmentation (DDA):對于不同的Epoch,隨機(jī)替換每個(gè)argument value。這樣即便使用一批數(shù)據(jù)進(jìn)行訓(xùn)練,每個(gè)Epoch的數(shù)據(jù)都不一樣,增大數(shù)據(jù)可用性。個(gè)人認(rèn)為:由于此任務(wù)數(shù)據(jù)的固有特點(diǎn),才得以使用該方法進(jìn)行數(shù)據(jù)增強(qiáng),算是合理利用數(shù)據(jù)特色進(jìn)行數(shù)據(jù)增強(qiáng)的一種方法。
最終輸出的7種模型分別的輸出結(jié)果如下:
圖中橫坐標(biāo)是訓(xùn)練數(shù)據(jù)量,縱坐標(biāo)是精度。最后作者認(rèn)為:S2S+KD 和 S2S+KD+DDA取得了最好的效果。
當(dāng)然,全文的重點(diǎn)是NLG的Data Efficiency,所以會實(shí)驗(yàn)各種數(shù)據(jù)量之下的模型結(jié)果,DDA策略無疑Data Efficiency最佳。而KD效果最差,但KD主要是為了工程應(yīng)用而生,畢竟KD之后的S2S模型只有2M。
能達(dá)到這樣的結(jié)果,確實(shí)振奮人心。用幾句話總結(jié)論文的結(jié)論,那就是:我們的Bucketing策略很好,我們的DDA很好,我們的TreeAccuracy很好,我們的KD很好。
此外,論文還分別給出了在四個(gè)Domian上的3種測評結(jié)果以及人工測評結(jié)果,最后給出結(jié)論:我們提出的Tree Accuracy還是很有代表性的;我們使用的S2S+KD+DDA是很有效果的,在四個(gè)Domain上通用。
論文結(jié)論
文章的結(jié)論我打算整體翻譯一下,因?yàn)榇_實(shí)是提綱挈領(lǐng),很有概括性(英文好的建議讀原文,原文截圖我保留在下面):
在訓(xùn)練task-oriented對話系統(tǒng)時(shí),不僅要考慮模型的精度,還需要考慮模型的數(shù)據(jù)利用率以及可接受性(acceptability),響應(yīng)延遲和所需的開發(fā)維護(hù)成本。為此,我們提出一個(gè)NLG開發(fā)流程:
根據(jù)數(shù)據(jù)中的結(jié)構(gòu)(此處為基于樹)對meaning representation進(jìn)行Bucketing采樣,以避免不必要和不平衡的數(shù)據(jù)采集,每個(gè)bucket收集1-3個(gè)case。訓(xùn)練模型并進(jìn)行評估。
如果有任務(wù)和語義相似的多個(gè)domain數(shù)據(jù),可以先進(jìn)行聯(lián)合訓(xùn)練,然后進(jìn)行domain內(nèi)微調(diào)。訓(xùn)練模型并進(jìn)行評估。
實(shí)施動態(tài)數(shù)據(jù)增強(qiáng)(DDA),以減少響應(yīng)對“可互換參數(shù)值”的依賴。與增強(qiáng)數(shù)據(jù)一起訓(xùn)練,并評估模型性能。
首先,使用預(yù)訓(xùn)練的模型(例如BART)為未標(biāo)記數(shù)據(jù)生成響應(yīng),得到增強(qiáng)數(shù)據(jù)。然后,用增強(qiáng)數(shù)據(jù)和人工標(biāo)記的數(shù)據(jù),訓(xùn)練一個(gè)小模型(KD)。最后,用人工標(biāo)記數(shù)據(jù),進(jìn)一步微調(diào)該模型。評估模型性能。
如有必要,請為每個(gè)MR存儲桶收集更多示例,并從頭開始部署模型。
我的理解
關(guān)于論文
論文本身是一個(gè)偏實(shí)驗(yàn)性的論文,所以閱讀時(shí)需要注重理解論文設(shè)計(jì)的原因。因?yàn)槭亲鰧υ捪到y(tǒng)中的NLG,而且是基于該組2019年發(fā)表的數(shù)據(jù)集進(jìn)行訓(xùn)練,其格式化的數(shù)據(jù)格式,引入了本文中兩個(gè)非常大的亮點(diǎn):Bucketing策略 和 DDA方法。注意,這兩種方法都是需要在Tree-based數(shù)據(jù)上進(jìn)行實(shí)現(xiàn)的。此外,模型使用的BART模型和KD方法,都屬于比較通用的方法,創(chuàng)新性屬于錦上添花。
當(dāng)然,論文期望知道 NLG落地對數(shù)據(jù)的需求(Data Reduction)、可能的數(shù)據(jù)增強(qiáng)方法(DDA)、模型壓縮(S2S+KD)能達(dá)到的精度和應(yīng)用領(lǐng)域的差異影響 的結(jié)果是什么,并為此設(shè)計(jì)了一系列實(shí)驗(yàn),也給出了相應(yīng)的結(jié)論。
關(guān)于NLG
如開頭所說的,一個(gè)完備的NLG意味著真正圖靈機(jī)的實(shí)現(xiàn),也意味著真正人工智能時(shí)代的到來。目前各大頂級公司都在走這樣的路,包括目前很多論文都是將大量的NLP任務(wù)轉(zhuǎn)化為語義理解的任務(wù),如:機(jī)器閱讀理解代替NER,QA方式代替信息抽取,模型生成代替文本分類。例如T5模型將各類NLP任務(wù)轉(zhuǎn)化為一個(gè)通用任務(wù)模型,例如GPT-3的finetune用普通的自然語言描述代替。NLG目前不屬于一個(gè)很好的可以工業(yè)落地和應(yīng)用的領(lǐng)域,但是自然語言學(xué)者們卻一直在探索NLG的任務(wù)。
一直說NLG的回答有很多的不可控性,本論文給出了一種Tree Accuracy的方法來評測模型生成的結(jié)果,確實(shí)從一定程度上衡量了模型輸出結(jié)果的準(zhǔn)確性,算是為NLG的落地提供了一些方向(在格式化文本輸出的落地上提供可能)。但是這種情況其實(shí)是假設(shè)我們已經(jīng)獲取到了輸出所需的槽位值,而非真正意義上的從文本中去理解,然后獲取相關(guān)關(guān)系,再產(chǎn)出合理化的回復(fù)。所以本文對于通用意義上的NLG有參考意義,但對于問題的解決還是有很長的路要走!路漫漫其修遠(yuǎn)兮!
最后的最后,請記得,素質(zhì)三連!!!
后臺回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復(fù)關(guān)鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結(jié)
以上是生活随笔為你收集整理的Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从ACL2021看对比学习在NLP中的应
- 下一篇: 吴恩达:机器学习应以数据为中心