作為NLP領(lǐng)域的“三高”用戶(高產(chǎn)、高能、高鈔),F(xiàn)aceBook最近(2020年11月)又發(fā)表了一篇高水準文章,目前已被COLING-2020接收,號稱解決了自然語言生成(NLG)落地的問題:Best Practices for Data-Efficient Modeling in NLG:How to Train Production-Ready Neural Models with Less Data
看到這個有點標題黨的文章,我不禁要發(fā)出關(guān)于NLG落地的素質(zhì)三連:
眾所周知,對于自然語言處理中的NLG問題,一直都沒有很好的落地場景,即便是目前最合適的“文本自動摘要-Auto Text Summarization”,也沒有特別合適的產(chǎn)品和落地領(lǐng)域。所以雖說你是大佬,但我也不覺得你可以做第一個吃螃蟹的人!
抱著這些疑惑,我一口氣讀完了整個paper,然后不禁發(fā)出感慨:“就這?”——啊不,打錯了——然后不禁發(fā)出感慨:“四高一”!??!
本篇文章的亮點比較多,屬于一篇偏實驗性論文,總結(jié)為一句話就是:流程化NLG在對話系統(tǒng)落地過程中開發(fā)步驟和評估策略。
文中研究的NLG主要指對話系統(tǒng)中的NLG。為解決NLG應(yīng)用落地的難題,論文設(shè)計了一套Tree-Based數(shù)據(jù)集,并據(jù)此推出Bucketing訓(xùn)練策略 + TreeAccuracy評價策略。此外,還討論了NLG中的數(shù)據(jù)增強,知識蒸餾,生成模型選擇和Data-fficiency問題。為對話系統(tǒng)中的NLG落地給出了一套完備&Less-Data&Low-Latency&生成結(jié)果High-Acceptable的方案。
哈哈,這么高的評價,那我們看一下這篇文章到底做了啥!
論文題目:
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~
在談?wù)撨@篇論文之前,我先和大家的溝通一下NLG這個任務(wù),保證大家有一個共通的認知觀點。
自然語言生成(Natural Language Generation)是一個很難或者說高復(fù)雜度的自然語言處理任務(wù)。廣義的NLG是給定一個輸入(可以是文本、表格、圖片或是結(jié)構(gòu)化的數(shù)據(jù)),輸出符合該輸入的一段文本描述(可以是文章寫作、摘要,也可是圖片內(nèi)容描述)。NLG通常被認為是真正意義上的人工智能,一個完備的NLG任務(wù)意味著圖靈機的實現(xiàn)。本論文的NLG是特指對話系統(tǒng)(Chatbot System)中的自然語言生成,對于一個對話系統(tǒng),它通常有如下幾個部分:
對于此處的NLG任務(wù),它的輸入是<Query, DM產(chǎn)生的Actions>,輸出的是一段文本回復(fù)。
因為是一篇偏實驗性的論文,所以論文的要點理解和模型框架并不算特別的難,但是需要大量的先驗知識儲備。接下來的四個小節(jié)中,我將依次列舉一些必要的先驗知識,包括:
在對話系統(tǒng)中,經(jīng)過NLU,DM之后會獲得一系列的Dialogue Actions,這類Dialogue Actions就是NLG的重要輸入。在Chabot System中做NLG,常用的方法是基于模板生成結(jié)果。但是太過于死板且不可遷移。后來就提出了基于Encoder-Decoder的模型生成,和模板生成進行比較,也是有各自的優(yōu)劣點(具體討論可見論文細節(jié))。
這里為了能讓讀者有一個對NLG任務(wù)比較直觀的理解,給出了一個簡單的例子(其中Query和Actions通常作為NLG的輸入,ExpectResponse則指代模型NLG的輸出):
Query: '我要買一張明天去北京的火車票。'
Actions: {
'intent':'買火車票',
'slots':['destination':北京,
'departure':UNK,
'time':DayTime[“明天”]_DetailTime['UNK]]
'actions':['詢問具體時間','詢問出發(fā)地點']
'ExpectResponse':'請問您想買【明天】【幾點】的火車票?【出發(fā)地點】又是哪里呢?'
}
如果使用Encoder-Decoder的生成模型來做NLG,那么不可避免地就引入了模型輸出結(jié)果不可控制的問題。在生成的模型中,可能缺少重要的要素,也可能要素值生成錯誤,這些都是生成模型中不可控制的。
作者所在的團隊在2019年的一篇論文中(Constrained decoding for neural NLG from compositional representations in task-oriented dialogue ),給出了一種解決方法:它將輸入的action使用tree-structured的方式進行存儲。這樣的結(jié)構(gòu)引入了更多的信息,也便于后面對生成結(jié)果進行判定。本文實際上也算是Facebook在以前工作上的一種再創(chuàng)新。
為了便于讀者理解,這里給出了論文中一個關(guān)于tree-structured input的數(shù)據(jù)。這是Facebook發(fā)布的Dialogue System中的一個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.
這種策略方式使用比較少,在機器學(xué)習中有使用過(我也是咨詢了一位同事之后,才了解和理解的)。
在深度學(xué)習中,我們通常隨機選取一批數(shù)據(jù)進行模型的訓(xùn)練。如batch_size = 64,選取64個隨機數(shù)據(jù)進行訓(xùn)練。Bucketing則是一種按照某種【策略】將數(shù)據(jù)分成一個個的bucket(桶),然后將一個個的Bucket的數(shù)據(jù)丟入到模型中進行訓(xùn)練。這樣的訓(xùn)練方法可以減少在模型訓(xùn)練過程中由imbanlanced distribution帶來的bias,也能提高數(shù)據(jù)的利用率,是常用的一種利用“少量數(shù)據(jù)”訓(xùn)練模型的方法。
在Bucketing的過程中,這種【策略】就非常的重要。好的策略能大大提高數(shù)據(jù)利用率,壞的策略通常不比隨機好,甚至會誤導(dǎo)模型的學(xué)習。設(shè)置Bucket策略的出發(fā)點是:各個bucket中的數(shù)據(jù)中,不一樣的信息是希望模型能夠?qū)W習的信息,一樣的(共有的)信息是模型可以忽略的信息。
在本論文的任務(wù)上,因為數(shù)據(jù)是tree-structured的數(shù)據(jù),作者這里數(shù)據(jù)的tree-structured degree和argument values,嘗試了多種方法進行Bucketing,都取得了比random好的效果。
BERT模型我聽過,BART模型又是啥??是不是寫錯了?BART是FaceBook AI團隊在2019年發(fā)布的一款適用于生成的預(yù)訓(xùn)練語言模型。
如果說BERT適合做NLU,GPT框架適合做NLG。那如果我二者取其長,是不是就能更好的做NLP任務(wù)了?這個想法很簡單也很正常,但你發(fā)不了paper,因為你沒錢去訓(xùn)練這樣的模型,但人家FaceBook有,所以人家FaceBook發(fā)了Paper(手動狗頭)。模型框架很簡單,但是非常有效,出來即刷新榜單,目前在NLP任務(wù)中,同量級的模型上仍有多處屬于SOTA。
BART模型在HuggingFace的Transformers上開源了自己的預(yù)訓(xùn)練模型。筆者在今年8月份使用過BART模型進行過文本摘要生成。對于英文的生成來說,效果確實非常好,基本不用fine-tune也能比較好的生成通順的有意義的文本;但是對于中文,因為沒有Bart-zh,所以無法直接測試。不過FaceBook開放了25種語言的mBART,可用來做中文的文本生成,但直接生成的效果不好,語句通順都成問題,還未嘗試過fine-tune。不過從當前他人的使用評價和論文的結(jié)果來看,BART是一個很適合文本生成的預(yù)訓(xùn)練模型。
在介紹文章主體之前,我們再梳理一下文章說到的幾個要點知識。確保這幾個知識點你都能接受和掌握,我們再來看文章細節(jié)。
在上面的幾點理解后,我們從以下4個方面來看這篇論文:
數(shù)據(jù)這里使用的是Facebook團隊2019年給出的四個對話系統(tǒng)相關(guān)的數(shù)據(jù),數(shù)據(jù)的存儲格式都是tree-structured的,數(shù)據(jù)的領(lǐng)域分別是:Weather, Reminder, Time, Alarm。數(shù)據(jù)的樣例格式如上面給出。
四種數(shù)據(jù)處于不同難度級別,其中Weather最難,Alarm最簡單。論文作者認為,這四個領(lǐng)域的數(shù)據(jù)能基本代表Task-oriented Dialogue System上NLG的難度水平,也基本滿足NLG任務(wù)的任務(wù)需求(雖然筆者我不這么認為,讀者也不一定這么認為??)。
這里作者根據(jù)數(shù)據(jù)tree-structured的結(jié)構(gòu)特色,使用了三種Bucketing策略,分別是:
一個完整的訓(xùn)練集使用不同的Bucketing策略,將會被分割成不同數(shù)量的buckets。越精細的Bucketing策略,被劃分的buckets數(shù)量就越多。比如Weather的訓(xùn)練數(shù)據(jù)集使用CB:MB:FB劃分得到的buckets數(shù)量分別是2240:6406:15456. 如上圖是一個case以及其各種bucket策略的例子表述。
實驗結(jié)果證明,無論哪種Bucketing策略,效果都優(yōu)于random。其實可以預(yù)料得到,因為一個正確的bucket策略相當于引入了先驗知識,讓模型更能按照正確的方向進行優(yōu)化學(xué)習。所以同等訓(xùn)練量和模型容納能力的情況下,模型效果會更優(yōu)。
說到NLG問題,就一定繞不開NLG產(chǎn)生結(jié)果的評估。因為是自然語言生成的結(jié)果,和標準結(jié)果之間不能簡單的用“==”來判斷結(jié)果是否正確,因為會存在語義相同,表述不同的結(jié)果;也不能使用簡單的Rouge-L來評判,因為如果在關(guān)鍵詞(如數(shù)字,是否)上表述錯誤,是不可原諒的。所以NLG的結(jié)果評判也一直是一個問題。當然,可以引入人為評測,但是如果每一個NLG都使用認為評測,那么成本將非常的高昂。這里作者所使用的3種評測方法是:
在原論文中最后給了7種模型策略,但我只列舉了三種,因為其它都是在該三種方法上的排列組合。
此外,作者還提到了JT和DDA。這不算模型,算是兩種通用的增強模型效果的方法:
最終輸出的7種模型分別的輸出結(jié)果如下:
圖中橫坐標是訓(xùn)練數(shù)據(jù)量,縱坐標是精度。最后作者認為:S2S+KD 和 S2S+KD+DDA取得了最好的效果。
當然,全文的重點是NLG的Data Efficiency,所以會實驗各種數(shù)據(jù)量之下的模型結(jié)果,DDA策略無疑Data Efficiency最佳。而KD效果最差,但KD主要是為了工程應(yīng)用而生,畢竟KD之后的S2S模型只有2M。
能達到這樣的結(jié)果,確實振奮人心。用幾句話總結(jié)論文的結(jié)論,那就是:我們的Bucketing策略很好,我們的DDA很好,我們的TreeAccuracy很好,我們的KD很好。
此外,論文還分別給出了在四個Domian上的3種測評結(jié)果以及人工測評結(jié)果,最后給出結(jié)論:我們提出的Tree Accuracy還是很有代表性的;我們使用的S2S+KD+DDA是很有效果的,在四個Domain上通用。
文章的結(jié)論我打算整體翻譯一下,因為確實是提綱挈領(lǐng),很有概括性(英文好的建議讀原文,原文截圖我保留在下面):
在訓(xùn)練task-oriented對話系統(tǒng)時,不僅要考慮模型的精度,還需要考慮模型的數(shù)據(jù)利用率以及可接受性(acceptability),響應(yīng)延遲和所需的開發(fā)維護成本。為此,我們提出一個NLG開發(fā)流程:
論文本身是一個偏實驗性的論文,所以閱讀時需要注重理解論文設(shè)計的原因。因為是做對話系統(tǒng)中的NLG,而且是基于該組2019年發(fā)表的數(shù)據(jù)集進行訓(xùn)練,其格式化的數(shù)據(jù)格式,引入了本文中兩個非常大的亮點:Bucketing策略 和 DDA方法。注意,這兩種方法都是需要在Tree-based數(shù)據(jù)上進行實現(xiàn)的。此外,模型使用的BART模型和KD方法,都屬于比較通用的方法,創(chuàng)新性屬于錦上添花。
當然,論文期望知道 NLG落地對數(shù)據(jù)的需求(Data Reduction)、可能的數(shù)據(jù)增強方法(DDA)、模型壓縮(S2S+KD)能達到的精度和應(yīng)用領(lǐng)域的差異影響 的結(jié)果是什么,并為此設(shè)計了一系列實驗,也給出了相應(yīng)的結(jié)論。
如開頭所說的,一個完備的NLG意味著真正圖靈機的實現(xiàn),也意味著真正人工智能時代的到來。目前各大頂級公司都在走這樣的路,包括目前很多論文都是將大量的NLP任務(wù)轉(zhuǎn)化為語義理解的任務(wù),如:機器閱讀理解代替NER,QA方式代替信息抽取,模型生成代替文本分類。例如T5模型將各類NLP任務(wù)轉(zhuǎn)化為一個通用任務(wù)模型,例如GPT-3的finetune用普通的自然語言描述代替。NLG目前不屬于一個很好的可以工業(yè)落地和應(yīng)用的領(lǐng)域,但是自然語言學(xué)者們卻一直在探索NLG的任務(wù)。
一直說NLG的回答有很多的不可控性,本論文給出了一種Tree Accuracy的方法來評測模型生成的結(jié)果,確實從一定程度上衡量了模型輸出結(jié)果的準確性,算是為NLG的落地提供了一些方向(在格式化文本輸出的落地上提供可能)。但是這種情況其實是假設(shè)我們已經(jīng)獲取到了輸出所需的槽位值,而非真正意義上的從文本中去理解,然后獲取相關(guān)關(guān)系,再產(chǎn)出合理化的回復(fù)。所以本文對于通用意義上的NLG有參考意義,但對于問題的解決還是有很長的路要走!路漫漫其修遠兮!
最后的最后,請記得,素質(zhì)三連?。?!
聯(lián)系客服