“预习-上课-复习”:达摩院类人学习新范式探索
簡介:?預(yù)習(xí)時關(guān)注重點(diǎn),上課時由易到難,復(fù)習(xí)時舉一反三,能否讓機(jī)器也按照“預(yù)習(xí)-上課-復(fù)習(xí)”的學(xué)習(xí)范式進(jìn)行學(xué)習(xí)呢? 達(dá)摩院對話智能(Conversational AI)團(tuán)隊(duì)對這個問題進(jìn)行了研究探索,先將其用在了人機(jī)對話領(lǐng)域,在國際知名多輪對話數(shù)據(jù)集MultiWoz上取得了最好結(jié)果。
作者 | 言楓
來源 | 阿里技術(shù)公眾號
預(yù)習(xí)時關(guān)注重點(diǎn),上課時由易到難,復(fù)習(xí)時舉一反三,能否讓機(jī)器也按照“預(yù)習(xí)-上課-復(fù)習(xí)”的學(xué)習(xí)范式進(jìn)行學(xué)習(xí)呢?
達(dá)摩院對話智能(Conversational AI)團(tuán)隊(duì)對這個問題進(jìn)行了研究探索,先將其用在了人機(jī)對話領(lǐng)域,在國際知名多輪對話數(shù)據(jù)集MultiWoz上取得了最好結(jié)果。
目前對話系統(tǒng)的各類研究工作,大多還是集中在模型結(jié)構(gòu)的創(chuàng)新上,并按照傳統(tǒng)的mini-batch方式進(jìn)行有監(jiān)督訓(xùn)練。然而,筆者所在團(tuán)隊(duì)經(jīng)過最新研究發(fā)現(xiàn),這種傳統(tǒng)訓(xùn)練方式并不是對話系統(tǒng)的最優(yōu)訓(xùn)練模式。受到人類在學(xué)習(xí)新知識時的學(xué)習(xí)范式的啟發(fā),我們提出了“預(yù)習(xí)-上課-復(fù)習(xí)”的三階段訓(xùn)練范式來提升對話系統(tǒng)的性能,該范式能夠像人一樣預(yù)習(xí)時關(guān)注重點(diǎn),上課時由易到難,復(fù)習(xí)時舉一反三。具體來說,在預(yù)習(xí)階段時,人一般會先了解重點(diǎn)概念、章節(jié)結(jié)構(gòu)等信息,因此我們對應(yīng)地設(shè)計(jì)了帶有結(jié)構(gòu)偏置的預(yù)訓(xùn)練目標(biāo),讓模型學(xué)會對話數(shù)據(jù)中的槽值關(guān)聯(lián)信息;在上課階段時,人會從簡單內(nèi)容開始學(xué)習(xí)再逐步進(jìn)階到困難部分,因此我們使用了課程學(xué)習(xí)[1]的方法來訓(xùn)練對話模型;而在復(fù)習(xí)階段時,人們通常是溫故知新舉一反三,因此我們專門設(shè)計(jì)了基于對話本體的數(shù)據(jù)增強(qiáng)方法,針對易錯樣例對模型進(jìn)行加強(qiáng)訓(xùn)練。通過這樣的優(yōu)化框架,我們最終在多輪對話數(shù)據(jù)集MultiWOZ2.1和 WOZ2.0上都取得了目前最好結(jié)果,相關(guān)工作被ACL21以4-4-4高分接收。
一 人類學(xué)習(xí)范式與機(jī)器學(xué)習(xí)范式
在教育學(xué)中,針對人類學(xué)習(xí)的模式,不少學(xué)者提出“預(yù)習(xí)->上課->復(fù)習(xí)”的三階段過程,是最為高效的學(xué)習(xí)范式之一[3]。預(yù)習(xí)時,由于沒有老師進(jìn)行指導(dǎo),因此學(xué)生會利用已學(xué)知識和技能,通過觀察章節(jié)標(biāo)題、瀏覽段落文字、準(zhǔn)備課上問題等方式進(jìn)行自主地學(xué)習(xí),大致了解課堂內(nèi)容;進(jìn)入到正式上課階段時,學(xué)生會根據(jù)老師安排好的課程從易到難進(jìn)行學(xué)習(xí),這種由淺入深的教學(xué)是人類數(shù)百年教育發(fā)展總結(jié)出的最佳方式,能夠讓學(xué)生的知識接受效率最大化;在上完課后,學(xué)生應(yīng)當(dāng)及時地回顧所學(xué)的課程內(nèi)容,溫故知新,通過自我反思總結(jié),找出仍舊沒有掌握的知識點(diǎn),并準(zhǔn)備好和老師進(jìn)一步溝通解答。
在人工智能的主要方向自然語言處理(Natural Language Processing,NLP)領(lǐng)域中,目前大家普遍采用的是“pre-train + fine-tune”的機(jī)器學(xué)習(xí)范式,即先得到大規(guī)模預(yù)訓(xùn)練語言模型,再基于該模型進(jìn)行下游任務(wù)微調(diào)。這種機(jī)器學(xué)習(xí)范式過于簡化,沒有考慮到人類學(xué)習(xí)范式中的重要特性,即:預(yù)習(xí)時關(guān)注重點(diǎn),上課時由易到難,復(fù)習(xí)時舉一反三。因此,對于某個具體的NLP任務(wù),我們應(yīng)該在構(gòu)建訓(xùn)練目標(biāo)時就將這些特性考慮進(jìn)來,通過設(shè)計(jì)出更具任務(wù)本身特點(diǎn)的新目標(biāo)函數(shù)來模仿人類學(xué)習(xí)范式中的三階段學(xué)習(xí)過程。
二 基于“預(yù)習(xí)-上課-復(fù)習(xí)”學(xué)習(xí)范式的多輪對話理解
在本文中,我們主要研究任務(wù)型多輪對話系統(tǒng)中的核心任務(wù) -- 對話狀態(tài)跟蹤(Dialog State Tracking, DST),并希望能夠設(shè)計(jì)出多輪對話特有的“預(yù)習(xí)-上課-復(fù)習(xí)”三階段學(xué)習(xí)范式以提升DST 模型的效果。
1 對話狀態(tài)追蹤任務(wù)介紹
首先, 我們介紹一下任務(wù)型對話系統(tǒng)和DST任務(wù)。
任務(wù)型對話系統(tǒng)是通過人機(jī)對話完成某個特定任務(wù)的系統(tǒng),例如政務(wù)事務(wù)辦理、滿意度回訪、訂餐館等。該系統(tǒng)不僅可以回答用戶問題,同時還能主動發(fā)問,引導(dǎo)會話的有效進(jìn)行,通過多輪對話完成特定任務(wù)。例如在一個餐館查找場景中,一個典型的對話如下:
圖2 任務(wù)型多輪對話示例
如圖2所示,可以看到,在該對話中,機(jī)器人需要根據(jù)用戶的不同的回答情況進(jìn)行多輪的對話,最終收集完整自己需要的信息后給出找到的結(jié)果。
對話狀態(tài)跟蹤(DST)是一個重要的對話理解任務(wù),即給定整個對話歷史,將用戶表達(dá)的語義識別成槽值對形式的對話標(biāo)簽。例如用戶說 “我想要便宜的餐館”,對應(yīng)的DST語義標(biāo)簽就是 “價格=便宜”。 對話標(biāo)簽的集合一般已經(jīng)預(yù)定義好,統(tǒng)稱為對話本體(ontology)或者對話schema。
2 對話狀態(tài)追蹤任務(wù)難點(diǎn)
在一些經(jīng)典的學(xué)術(shù)對話數(shù)據(jù)集中,例如 MultiWOZ[4],CrossWOZ[5]等,DST 任務(wù)普遍存在以下3個挑戰(zhàn):
- 不同槽之間的取值存在指代關(guān)聯(lián)。例如用戶在前幾輪交互已經(jīng)預(yù)定好了某家餐館,在當(dāng)前輪時,用戶說 “我還想要該餐館附近的一家酒店”,那么隱含地,酒店的area 槽值應(yīng)當(dāng)和餐館的 area 槽值是一致的,這需要DST模型有能力識別出來。
- 用戶隱含接受系統(tǒng)推薦。例如,當(dāng)系統(tǒng)推薦某家酒店時,用戶針對推薦的結(jié)果的態(tài)度既可以是正面的表達(dá)(that’s great),也可以是非正面的表達(dá)(hold on please),對應(yīng)的hotel-name 槽也就會填或不填。
- 真實(shí)用戶表達(dá)豐富多樣,增大解析難度。例如,在DST任務(wù)中,每個槽有一個特殊的槽值叫 dontcare,用于表示用戶對該槽可選取所有值,即沒有特定值限制。在 MultiWOZ 數(shù)據(jù)集中,用戶對于 dontcare 的表達(dá)多樣性很大,十分考驗(yàn)?zāi)P偷恼Z言理解能力。
下圖3是我們利用目前最好的DST 模型 TripPy[10],在 MultiWOZ2.1數(shù)據(jù)集上進(jìn)行錯誤分析得到的一個錯因占比統(tǒng)計(jì)。除了標(biāo)注錯誤,后處理不當(dāng)?shù)阮~外因素,以上三類問題的占比達(dá)到約 42%,這需要更好的模型和方案來進(jìn)行解決。
圖3 MultiWoz 2.1 數(shù)據(jù)集DST錯誤分析(模型采用TriPy)
3 “預(yù)習(xí)-上課-復(fù)習(xí)”技術(shù)方案
針對上文提到的 DST 難點(diǎn),我們希望能夠從人類學(xué)習(xí)的過程中總結(jié)出一種特有范式來優(yōu)化模型,實(shí)現(xiàn)一種model-agnostic的DST優(yōu)化方案。基于此,我們設(shè)計(jì)了“預(yù)習(xí)-上課-復(fù)習(xí)”三階段DST 訓(xùn)練方案,充分地利用好對話schema 中已經(jīng)存在的槽值關(guān)聯(lián)的結(jié)構(gòu)(即 schema structure)和對話數(shù)據(jù)中存在的難易數(shù)據(jù)分布的結(jié)構(gòu)(即 curriculum structure),提出了 Schema-aware Curriculum Learning for Dialog State Tracking (SaCLog) 通用的DST優(yōu)化框架,如下圖4所示:
圖4 基于“預(yù)習(xí)-上課-復(fù)習(xí)”的對話狀態(tài)追
預(yù)習(xí)模塊(preview module)
我們希望在預(yù)習(xí)模塊中能夠?qū)崿F(xiàn)對schema structure 的有效建模,通過設(shè)計(jì)類似[6]的帶有結(jié)構(gòu)偏置信息的預(yù)訓(xùn)練目標(biāo),讓DST 模型的基座(如 BERT, BiRNN等)對schema 中信息有一個初步大致的了解,在不接觸具體下游DST任務(wù)的情況下,先對各個槽的取值以及在用戶語句中的表達(dá)有一個顯式關(guān)系的建模。下圖5是MultiWoz中的一個典型的schema structure:
圖5 MultiWoz數(shù)據(jù)集中的典型的schema structure
實(shí)線連接的是同一個領(lǐng)域下的槽,虛線連接的是不同領(lǐng)域之間可能存在槽值關(guān)聯(lián)的槽,整體形成了一個網(wǎng)絡(luò)狀的結(jié)構(gòu)。每個槽的槽值在不同的自然語句中也會有不同的表達(dá)形式,我們希望將這些隱含的聯(lián)系在預(yù)習(xí)階段通過預(yù)訓(xùn)練的方式讓模型學(xué)習(xí)出來。
具體的做法是,我們利用一個槽編碼器和一個對話歷史編碼器(兩個編碼器共享參數(shù),模型可選擇BERT、BiRNN等)分別編碼每個槽和對話歷史,槽編碼向量和對話歷史的各個位置的向量進(jìn)行兩種loss計(jì)算,一種是操作分類loss ,判斷某個槽在當(dāng)前的對話語句中屬于“增”、“刪”、“改”、“無”四個操作中的哪一個操作類別,另一種是序列預(yù)測loss , 判斷當(dāng)前對話歷史中,哪些詞屬于該槽的槽值(利用預(yù)設(shè)的字符串匹配得到)。同時我們再加上一個輔助的MLM loss ,對整個對話預(yù)料進(jìn)行類似RoBERTa的預(yù)訓(xùn)練。最終整體loss是三者的加權(quán)和。
上課模塊(attend module)
通過預(yù)習(xí)模塊我們得到了一個預(yù)訓(xùn)練好的模型基座,如 BERT。接下來我們正式進(jìn)行 DST 任務(wù)的學(xué)習(xí)。前面我們提到,在對話數(shù)據(jù)中存在的豐富的 curriculum structure,即數(shù)據(jù)的難易度分布的結(jié)構(gòu)。下圖6展示了一個簡單和一個困難的對話例子:
圖6 對話中不同難易程度的示意圖
同樣是用戶想要一輛從 nandos 作為出發(fā)地的taxi, 圖6中上方的對話例子是一個最簡單的表達(dá)。而圖6中下方的對話例子,盡管DST結(jié)果和簡單例子一樣,卻要困難很多,用戶是通過”from the restaurant”這種表述間接地表達(dá)了需要一輛出發(fā)地是nandos餐館的taxi。
在前人的工作中,DST 模型一般都是采用 random sampling 的方式選擇 batch data 進(jìn)行優(yōu)化的,這里,我們打算充分地考慮人在課程學(xué)習(xí)時的學(xué)習(xí)模式,將訓(xùn)練數(shù)據(jù)進(jìn)行難易度劃分,利用課程學(xué)習(xí)[1]中的經(jīng)典算法 baby step[9]來優(yōu)化,讓模型先學(xué)習(xí)好簡單的數(shù)據(jù)再學(xué)習(xí)復(fù)雜的數(shù)據(jù)。課程學(xué)習(xí)的諸多理論和實(shí)踐[7]也已經(jīng)證明了,這種類人教學(xué)的訓(xùn)練策略不僅能夠加速模型收斂,還能夠提升模型效果。下圖是論文[8]中一個的可用于說明課程學(xué)習(xí)提升效果的示意圖:
圖7 課程學(xué)習(xí)效果提升示意圖
假設(shè)我們的目標(biāo)優(yōu)化函數(shù)超曲面是最上方的一個曲線,下面的曲線分別是簡單的優(yōu)化函數(shù)超曲面,位置越下面說明訓(xùn)練數(shù)據(jù)越簡單。可以看到,如果一開始就選擇優(yōu)化目標(biāo)超曲面,模型很可能會陷入到局部峰值中,但是如果通過一系列合理的中間優(yōu)化函數(shù)由簡到難逐步逼近目標(biāo)函數(shù),那么模型就很可能跳出局部峰,達(dá)到更優(yōu)解。
我們具體來看SaCLog中的上課模塊是怎樣實(shí)現(xiàn)的:首先我們使用了一個基于規(guī)則和模型的混合困難度打分器,模型打分器采用類似交叉驗(yàn)證的方式,將模型在訓(xùn)練集中的 K-fold 驗(yàn)證集上的預(yù)測概率作為模型得分,規(guī)則打分器利用了一些常見特征,如對話長度、當(dāng)前輪槽值個數(shù)、實(shí)體詞個數(shù)等作為規(guī)則得分,兩類得分結(jié)合在一起對整個訓(xùn)練集進(jìn)行排序,并提前劃分成10個bucket。在 baby step 的訓(xùn)練中,首先讓模型在最簡單的bucket 數(shù)據(jù)上訓(xùn)練,當(dāng)模型訓(xùn)練在現(xiàn)階段訓(xùn)練集上收斂時再依次加入新的bucket一起訓(xùn)練,直至最終所有數(shù)據(jù)都加入了累計(jì)訓(xùn)練集。最后模型在全集上進(jìn)一步訓(xùn)練至收斂為止。
復(fù)習(xí)模塊(review module)
前面我們提到,復(fù)習(xí)是人類學(xué)習(xí)過程中的重要一環(huán),所謂溫故而知新,學(xué)習(xí)完重要的知識點(diǎn)后需要立即鞏固練習(xí),針對薄弱的環(huán)節(jié)加強(qiáng)訓(xùn)練。
落實(shí)到我們具體的SaCLog中的復(fù)習(xí)模塊里,我們采取的方式是基于schema信息的數(shù)據(jù)增強(qiáng)方法,由于schema中已經(jīng)預(yù)定義好了所有的槽和值,因此我們可以通過字符串匹配的方式盡可能地從對話語句中將相應(yīng)位置的槽值找出來進(jìn)行不同槽值的替換或者同義詞替換,以擴(kuò)充對話訓(xùn)練數(shù)據(jù)。我們在課程學(xué)習(xí)時,采取每次迭代的epoch 結(jié)尾都將模型預(yù)測出錯的loss前10%的訓(xùn)練數(shù)據(jù)送入復(fù)習(xí)模塊,通過槽替換、值替換和對話重組三種規(guī)則方式進(jìn)行數(shù)據(jù)的擴(kuò)充,將新增數(shù)據(jù)并入訓(xùn)練集一起參與下一輪訓(xùn)練。其中,對話重組是將和當(dāng)前輪對話數(shù)據(jù)帶有相同對話狀態(tài)標(biāo)簽的其他對話數(shù)據(jù)進(jìn)行歷史對話和后續(xù)對話進(jìn)行重新組合。
4 “預(yù)習(xí)-上課-復(fù)習(xí)”方案的實(shí)驗(yàn)結(jié)果
整體榜單
我們在 MultiWOZ2.1 和 WOZ2.0 兩個經(jīng)典的多輪對話數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。首先,我們將 SaCLog 框架應(yīng)用到目前最好的transformer-based DST模型TripPy [10] 上,利用預(yù)習(xí)模塊對BERT基座進(jìn)行預(yù)訓(xùn)練,再利用上課模塊和復(fù)習(xí)模塊對 TripPy進(jìn)行DST 任務(wù)的fine-tune, 實(shí)驗(yàn)結(jié)果如下圖所示:
可以看到應(yīng)用我們的框架后,TripPy 模型在兩個數(shù)據(jù)集上性能都有很大提升,取得到了目前最佳結(jié)果。
消融實(shí)驗(yàn)
同時在MultiWOZ2.1上我們也進(jìn)行了一個ablation study,發(fā)現(xiàn)利用預(yù)習(xí)模塊和復(fù)習(xí)模塊能夠帶來最大的提升。
其他實(shí)驗(yàn)
為了驗(yàn)證我們框架的通用性,我們也在目前最好的RNN-based DST 模型 TRADE [11] 上進(jìn)行驗(yàn)證,發(fā)現(xiàn)同樣也能帶來提升。
三 整體總結(jié)
本文主要介紹了如何通過模仿人類“預(yù)習(xí)-上課-復(fù)習(xí)”的三階段學(xué)習(xí)范式,設(shè)計(jì)出一個適用于對話狀態(tài)跟蹤任務(wù)的通用優(yōu)化框架。具體來看我們采用了預(yù)習(xí)、上課、復(fù)習(xí)三個模塊,通過充分利用對話數(shù)據(jù)中的schema structure 和curriculum structure 以提升模型的性能。實(shí)驗(yàn)表明,我們在利用了SaCLog優(yōu)化框架后,在多個多輪對話數(shù)據(jù)集上都取得了目前最好效果。
四 新學(xué)習(xí)范式的未來展望
在未來,我們希望能將“預(yù)習(xí)-上課-復(fù)習(xí)”三階段學(xué)習(xí)范式擴(kuò)展到更多的任務(wù)中,例如 對話生成、端到端對話系統(tǒng),以及其他的 NLP 任務(wù)。我們希望這樣的新范式能夠帶來更多的訓(xùn)練優(yōu)化方法上的變革,同時也準(zhǔn)備在對話系統(tǒng)的業(yè)務(wù)落地上開展更多的實(shí)踐應(yīng)用。
智能對話系統(tǒng)是個極具前景和挑戰(zhàn)性的方向,達(dá)摩院 Conversational AI團(tuán)隊(duì)將不斷地探索推進(jìn)在這個領(lǐng)域的技術(shù)進(jìn)步和落地,敬請期待我們后續(xù)的工作!
五 參考文獻(xiàn)
[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]?The Study Cycle: Preview, Attend, Review, Study, Assess
[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 “l(fā)ess 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.
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?
總結(jié)
以上是生活随笔為你收集整理的“预习-上课-复习”:达摩院类人学习新范式探索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双11特刊|十年磨一剑,云原生多模数据库
- 下一篇: 流计算引擎数据一致性的本质