日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?

發布時間:2024/7/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Facebook大公开:解决NLG模型落地难题!工业界的新一波春天? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文 | 小喂老師
編 | 小軼

作為NLP領域的“三高”用戶(高產、高能、高鈔),FaceBook最近(2020年11月)又發表了一篇高水準文章,目前已被COLING-2020接收,號稱解決了自然語言生成(NLG)落地的問題:Best Practices for Data-Efficient Modeling in NLG:How to Train Production-Ready ?Neural Models with Less Data

看到這個有點標題黨的文章,我不禁要發出關于NLG落地的素質三連:

眾所周知,對于自然語言處理中的NLG問題,一直都沒有很好的落地場景,即便是目前最合適的“文本自動摘要-Auto Text Summarization”,也沒有特別合適的產品和落地領域。所以雖說你是大佬,但我也不覺得你可以做第一個吃螃蟹的人!

抱著這些疑惑,我一口氣讀完了整個paper,然后不禁發出感慨:“就這?”——啊不,打錯了——然后不禁發出感慨:“四高一”!!!

本篇文章的亮點比較多,屬于一篇偏實驗性論文,總結為一句話就是:流程化NLG在對話系統落地過程中開發步驟和評估策略

文中研究的NLG主要指對話系統中的NLG。為解決NLG應用落地的難題,論文設計了一套Tree-Based數據集,并據此推出Bucketing訓練策略 + TreeAccuracy評價策略。此外,還討論了NLG中的數據增強知識蒸餾生成模型選擇Data-fficiency問題。為對話系統中的NLG落地給出了一套完備&Less-Data&Low-Latency&生成結果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訪問慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞 【1221】 下載論文PDF~

NLG先驗知識

在談論這篇論文之前,我先和大家的溝通一下NLG這個任務,保證大家有一個共通的認知觀點。

自然語言生成(Natural Language Generation)是一個很難或者說高復雜度的自然語言處理任務。廣義的NLG是給定一個輸入(可以是文本、表格、圖片或是結構化的數據),輸出符合該輸入的一段文本描述(可以是文章寫作、摘要,也可是圖片內容描述)。NLG通常被認為是真正意義上的人工智能,一個完備的NLG任務意味著圖靈機的實現。本論文的NLG是特指對話系統(Chatbot System)中的自然語言生成,對于一個對話系統,它通常有如下幾個部分:

  • 自動語音識別-ASR

  • 自然語言理解-NLU

  • 對話策略-DM

  • 自然語言生成-NLG

對于此處的NLG任務,它的輸入是<Query, DM產生的Actions>,輸出的是一段文本回復。

因為是一篇偏實驗性的論文,所以論文的要點理解和模型框架并不算特別的難,但是需要大量的先驗知識儲備。接下來的四個小節中,我將依次列舉一些必要的先驗知識,包括:

  • Chabot System中的NLG

  • Structured NLG Data

  • Bucketing策略

  • BART模型

Chabot System中的NLG

在對話系統中,經過NLU,DM之后會獲得一系列的Dialogue Actions,這類Dialogue Actions就是NLG的重要輸入。在Chabot System中做NLG,常用的方法是基于模板生成結果。但是太過于死板且不可遷移。后來就提出了基于Encoder-Decoder的模型生成,和模板生成進行比較,也是有各自的優劣點(具體討論可見論文細節)。

這里為了能讓讀者有一個對NLG任務比較直觀的理解,給出了一個簡單的例子(其中Query和Actions通常作為NLG的輸入,ExpectResponse則指代模型NLG的輸出):

Query:?"我要買一張明天去北京的火車票。" Actions:?{ "intent":"買火車票", "slots":["destination":北京,"departure":UNK,"time":DayTime[“明天”]_DetailTime["UNK]] "actions":["詢問具體時間","詢問出發地點"]"ExpectResponse":"請問您想買【明天】【幾點】的火車票?【出發地點】又是哪里呢?" }

Structured NLG Data

如果使用Encoder-Decoder的生成模型來做NLG,那么不可避免地就引入了模型輸出結果不可控制的問題。在生成的模型中,可能缺少重要的要素,也可能要素值生成錯誤,這些都是生成模型中不可控制的。

作者所在的團隊在2019年的一篇論文中(Constrained decoding for neural NLG from compositional representations in task-oriented dialogue ),給出了一種解決方法:它將輸入的action使用tree-structured的方式進行存儲。這樣的結構引入了更多的信息,也便于后面對生成結果進行判定。本文實際上也算是Facebook在以前工作上的一種再創新。

為了便于讀者理解,這里給出了論文中一個關于tree-structured input的數據。這是Facebook發布的Dialogue System中的一個case。他將Actions結構化。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策略

這種策略方式使用比較少,在機器學習中有使用過(我也是咨詢了一位同事之后,才了解和理解的)。

在深度學習中,我們通常隨機選取一批數據進行模型的訓練。如batch_size = 64,選取64個隨機數據進行訓練。Bucketing則是一種按照某種【策略】將數據分成一個個的bucket(桶),然后將一個個的Bucket的數據丟入到模型中進行訓練。這樣的訓練方法可以減少在模型訓練過程中由imbanlanced distribution帶來的bias,也能提高數據的利用率,是常用的一種利用“少量數據”訓練模型的方法。

在Bucketing的過程中,這種【策略】就非常的重要。好的策略能大大提高數據利用率,壞的策略通常不比隨機好,甚至會誤導模型的學習。設置Bucket策略的出發點是:各個bucket中的數據中,不一樣的信息是希望模型能夠學習的信息,一樣的(共有的)信息是模型可以忽略的信息

在本論文的任務上,因為數據是tree-structured的數據,作者這里數據的tree-structured degreeargument values,嘗試了多種方法進行Bucketing,都取得了比random好的效果。

BART模型

BERT模型我聽過,BART模型又是啥??是不是寫錯了?BART是FaceBook AI團隊在2019年發布的一款適用于生成的預訓練語言模型

▲BERT、GPT、BART模型框架比較

如果說BERT適合做NLU,GPT框架適合做NLG。那如果我二者取其長,是不是就能更好的做NLP任務了?這個想法很簡單也很正常,但你發不了paper,因為你沒錢去訓練這樣的模型,但人家FaceBook有,所以人家FaceBook發了Paper(手動狗頭)。模型框架很簡單,但是非常有效,出來即刷新榜單,目前在NLP任務中,同量級的模型上仍有多處屬于SOTA。

BART模型在HuggingFace的Transformers上開源了自己的預訓練模型。筆者在今年8月份使用過BART模型進行過文本摘要生成。對于英文的生成來說,效果確實非常好,基本不用fine-tune也能比較好的生成通順的有意義的文本;但是對于中文,因為沒有Bart-zh,所以無法直接測試。不過FaceBook開放了25種語言的mBART,可用來做中文的文本生成,但直接生成的效果不好,語句通順都成問題,還未嘗試過fine-tune。不過從當前他人的使用評價和論文的結果來看,BART是一個很適合文本生成的預訓練模型。

Paper Body

在介紹文章主體之前,我們再梳理一下文章說到的幾個要點知識。確保這幾個知識點你都能接受和掌握,我們再來看文章細節。

  • NLG任務是給定輸入的(dialog act,user query),生成語句通順,信息正確的回答。

  • 傳統NLG系統大多使用基于模板的文本生成(template-based text generation),有優有劣。

  • 新的基于神經網絡的NLG(neural-network-based language generation),其框架中主要步驟包括:

  • 對于輸入進行meaning representation(MR);

  • 使用sequence-to-sequence(S2S)框架,產生對應的response。

    • 因為本論文要探討的是NLG產品化落地,所以我們期望探索不同數據量下模型精度結果的情況。即,在Data-Reduction的情況下,如何提高Data-Efficiency

    • 因為是要探討NLG的產品化落地,所以也期望做一下模型壓縮在NLG方面的探索。

    • 在上面的幾點理解后,我們從以下4個方面來看這篇論文:

      • 訓練數據

      • Bucketing策略

      • 評估方法

      • 模型

      四種訓練數據

      數據這里使用的是Facebook團隊2019年給出的四個對話系統相關的數據,數據的存儲格式都是tree-structured的,數據的領域分別是:Weather, Reminder, Time, Alarm。數據的樣例格式如上面給出。

      四種數據處于不同難度級別,其中Weather最難,Alarm最簡單。論文作者認為,這四個領域的數據能基本代表Task-oriented Dialogue System上NLG的難度水平,也基本滿足NLG任務的任務需求(雖然筆者我不這么認為,讀者也不一定這么認為????)。

      三種Bucketing策略

      這里作者根據數據tree-structured的結構特色,使用了三種Bucketing策略,分別是:

      • Coarse grained(CB): 使用data中argument names進行Bucket group

      • Medium grained(MB): 精細到使用data中sub-arguments進行Bucket group,對于詞語的形態進行歸一化

      • Fine grained buckets(FB&FBQ): 更精細化的操作,包括對argument-value去語義化,甚至對query進行去語義化 (FBQ)

      ▲Bucketing 策略示例

      一個完整的訓練集使用不同的Bucketing策略,將會被分割成不同數量的buckets。越精細的Bucketing策略,被劃分的buckets數量就越多。比如Weather的訓練數據集使用CB:MB:FB劃分得到的buckets數量分別是2240:6406:15456. 如上圖是一個case以及其各種bucket策略的例子表述。

      實驗結果證明,無論哪種Bucketing策略,效果都優于random。其實可以預料得到,因為一個正確的bucket策略相當于引入了先驗知識,讓模型更能按照正確的方向進行優化學習。所以同等訓練量和模型容納能力的情況下,模型效果會更優。

      三種評估方法

      說到NLG問題,就一定繞不開NLG產生結果的評估。因為是自然語言生成的結果,和標準結果之間不能簡單的用“==”來判斷結果是否正確,因為會存在語義相同,表述不同的結果;也不能使用簡單的Rouge-L來評判,因為如果在關鍵詞(如數字,是否)上表述錯誤,是不可原諒的。所以NLG的結果評判也一直是一個問題。當然,可以引入人為評測,但是如果每一個NLG都使用認為評測,那么成本將非常的高昂。這里作者所使用的3種評測方法是:

      • Tree Accuracy: 因為數據本身是tree-structured數據,所以非常方便的檢測生成文本的重要token是否是MR中的token,如果是記為1,否或者缺失記為0;

      • BLEU: 2002年提出,是NLG中通用的一種結果檢測方法。此處不做細述。

      • 人工評測:有錢土豪用人工,土豪FaceBook沒道理不用。這里論文從Correctness和Grammaticality兩個方面對生成文本進行測評。

      三種模型方法和結果

      在原論文中最后給了7種模型策略,但我只列舉了三種,因為其它都是在該三種方法上的排列組合。

      • S2S:使用Sequence-to-Sequence框架,用LSTM做encoder和decoder,輸入的embedding使用的是glove的embedding。優點是輕量級,小。

      • BART:基于BART的模型框架進行Encoder-Decoder的模型訓練,在BART的基礎上進行fine-tune。

      • KD(Knowledge Distillation,知識蒸餾):使用BART的模型太大了,不利于模型的線上使用,需要使用知識蒸餾的做法。這里KD指的是將BART蒸餾到S2S模型中。

      此外,作者還提到了JT和DDA。這不算模型,算是兩種通用的增強模型效果的方法:

      • Joint-Training(JT): 將多個相近領域的數據一起訓練。

      • Dynamic Data Augmentation (DDA):對于不同的Epoch,隨機替換每個argument value。這樣即便使用一批數據進行訓練,每個Epoch的數據都不一樣,增大數據可用性。個人認為:由于此任務數據的固有特點,才得以使用該方法進行數據增強,算是合理利用數據特色進行數據增強的一種方法。

      最終輸出的7種模型分別的輸出結果如下:

      圖中橫坐標是訓練數據量,縱坐標是精度。最后作者認為:S2S+KD 和 S2S+KD+DDA取得了最好的效果

      當然,全文的重點是NLG的Data Efficiency,所以會實驗各種數據量之下的模型結果,DDA策略無疑Data Efficiency最佳。而KD效果最差,但KD主要是為了工程應用而生,畢竟KD之后的S2S模型只有2M。

      能達到這樣的結果,確實振奮人心。用幾句話總結論文的結論,那就是:我們的Bucketing策略很好,我們的DDA很好,我們的TreeAccuracy很好,我們的KD很好。

      此外,論文還分別給出了在四個Domian上的3種測評結果以及人工測評結果,最后給出結論:我們提出的Tree Accuracy還是很有代表性的;我們使用的S2S+KD+DDA是很有效果的,在四個Domain上通用。

      論文結論

      文章的結論我打算整體翻譯一下,因為確實是提綱挈領,很有概括性(英文好的建議讀原文,原文截圖我保留在下面):

      在訓練task-oriented對話系統時,不僅要考慮模型的精度,還需要考慮模型的數據利用率以及可接受性(acceptability),響應延遲和所需的開發維護成本。為此,我們提出一個NLG開發流程:

      • 根據數據中的結構(此處為基于樹)對meaning representation進行Bucketing采樣,以避免不必要和不平衡的數據采集,每個bucket收集1-3個case。訓練模型并進行評估。

      • 如果有任務和語義相似的多個domain數據,可以先進行聯合訓練,然后進行domain內微調。訓練模型并進行評估。

      • 實施動態數據增強(DDA),以減少響應對“可互換參數值”的依賴。與增強數據一起訓練,并評估模型性能。

      • 首先,使用預訓練的模型(例如BART)為未標記數據生成響應,得到增強數據。然后,用增強數據和人工標記的數據,訓練一個小模型(KD)。最后,用人工標記數據,進一步微調該模型。評估模型性能。

      • 如有必要,請為每個MR存儲桶收集更多示例,并從頭開始部署模型。

      ▲論文結論

      我的理解

      關于論文

      論文本身是一個偏實驗性的論文,所以閱讀時需要注重理解論文設計的原因。因為是做對話系統中的NLG,而且是基于該組2019年發表的數據集進行訓練,其格式化的數據格式,引入了本文中兩個非常大的亮點:Bucketing策略 和 DDA方法。注意,這兩種方法都是需要在Tree-based數據上進行實現的。此外,模型使用的BART模型和KD方法,都屬于比較通用的方法,創新性屬于錦上添花。

      當然,論文期望知道 NLG落地對數據的需求(Data Reduction)、可能的數據增強方法(DDA)、模型壓縮(S2S+KD)能達到的精度和應用領域的差異影響 的結果是什么,并為此設計了一系列實驗,也給出了相應的結論。

      關于NLG

      如開頭所說的,一個完備的NLG意味著真正圖靈機的實現,也意味著真正人工智能時代的到來。目前各大頂級公司都在走這樣的路,包括目前很多論文都是將大量的NLP任務轉化為語義理解的任務,如:機器閱讀理解代替NER,QA方式代替信息抽取,模型生成代替文本分類。例如T5模型將各類NLP任務轉化為一個通用任務模型,例如GPT-3的finetune用普通的自然語言描述代替。NLG目前不屬于一個很好的可以工業落地和應用的領域,但是自然語言學者們卻一直在探索NLG的任務。

      一直說NLG的回答有很多的不可控性,本論文給出了一種Tree Accuracy的方法來評測模型生成的結果,確實從一定程度上衡量了模型輸出結果的準確性,算是為NLG的落地提供了一些方向(在格式化文本輸出的落地上提供可能)。但是這種情況其實是假設我們已經獲取到了輸出所需的槽位值,而非真正意義上的從文本中去理解,然后獲取相關關系,再產出合理化的回復。所以本文對于通用意義上的NLG有參考意義,但對于問題的解決還是有很長的路要走!路漫漫其修遠兮!

      最后的最后,請記得,素質三連!!!

      后臺回復關鍵詞【入群

      加入賣萌屋NLP/IR/Rec與求職討論群

      后臺回復關鍵詞【頂會

      獲取ACL、CIKM等各大頂會論文集!

    總結

    以上是生活随笔為你收集整理的Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。