乾貨!半監督預訓練對話模型 SPACE

aitime論道 發佈 2022-07-19T04:50:02.050761+00:00

如何將人類先驗知識低成本地融入到預訓練模型中一直是個NLP的難題。

如何將人類先驗知識低成本地融入到預訓練模型中一直是個NLP的難題。在本工作中,達摩院對話智能團隊提出了一種基於半監督預訓練的新訓練範式,通過半監督方法將少量有標對話數據和海量無標對話數據一起進行預訓練,利用一致性正則化損失函數將標註數據中蘊含的對話策略知識注入到預訓練模型中去,從而學習出更好的模型表示。


新提出的半監督預訓練對話模型SPACE(Semi-Supervised Pre-trAIned Conversation ModEl)首先圍繞對話策略知識展開了研究,實驗表明,SPACE1.0 模型在劍橋MultiWOZ2.0,亞馬遜MultiWOZ2.1等經典對話數據集上能夠取得5%+顯著效果提升,並且在各種低資源設置下,SPACE1.0 比現有sota 模型都具有更強的小樣本學習能力。


本期AI TIME PhD直播間,我們邀請到阿里巴巴達摩院高級算法工程師——戴音培,為我們帶來報告分享《半監督預訓練對話模型 SPACE》。


戴音培:阿里巴巴達摩院高級算法工程師,碩士畢業於清華大學電子工程系,研究領域為自然語言處理及對話智能(Conversational AI),具體方向包括對話理解、對話管理和大規模預訓練對話模型等。在 ACL / AAAI / SIGIR/ ICASSP 等會議上發表多篇論文並多次擔任 ACL / EMNLP / NAACL / AAAI 等會議審稿人。



Pre-trained Conversation Model (PCM)


最近的預訓練語言模型Pre-trained Language Model(PLM)可謂是異常火爆,那我們為何還要研究預訓練對話模型呢?儘管前者在許多任務上都能帶來一定程度的效果提升,但有文章表明通過一些損失函數的設計可以得到更好的預訓練模型。預訓練對話模型就是針對下游的對話任務設計的模型,其能夠在預訓練語言模型基礎之上得到更好的提升。



預訓練語言模型vs.預訓練對話模型


• Pre-trained Language Model (PLM) 預訓練語言模型


• 需要回答什麼樣的句⼦更像⾃然語⾔



• Pre-trained Conversation Model (PCM) 預訓練對話模型


• 需要回答給定對話歷史,什麼樣的回覆更合理



相比plain text,對話有哪些特點?



Backgrounds


• Task-oriented dialog (TOD) systems help accomplish certain tasks


本研究主要是建立在任務型對話的基礎上,相比於普通閒聊對話需要完成特定的任務。



如上圖所示,一共包含對話理解、對話策略和對話生成一共三個類任務。


預訓練對話模型匯總



面向理解的預訓練對話模型


• 在對話理解任務上,預訓練對話模型(ConveRT和ToD-BERT)⽐預訓練語⾔模型提升10%+;


• 在表徵學習上,預訓練對話模型也能學到更好的表示,有更好的聚類效果;



預訓練對話模型匯總



面向生成的預訓練對話模型


• facebook對話質量⼈⼯評測


• 評估⽅法:A/B test, Human-to-human vs. human-to-bot, bot包括Facebook系列Chatbot


• 從2018年到2020年,facebook系列模型在A/B test勝率從23%提升到49%



預訓練對話模型匯總



目前的問題在於對對話策略鮮有研究,該如何對其進行更好的建模呢?


Pre-trained Objectives for PCM


• 觀察1:當前的 PCMs 普遍都集中在理解和⽣成的基礎建模



我們可以發現,理解和⽣成的模型基於⾃監督學習,不依賴特定知識且簡單成本低,因此也可以得到快速的拓展。


怎麼建模對話策略?


• 觀察2: Dialog act (DA) as explicit policy



我們接下來,主要思考的是如何刻畫統一的對話動作體系來建模對話策略並融入到預訓練對話模型之中。


半監督預訓練對話模型 SPACE


• 動機:如何融⼊額外⼈類標註知識,顯式利⽤⾼層對話語義信息?



我們之前對對話標籤信息並沒有做到很好利用。我們的工作希望可以將上圖中的二者結合起來,既能夠用的低層次的統計分布信息,也能夠用到高層次的對話標籤信息。


• 提出利⽤半監督預訓練,充分結合有標和⽆標對話數據



在這裡,我們結合前人的工作提出了半監督預訓練,希望可以同時更好的利用有標和無標數據,得到一個更好的預訓練對話模型。接下來,我們要看下不同數據集對話動作標籤體系不一致的問題。


準備工作:定義英文任務型對話 DA 體系


• Method: Propose unified DA schema for TOD


• UniDA: 共5⼤類,20個標籤,綜合考慮常⻅對話動作(暫不考慮語⾳類)



準備工作:構建預訓練對話數據集


• ⽬標:構建⾯向任務型對話的統⼀DA體系的數據


• 難點:體系龐雜、數據量有限

目前我們一共匯總了8個數據集,希望打造一個有統一對話動作的標籤體系。



準備工作:構建預訓練對話數據集


• ⽬標:⼤規模⽆標註對話語料 UnDial



使用對話策略知識 — 定義 DA 預測任務


• 顯式建模對話策略:給定對話歷史,預測下⼀輪系統端的DA



通過我們實現整理的數據,我們就可以將有標數據利用起來去訓練對話模型。


模型輸入表徵結構



以上,就是我們整理好的數據,設計好的DA有監督loss以及與訓練對話模型輸入的表徵。接下來,我們希望能夠利用半監督預訓練的方法來學習出更好的模型。



探索半監督預訓練方法


探索半監督預訓練



目前,半監督方法一共可以分為三大類:


• Discriminative Methods

該方法種最有代表性的就是自預測的表示,即模型在一小批有標數據上學習後通過在無標數據上採取自預測的表示,給無標數據打上偽標籤從而實現二次訓練。

對於Co-training方法,一共有兩個模型。其輸入和輸出分別是對方的輸出和輸入。


• Generative Methods

之前普遍採樣VAE和GAN的方法,如VAE是基於隱變量的建模在對話中產生response。


• Contrastive Methods

對比學習常見的分類是基於是否構造負樣本,其好處也是能在某種程度上實現自監督的學習。


我們的半監督預訓練探索方案1:基於自預測的方法


• 將有監督 loss 和⾃監督 loss 進⾏簡單混合



無論是有標還是無標數據,這裡都有個loss命名為Lselect,用來代表對話理解的作用。如上圖所示,我們的模型是在左側的理解端給定History的情況下,用這兩個loss去預測下一輪DA的標籤,記作LDA。無標數據上由於沒有DA標籤,我們需要自預測的方法先將DA標籤預測出來並放在DA token的位置,和History合在一起產生對話的回覆。


然而,這也可能會出現過擬合的問題。我們在此基礎之上嘗試採用如下第二種方案。


我們的半監督預訓練探索方案2:基於VAE的⽅法


• 基於 PLATO 改進,利⽤少量有監督知識指導隱空間靠近顯式DA空間• 基於 PLATO 改進,利⽤少量有監督知識指導隱空間靠近顯式DA空間



我們在此方法種通過採樣將DA標籤送到DA token位置,實現對話預測。有標數據上我們採用Oracle標籤,無標數據我們將採樣。

然而,我們發現當前方法的性能還是非常有限。


基於對比學習半監督的預訓練對話模型


• 簡化預測過程,消除 DA 不確定性錯誤累計


• 對預測DA分布直接進行對比學習



我們採用對比學習的方法,主要針對無標數據上如何建造更好的loss從而使得DA預測結果正則化約束。給定同一個輸入,通過兩次drop out得到在預測的DA分布上的不同分布,並使得這兩個分布足夠接近。


基於對比學習半監督的預訓練對話模型


• ⼀致性正則半監督訓練示意圖

• Under low density assumption



假設我們語義空間滿足可分,則通過擾動+約束的手段一定可以得到該分布的特點。不同的算法,如R-drop、SimCSE等方法都是在一致性正則的框架之下,不過擾動的方法和約束的目標不一致。


半監督預訓練對話模型 SPACE


• Method: Learn policy from UniDA and UnDial via semi-supervised pre-training 提出了 SPACE 系列模型 1.0 版本 (GALAXY)



• Based on UniLM Architecture.


• Pre-training optimization:



無論有標無標都會加上一個一致性正則的loss,在無監督的數據上加入一個門機制。通過約束無標數據上預設的不符合分布,我們可以檢測模型在無標數據上分類結果的熵。如果熵大於某個閾值,我們就約束其得分儘可能地小,避免在大量無監督數據上可能會存在某些對話數據不太符合我們設想的數據,這樣就能剔除某些噪聲數據。


以上是預訓練的優化過程,在下游任務fine-tuning過程中我們會保留對話回復生成的loss,同時如果下游任務包含DA標籤,我們還會加上LDA來進行學習並利用好數據集的特性;而如果下游任務不包含DA標籤,我們就不加LDA,只用回復生成的loss來實現。



實驗與分析


實驗準備:下游任務


• 任務對話數據集 MultiWOZ


• EMNLP2018 best resource paper, 35+ team

• 領域豐富:餐館、酒店、⽕⻋等 7 個領域

• 數據量⼤:10k sessions ⼈⼈眾包對話


• 任務多樣:


• 理解: Dialog State Tracking(DST)

• 策略:Policy optimization • 端到端: End-to-end modelling


• 指標:


• Inform: 提供Entity是否正確,衡量對話理解效果

• Success: 最終任務是否完成,衡量對話策略效果

• BLUE: 每輪迴復相關度得分,衡量對話⽣成效果

• Combine score: (Inform+Success)/2+BLU



實驗準備:下游輸入輸出


• 借鑑 UBAR 思路



在整個下游任務中,我們在輸入用戶語句之後會用模型去預測一個中間標籤。之後我們會將預測標籤重新作為輸入放到用戶的句子之後,不斷疊代、補充、預測...我們就可以把完成的對話歷史包含中間標籤重新作為輸入,以此保持對話的一致性。


半監督預訓練對話模型 SPACE


在端到端對話建模的任務上,我們在4個數據集上取得了SOTA的結果。


• Overall Results: New SOTA on End-to-End Dialog Modeling



• Overall Results: New SOTA on End-to-End Dialog Modeling



從上圖可以看到,我們的模型相對之前的SOTA模型在整體指標上的提升主要是來自用來衡量對話策略生成的Success和BLEU上。


可以這樣理解,因為我們的模型有效建模了對話策略,因此在衡量對話策略的Success上相對之前模型有了顯著提升。又因為對話策略選的好,所以後續的對話生成也更加合理。我們的模型在整體混和指標上也達到了最好的效果。


• Low-Resource Results on MultiWOZ2.0



由上圖可以看到,我們的模型利用較少的數據就可以通過預訓練的方式得到更好的對話表示,從而適配整個下游任務。


• Other Comparison



我們發現,我們的模型無論是在什麼樣的適配上都能得到最好的效果。


• Case Study



我們的模型因為在預訓練的時候就能使其預測下一輪的能力增強,因此SPACE模型就可以預測出最好的DA標籤。由於對話策略選擇的正確,所以SPACE模型在預測對話生成上就能達成一個很好的效果。


為什麼一致性正則方法有效?



在有標數據上,我們有2個loss,一個是DA loss,一個是KL的一致性正則loss;在無標數據上,也有1個KL的一致性正則loss。由於在有標數據上存在KL loss能夠實現一定程度的正則化loss,很有可能整個DA分布將會過擬合到有標數據上。


然而,如果只利用無標數據的KL loss,則很有可能會學出一個頻繁解,即無論什麼數據都會學出同一種分布——預測到同一類。這樣就會導致無標數據的KL loss直接降為0,因此我們整個訓練loss同時包含有標和無標,有標數據上的LDA loss可以防止塌縮的現象。



總結與展望


• 我們首次將對話策略通過半監督方式注入到預訓練對話模型之中,並在多個數據集上去得到SOTA結果。


• 我們還提出了使用半監督作為預訓練手段,從而訓練出更好的預訓練模型出來。其實我們的方法不僅可以利用對話策略,還可以利用很多和對話、NLP相關的各種領域



論文題目:

SPACE 1.0 - A Generative Pre-trained Model for Task-Oriented Dialog with Semi-Supervised Learning and Explicit Policy Injection


論文連結:

https://arxiv.org/abs/2111.14592

關鍵字: