天天看點

預習-上課-複習:讓機器像人一樣學習對話

作者:戴音培

機構:阿裡巴巴-達摩院-Conversational AI 團隊

預習時關注重點,上課時由易到難,複習時舉一反三,能否讓機器也按照“預習-上課-複習”的學習範式進行學習呢?

達摩院對話智能(Conversational AI)團隊對這個問題進行了研究探索,先将其用在了人機對話領域,在國際知名多輪對話資料集MultiWoz上取得了最好結果。

目前對話系統的各類研究工作,大多還是集中在模型結構的創新上,并按照傳統的mini-batch方式進行有監督訓練。然而,筆者所在團隊經過最新研究發現,這種傳統訓練方式并不是對話系統的最優訓練模式。受到人類在學習新知識時的學習範式的啟發,我們提出了“預習-上課-複習”的三階段訓練範式來提升對話系統的性能,該範式能夠像人一樣預習時關注重點,上課時由易到難,複習時舉一反三。具體來說,在預習階段時,人一般會先了解重點概念、章節結構等資訊,是以我們對應地設計了帶有結構偏置的預訓練目标,讓模型學會對話資料中的槽值關聯資訊;在上課階段時,人會從簡單内容開始學習再逐漸進階到困難部分,是以我們使用了課程學習[1]的方法來訓練對話模型;而在複習階段時,人們通常是溫故知新舉一反三,是以我們專門設計了基于對話本體的資料增強方法,針對易錯樣例對模型進行加強訓練。通過這樣的優化架構,我們最終在多輪對話資料集MultiWOZ2.1和 WOZ2.0上都取得了目前最好結果,相關工作被ACL21以4-4-4高分接收。

1. 人類學習範式與機器學習範式

在教育學中,針對人類學習的模式,不少學者提出“預習->上課->複習”的三階段過程,是最為高效的學習範式之一[3]。預習時,由于沒有老師進行指導,是以學生會利用已學知識和技能,通過觀察章節标題、浏覽段落文字、準備課上問題等方式進行自主地學習,大緻了解課堂内容;進入到正式上課階段時,學生會根據老師安排好的課程從易到難進行學習,這種由淺入深的教學是人類數百年教育發展總結出的最佳方式,能夠讓學生的知識接受效率最大化;在上完課後,學生應當及時地回顧所學的課程内容,溫故知新,通過自我反思總結,找出仍舊沒有掌握的知識點,并準備好和老師進一步溝通解答。

預習-上課-複習:讓機器像人一樣學習對話

圖1 “預習-上課-複習”三階段學習範式

以上是人類學習範式,而在人工智能的主要方向自然語言處理(Natural Language Processing,NLP)領域中,目前大家普遍采用的是“pre-train + fine-tune”的機器學習範式,即先得到大規模預訓練語言模型,再基于該模型進行下遊任務微調。這種機器學習範式過于簡化,沒有考慮到人類學習範式中的重要特性,即:預習時關注重點,上課時由易到難,複習時舉一反三。是以,對于某個具體的NLP任務,我們應該在建構訓練目标時就将這些特性考慮進來,通過設計出更具任務本身特點的新目标函數來模仿人類學習範式中的三階段學習過程。

2. 基于“預習-上課-複習”學習範式的多輪對話了解

在本文中,我們主要研究任務型多輪對話系統中的核心任務 -- 對話狀态跟蹤(Dialog State Tracking, DST),并希望能夠設計出多輪對話特有的“預習-上課-複習”三階段學習範式以提升DST 模型的效果。

2.1. 對話狀态追蹤任務及其難點

首先, 我們介紹一下任務型對話系統和DST任務。

任務型對話系統是通過人機對話完成某個特定任務的系統,例如政務事務辦理、滿意度回訪、訂餐館等。該系統不僅可以回答使用者問題,同時還能主動發問,引導會話的有效進行,通過多輪對話完成特定任務。例如在一個餐館查找場景中,一個典型的對話如下:

預習-上課-複習:讓機器像人一樣學習對話

圖2 任務型多輪對話示例

如圖2所示,可以看到,在該對話中,機器人需要根據使用者的不同的回答情況進行多輪的對話,最終收集完整自己需要的資訊後給出找到的結果。有關任務型對話模型的更多介紹可參考《

小蜜團隊萬字長文:對話管理模型最新研究進展

》和 《

達摩院基于元學習的對話系統

》。

對話狀态跟蹤(DST)是一個重要的對話了解任務,即給定整個對話曆史,将使用者表達的語義識别成槽值對形式的對話标簽。例如使用者說 “我想要便宜的餐館”,對應的DST語義标簽就是 “價格=便宜”。 對話标簽的集合一般已經預定義好,統稱為對話本體(ontology)或者對話schema。

在一些經典的學術對話資料集中,例如 MultiWOZ[4],CrossWOZ[5]等,DST 任務普遍存在以下3個挑戰:

  • 不同槽之間的取值存在指代關聯。例如使用者在前幾輪互動已經預定好了某家餐館,在目前輪時,使用者說 “我還想要該餐館附近的一家酒店”,那麼隐含地,酒店的area 槽值應當和餐館的 area 槽值是一緻的,這需要DST模型有能力識别出來。
預習-上課-複習:讓機器像人一樣學習對話
  • 使用者隐含接受系統推薦。例如,當系統推薦某家酒店時,使用者針對推薦的結果的态度既可以是正面的表達(that’s great),也可以是非正面的表達(hold on please),對應的hotel-name 槽也就會填或不填。
預習-上課-複習:讓機器像人一樣學習對話
  • 真實使用者表達豐富多樣,增大解析難度。例如,在DST任務中,每個槽有一個特殊的槽值叫 dontcare,用于表示使用者對該槽可選取所有值,即沒有特定值限制。在 MultiWOZ 資料集中,使用者對于 dontcare 的表達多樣性很大,十分考驗模型的語言了解能力。
預習-上課-複習:讓機器像人一樣學習對話

下圖3是我們利用目前最好的DST 模型 TripPy[10],在 MultiWOZ2.1資料集上進行錯誤分析得到的一個錯因占比統計。除了标注錯誤,後處理不當等額外因素,以上三類問題的占比達到約 42%,這需要更好的模型和方案來進行解決。

預習-上課-複習:讓機器像人一樣學習對話

圖3 MultiWoz 2.1 資料集DST錯誤分析(模型采用TriPy)

2.2. “預習-上課-複習”技術方案

針對上文提到的 DST 難點,我們希望能夠從人類學習的過程中總結出一種特有範式來優化模型,實作一種model-agnostic的DST優化方案。基于此,我們設計了“預習-上課-複習”三階段DST 訓練方案,充分地利用好對話schema 中已經存在的槽值關聯的結構(即 schema structure)和對話資料中存在的難易資料分布的結構(即 curriculum structure),提出了 Schema-aware Curriculum Learning for Dialog State Tracking (SaCLog) 通用的DST優化架構,如下圖4所示:

預習-上課-複習:讓機器像人一樣學習對話

圖4 基于“預習-上課-複習”的對話狀态追蹤

2.2.1. 預習子產品(preview module)

我們希望在預習子產品中能夠實作對schema structure 的有效模組化,通過設計類似[6]的帶有結構偏置資訊的預訓練目标,讓DST 模型的基座(如 BERT, BiRNN等)對schema 中資訊有一個初步大緻的了解,在不接觸具體下遊DST任務的情況下,先對各個槽的取值以及在使用者語句中的表達有一個顯式關系的模組化。下圖5是MultiWoz中的一個典型的schema structure:

預習-上課-複習:讓機器像人一樣學習對話

圖5 MultiWoz資料集中的典型的schema structure

實線連接配接的是同一個領域下的槽,虛線連接配接的是不同領域之間可能存在槽值關聯的槽,整體形成了一個網絡狀的結構。每個槽的槽值在不同的自然語句中也會有不同的表達形式,我們希望将這些隐含的聯系在預習階段通過預訓練的方式讓模型學習出來。

    具體的做法是,我們利用一個槽編碼器和一個對話曆史編碼器(兩個編碼器共享參數,模型可選擇BERT、BiRNN等)分别編碼每個槽和對話曆史,槽編碼向量和對話曆史的各個位置的向量進行兩種loss計算,一種是操作分類loss ,判斷某個槽在目前的對話語句中屬于“增”、“删”、“改”、“無”四個操作中的哪一個操作類别,另一種是序列預測loss , 判斷目前對話曆史中,哪些詞屬于該槽的槽值(利用預設的字元串比對得到)。同時我們再加上一個輔助的MLM loss ,對整個對話預料進行類似RoBERTa的預訓練。最終整體loss是三者的權重和 

2.2.2. 上課子產品(attend module)

通過預習子產品我們得到了一個預訓練好的模型基座,如 BERT。接下來我們正式進行 DST 任務的學習。前面我們提到,在對話資料中存在的豐富的 curriculum structure,即資料的難易度分布的結構。下圖6展示了一個簡單和一個困難的對話例子:

預習-上課-複習:讓機器像人一樣學習對話

圖6 對話中不同難易程度的示意圖

同樣是使用者想要一輛從 nandos 作為出發地的taxi, 圖6中上方的對話例子是一個最簡單的表達。而圖6中下方的對話例子,盡管DST結果和簡單例子一樣,卻要困難很多,使用者是通過”from the restaurant”這種表述間接地表達了需要一輛出發地是nandos餐館的taxi。

在前人的工作中,DST 模型一般都是采用 random sampling 的方式選擇 batch data 進行優化的,這裡,我們打算充分地考慮人在課程學習時的學習模式,将訓練資料進行難易度劃分,利用課程學習[1]中的經典算法 baby step[9]來優化,讓模型先學習好簡單的資料再學習複雜的資料。課程學習的諸多理論和實踐[7]也已經證明了,這種類人教學的訓練政策不僅能夠加速模型收斂,還能夠提升模型效果。下圖是論文[8]中一個的可用于說明課程學習提升效果的示意圖:

預習-上課-複習:讓機器像人一樣學習對話

圖7 課程學習效果提升示意圖

假設我們的目标優化函數超曲面是最上方的一個曲線,下面的曲線分别是簡單的優化函數超曲面,位置越下面說明訓練資料越簡單。可以看到,如果一開始就選擇優化目标超曲面,模型很可能會陷入到局部峰值中,但是如果通過一系列合理的中間優化函數由簡到難逐漸逼近目标函數,那麼模型就很可能跳出局部峰,達到更優解。關于更多課程學習的最新内容,推薦詳讀綜述《

A Survey on Curriculum Learning

》一文。

我們具體來看SaCLog中的上課子產品是怎樣實作的:首先我們使用了一個基于規則和模型的混合困難度打分器,模型打分器采用類似交叉驗證的方式,将模型在訓練集中的 K-fold 驗證集上的預測機率作為模型得分,規則打分器利用了一些常見特征,如對話長度、目前輪槽值個數、實體詞個數等作為規則得分,兩類得分結合在一起對整個訓練集進行排序,并提前劃分成10個bucket。在 baby step 的訓練中,首先讓模型在最簡單的bucket 資料上訓練,當模型訓練在現階段訓練集上收斂時再依次加入新的bucket一起訓練,直至最終所有資料都加入了累計訓練集。最後模型在全集上進一步訓練至收斂為止。

2.2.3. 複習子產品(review module)

前面我們提到,複習是人類學習過程中的重要一環,所謂溫故而知新,學習完重要的知識點後需要立即鞏固練習,針對薄弱的環節加強訓練。

落實到我們具體的SaCLog中的複習子產品裡,我們采取的方式是基于schema資訊的資料增強方法,由于schema中已經預定義好了所有的槽和值,是以我們可以通過字元串比對的方式盡可能地從對話語句中将相應位置的槽值找出來進行不同槽值的替換或者同義詞替換,以擴充對話訓練資料。我們在課程學習時,采取每次疊代的epoch 結尾都将模型預測出錯的loss前10%的訓練資料送入複習子產品,通過槽替換、值替換和對話重組三種規則方式進行資料的擴充,将新增資料并入訓練集一起參與下一輪訓練。其中,對話重組是将和目前輪對話資料帶有相同對話狀态标簽的其他對話資料進行曆史對話和後續對話進行重新組合。

2.3. “預習-上課-複習”方案的實驗結果

我們在 MultiWOZ2.1 和 WOZ2.0 兩個經典的多輪對話資料集上進行了實驗。首先,我們将 SaCLog 架構應用到目前最好的transformer-based DST模型TripPy [10] 上,利用預習子產品對BERT基座進行預訓練,再利用上課子產品和複習子產品對 TripPy進行DST 任務的fine-tune, 實驗結果如下圖所示:

預習-上課-複習:讓機器像人一樣學習對話

可以看到應用我們的架構後,TripPy 模型在兩個資料集上性能都有很大提升,取得到了目前最佳結果,同時在MultiWOZ2.1上我們也進行了一個ablation study,發現利用預習子產品和複習子產品能夠帶來最大的提升。

預習-上課-複習:讓機器像人一樣學習對話

為了驗證我們架構的通用性,我們也在目前最好的RNN-based DST 模型 TRADE [11] 上進行驗證,發現同樣也能帶來提升。

預習-上課-複習:讓機器像人一樣學習對話

3. 總結與展望

本文主要介紹了如何通過模仿人類“預習-上課-複習”的三階段學習範式,設計出一個适用于對話狀态跟蹤任務的通用優化架構,通過充分利用對話資料中的schema structure 和curriculum structure 以提升模型的性能。實驗表明,我們在利用了SaCLog優化架構後,在多個多輪對話資料集上都取得了目前最好效果。接下來,我們進一步将“預習-上課-複習”三階段學習範式擴充到更多的對話任務中,同時也準備在業務落地上開展更多的實踐應用。

智能對話系統是個極具前景和挑戰性的方向,達摩院 Conversational AI團隊将不斷地探索推進在這個領域的技術進步和落地,敬請期待我們後續的工作!

參考文獻

[1] Bengio Y, et al. Curriculum learning. ICML19.

[2] Yinpei Dai, et al. Preview, Attend and Review: Schema-Aware Curriculum Learning for Multi-Domain Dialog State Tracking.ACL21.

[3] 

https://www.educationcorner.com/the-study-cycle.html

[4] Eric M et al. MultiWOZ 2.1: A consolidated multi-domain dialogue dataset with state corrections and state tracking baselines.LERC, 2020.

[5] Zhu Q, Huang K, Zhang Z, et al. Crosswoz: A large-scale chinese cross-domain task-oriented dialogue dataset. TACL, 2020.

[6]Yu T, Zhang R, Polozov O, et al. SCORE: PRE-TRAINING FOR CONTEXT REPRESENTA-TION IN CONVERSATIONAL SEMANTIC PARSING. ICLR 2021.

[7] Xin Wang, Yudong Chen and Wenwu Zhu. A Survey on Curriculum Learning. PAMI 2021.

[8] Bengio Y. Evolving culture versus local minima. Growing Adaptive Machines, 2014.

[9] Spitkovsky V I, Alshawi H, Jurafsky D. From baby steps to leapfrog: How “less is more” in unsupervised dependency parsing. NAACL 2010.

[10] Heck M, van Niekerk C, Lubis N, et al. Trippy: A triple copy strategy for value independent neural dialog state tracking. SIGDIAL, 2020.

[11] Wu C S, Madotto A, Hosseini-Asl E, et al. Transferable multi-domain state generator for task-oriented dialogue systems. ACL, 2019.

繼續閱讀