如何向大模型注入知識?達摩院通義對話(huà)模型SPACE系列探索(1)
如何將人類(lèi)先驗知識低成本融入到預訓練模型中一直是個(gè)難題。達摩院對話(huà)智能團隊提出了一種基于半監督預訓練的新訓練方式,將對話(huà)領(lǐng)域的少量有標數據和海量無(wú)標數據一起進(jìn)行預訓練,從而把標注數據中蘊含的知識注入到預訓練模型中去,打造了 SPACE 1/2/3 系列模型。
- SPACE-1:注入對話(huà)策略知識,AAAI 2022 長(cháng)文錄用;
- SPACE-2:注入對話(huà)理解知識,COLING 2022 長(cháng)文錄用,并獲 best paper award 推薦;
- SPACE-3:集對話(huà)理解 + 對話(huà)策略 + 對話(huà)生成于一體的模型, SIGIR 2022 長(cháng)文錄用。
達摩院對話(huà)大模型 SPACE-1/2/3 在 11 個(gè)國際對話(huà)數據集取得 SOTA。
圖 1 SPACE 系列模型在 11 個(gè)國際對話(huà)數據集取得 SOTA,包含 Intent Prediction、Slot Filling、Dialog State Tracking、Semantic Parsing、End-to-End Generation 五大類(lèi)對話(huà)任務(wù)
相關(guān)論文:
- SPACE-1: https://arxiv.org/abs/2111.14592
- SPACE-2: https://arxiv.org/abs/2209.06638
- SPACE-3: https://arxiv.org/abs/2209.06664
- 相關(guān)代碼:https://github.com/AlibabaResearch/DAMO-ConvAI
1. 關(guān)于人機對話(huà)和預訓練模型的簡(jiǎn)介
1.1. 什么是人機對話(huà)?
人機對話(huà)的終極目的是讓機器(對話(huà)系統)和人類(lèi)(用戶(hù))能像人和人一樣進(jìn)行自由的對話(huà)。通常來(lái)說(shuō),對話(huà)系統和人類(lèi)的對話(huà)過(guò)程主要分為三個(gè)主要階段,分別是對話(huà)理解(Understanding)、對話(huà)策略(Policy)和對話(huà)生成(Generation)。如下圖所示,當用戶(hù)說(shuō)了一句 "查詢(xún)水費",對話(huà)系統首先要理解用戶(hù)說(shuō)的是什么意思(What do you say ?),然后要根據理解的結果,需要判斷自己該如何去回答(How Shold I say ?),第三步要通過(guò)自然語(yǔ)言的方式返回給用戶(hù)(What should I say ?)。
圖 2 人機對話(huà)系統簡(jiǎn)介
1.2. “無(wú)知識,不對話(huà)”
人機對話(huà)都是基于知識構建起來(lái)的,即“無(wú)知識,不對話(huà)”。目前的對話(huà)系統大概可以分為三個(gè)類(lèi)別,包括對話(huà)、問(wèn)答和閑聊。對話(huà)主要是指任務(wù)型對話(huà),通過(guò)具體的業(yè)務(wù)流程知識來(lái)構建,圍繞一個(gè)流程完成某個(gè)具體的任務(wù);問(wèn)答根據知識形態(tài)的不同,分為了很多種,比如基于知識圖譜的問(wèn)答(KBQA)、基于表格或者數據庫的問(wèn)答(TableQA)、基于文檔的問(wèn)答(DocQA)等;閑聊主要是利用一些開(kāi)放域知識,完成與人類(lèi)的聊天等。除此之外,所有的對話(huà)都可能會(huì )依賴(lài)人類(lèi)標注的知識、世界知識和各種常識等。
圖 3 無(wú)知識不對話(huà),知識是對話(huà)系統的基礎
舉個(gè)例子,比如在辦理汽車(chē)保險的場(chǎng)景中,相關(guān)的多輪對話(huà)受業(yè)務(wù)邏輯流程約束的:首先需要驗證個(gè)人信息,然后系統調用驗收報告,如果驗收報告通過(guò),接下來(lái)就要填寫(xiě)保單,最終完成保險的辦理;如果驗車(chē)不通過(guò),需要反饋給用戶(hù)原因,最終完成整個(gè)對話(huà)的流程。在這個(gè)例子中,對話(huà)流程體現的是業(yè)務(wù)流程知識;需要驗證的個(gè)人信息包括姓名等,依賴(lài)于世界知識,比如姓名中的“弓長(cháng)張木子李”;最后,這個(gè)項目如果想達到交付效果要求,還需要標注訓練樣本訓練模型,這里面就包含人工標注知識。
1.3. 預訓練對話(huà)模型
近些年來(lái),預訓練模型引爆了 NLP 的技術(shù)變革,比如 BERT[1]、GPT[2]、T5[3] 等。這些模型基于自監督的訓練方式(MLM)在大規模無(wú)監督語(yǔ)料上進(jìn)行學(xué)習,而其背后的本質(zhì)是語(yǔ)言模型(Language Model),回答什么樣的句子更像一個(gè)合理的句子。典型的預訓練語(yǔ)言模型主要由三個(gè)主要組件構成 :(1) 海量的自由文本作為輸入 (2)利用 Transformer [4] 網(wǎng)絡(luò )架構作為模型 (3)通過(guò)自監督的預訓練目標 MLM 作為優(yōu)化目標。
圖 4 預訓練語(yǔ)言模型及其組成
但是對話(huà)數據和普通文本數據有非常顯著(zhù)的差異,相比于普通的文本數據,對話(huà)作為語(yǔ)言的高級應用,至少有如下的特點(diǎn):
- 對話(huà)是口語(yǔ)化的,人在對話(huà)的時(shí)候表述隨意,也不一定符合語(yǔ)法,可能存在噪音及 ASR 錯誤;
- 對話(huà)是分角色多輪次的,至少有兩個(gè)參與主題,輪次間存在省略、指代、狀態(tài)繼承等特點(diǎn);
- 對話(huà)都存在垂直的知識約束;
- 對話(huà)需要深層語(yǔ)義理解,比如涉及到意圖槽位,邏輯推理等;
- 對話(huà)是講究策略的,為了完成特定的任務(wù)目標,模型需要知道自己該如何決策。
直接利用預訓練語(yǔ)言模型作為對話(huà)模型的基座存在天然的不適配,我們需要針對對話(huà)的數據及特點(diǎn),設計獨特的對話(huà)預訓練模型,來(lái)增強對話(huà)系統的效果。從 2020 年開(kāi)始,面向對話(huà)的專(zhuān)用預訓練對話(huà)模型開(kāi)始涌現。目前預訓練對話(huà)模型的建模,基本按照對話(huà)理解和對話(huà)生成兩大任務(wù)類(lèi)進(jìn)行建模,利用類(lèi)似于 BERT 或者 GPT-2 的 loss 在對話(huà)語(yǔ)料上進(jìn)行預訓練。例如,針對話(huà)理解,常見(jiàn)模型有 PolyAI 的 ConvRT [5],Salesforce 的 TOD-BERT[6]和亞馬遜的 ConvBERT[7],針對對話(huà)生成,常見(jiàn)模型有微軟的 DialoGPT [8],谷歌的 Meena[9]和 Meta 的 Blender[10]。這些預訓練對話(huà)模型仍然存在很多不足:
- 數據上,大部分只用了開(kāi)放域數據;
- 模型上,大多只面向回復生成進(jìn)行建模;
- 訓練機制上,只利用了自監督預訓練目標。
綜上,一方面,無(wú)知識不對話(huà),知識是對話(huà)的基礎;另一方面,預訓練對話(huà)模型對于對話(huà)系統是剛需?;诖?,我們希望在數據和知識雙驅動(dòng)的預訓練對話(huà)模型方向上進(jìn)行深入探索。
2. SPACE-1: 從 自監督訓練 到 半監督訓練
2.1. 從自監督到半監督
如何向模型中注入標注知識依舊是一個(gè)尚未充分探索的方向。早期工作中,谷歌的 T5 就已經(jīng)嘗試了將有標和無(wú)標數據統一成語(yǔ)言生成任務(wù)進(jìn)行學(xué)習,但是實(shí)驗卻表明簡(jiǎn)單地混合有標無(wú)標數據訓練反而會(huì )帶來(lái)負面影響。經(jīng)過(guò)大量的實(shí)驗探索,我們發(fā)現如果還是基于原先的兩大預訓練范式,難以很好地進(jìn)行預訓練。首先,單利用自監督預訓練或者有監督預訓練是無(wú)法同時(shí)利用好有標和無(wú)標的預訓練數據,僅自監督損失函數是無(wú)法學(xué)習出標注知識中的高層語(yǔ)義的,有監督損失函數亦不能學(xué)出無(wú)標語(yǔ)料中的通用底層語(yǔ)義;其次,在大規模預訓練中,由于所使用的預訓練數據往往存在著(zhù)少量有標數據和海量無(wú)標數據之間的數量鴻溝,如果簡(jiǎn)單混合兩種預訓練,會(huì )使得標注知識的信息要么淹沒(méi)在無(wú)標數據中,要么就會(huì )出現嚴重的過(guò)擬合,因此我們需要全新的預訓練范式來(lái)解決該問(wèn)題。
基于上述動(dòng)機,我們期待能夠通過(guò)一種新的訓練方式,將人類(lèi)知識注入到預訓練對話(huà)模型中。這里我們提出半監督預訓練對話(huà)模型 SPACE (Semi-supervised Pre-trAined Conversation ModEl) 。如下圖所示,半監督預訓練從遷移學(xué)習的角度來(lái)看,可以認為是一個(gè)前兩種范式的自然延伸,通過(guò)構造半監督學(xué)習的損失函數來(lái)充分綜合利用有限的標注知識和大量的無(wú)標數據。在半監督學(xué)習理論里 [11],模型既需要在無(wú)標數據上進(jìn)行自我推斷,根據結果進(jìn)一步約束優(yōu)化,也需要利用有標數據進(jìn)行一定程度的有監督,指導自監督預訓練的過(guò)程,同時(shí)避免模型參數陷入平凡解。
圖5 三種預訓練方式:有監督、自監督及半監督,參考[16]修改
如下圖所示,傳統的半監督學(xué)習主要是通過(guò)無(wú)標注數據來(lái)輔助有標注數據,從而減少學(xué)習所需要的標注樣本量。而我們關(guān)注的不再是如何降低對標注數據量的依賴(lài),而是如何更加高效地融入特定標注知識。
圖 6 我們提出的半監督預訓練與之前半監督的不同點(diǎn)
半監督預訓練是我們 SPACE 系列模型的核心思路,基于這個(gè)思路,我們該從哪個(gè)方向進(jìn)行探索呢?當前的預訓練對話(huà)模型主要可以分為對話(huà)理解、對話(huà)策略、對話(huà)生成幾個(gè)方向,對話(huà)理解和對話(huà)生成都有一些相關(guān)的工作了,而對話(huà)策略的研究卻比較薄弱,但對話(huà)策略又是連接對話(huà)理解和對話(huà)生成的核心環(huán)節,它指導著(zhù)對話(huà)生成的正確性,同時(shí)對于多輪對話(huà)能否完成目標(對話(huà)完成率)也至關(guān)重要。所以我們先從對話(huà)策略進(jìn)行入手,將策略知識注入到預訓練對話(huà)模型中。
圖 7 針對對話(huà)策略的預訓練對話(huà)模型還處于空白
2.2. 對話(huà)策略知識
什么是對話(huà)策略呢?對話(huà)策略最早是 1995 年在語(yǔ)言學(xué)被提出,用來(lái)對人類(lèi)的語(yǔ)言交流進(jìn)行行為建模的,將對話(huà)動(dòng)機或者對話(huà)行為抽象為具體的類(lèi)型,在 wiki 百科中的解釋為 “A dialog act is a tag for an utterance, in the context of a conversational dialog, that serves a function in the dialog”。隨著(zhù)領(lǐng)域的發(fā)展,人機對話(huà)也開(kāi)始采取這種標簽體系,稱(chēng)之為 dialog act (DA),比如哥倫比亞大學(xué)的 Zhou Yu 老師團隊提出以用戶(hù)為中心的 DA 體系,一共 23 個(gè) DA 標簽,憑借這套對話(huà)策略的標簽,拿下了當年的 Alexa Prize 的冠軍,證明了這種策略知識對于人機對話(huà)任務(wù)也是非常重要的。
圖 8 對話(huà)策略(Dialog Act)的發(fā)展歷史
但是目前的 DA 標注體系都比較零散,每個(gè)研究的標注體系都不相同,畢竟用一個(gè)小規模的、具體的集合來(lái)描述整個(gè)人類(lèi)的語(yǔ)言描述,還是非常有挑戰的。為了推進(jìn)這個(gè)方向的研究,我們將學(xué)術(shù)界面向任務(wù)型對話(huà)的策略體系進(jìn)行了整合,最終梳理出 5 大類(lèi)、20 小類(lèi)的統一標簽體系。最終我們打造出最大的統一 DA 的對話(huà)數據集 UniDA,共計 100w 條 utterance,同時(shí)我們還整理了學(xué)術(shù)界所有的大規模無(wú)標注語(yǔ)料 UniDIal,共計 3500w 條 utterance。
圖 9 我們總結出的 DA 體系,基于此梳理發(fā)布了學(xué)術(shù)界最大的統一 DA 的對話(huà)數據集 UniDA
目前我們已經(jīng)整理好了用于預訓練的知識和數據,接下來(lái)需要考慮如何設計模型。首先我們將對話(huà)策略進(jìn)行顯式建模,給定對話(huà)歷史,直接預測下一輪系統端的 DA 標簽。比如下面這個(gè)例子,用戶(hù)首先說(shuō) “幫我查一下上個(gè)月的水費”,機器人說(shuō)“好的,請問(wèn)你的戶(hù)號是多少?” 然后這個(gè)用戶(hù)就會(huì )把他的水卡的號說(shuō)出來(lái)。那么再下一句,機器人應該說(shuō)什么呢?我們要預測機器人的這個(gè)對話(huà)策略,就是選擇繼續詢(xún)問(wèn),或者選擇回答信息,還是要進(jìn)行澄清,這些行為就是模型就要預測機器人的這個(gè)對話(huà)策略。那么這樣一個(gè)預測的過(guò)程,可以直接建模為分類(lèi)問(wèn)題進(jìn)行處理。
圖 10 對話(huà)策略的建模方式
2.3. 半監督預訓練
如何將這個(gè)分類(lèi)問(wèn)題進(jìn)行半監督訓練呢?目前學(xué)界對于半監督的利用主要分為 3 種:基于判別式的方法,比如 self-prediction、co-training 等;基于生成式的方法,比如 VAE、GAN 等,還有基于對比學(xué)習的方法,比如 有負樣本的對比和無(wú)負樣本的對比。其中,在我們的實(shí)驗中,基于判別式(self-prediction)和生成式(VAE)由于缺乏顯式的 loss 約束及隱變量的不確定性,效果都不盡人意。
圖 11 NLP 中常用的半監督方法
我們最后選擇基于對比學(xué)習的半監督訓練方法。具體的,針對無(wú)標對話(huà)數據,我們采用了 R-drop[12] 的思路,如下圖所示,給定同樣的對話(huà)輸入 c(context),經(jīng)過(guò)兩次帶有 dropout 的 forward 得到了兩次經(jīng)過(guò)隨機擾動(dòng)后在對話(huà)動(dòng)作空間 (DA)上預測的不同分布,然后通過(guò)雙向 KL 正則損失函數(L_KL)來(lái)約束兩個(gè)分布。針對有標對話(huà)數據,我們則直接利用基礎的有監督交叉熵 loss(L_DA)來(lái)優(yōu)化對話(huà)動(dòng)作預測。理論可以證明,在滿(mǎn)足低密度假設下(即分類(lèi)邊界處于低密度分布),通過(guò)對同一個(gè)樣本進(jìn)行擾動(dòng)后分類(lèi)結果仍然具備一定程度上的一致性 (即分布接近或預測結果接近),那么最終基于一致性正則的半監督學(xué)習可以保證找到正確的分類(lèi)面。最終模型的預訓練損失將和回復選擇任務(wù)(L_select)和回復生成任務(wù)(L_gen)進(jìn)行聯(lián)合優(yōu)化。
圖 12 半監督 Loss 設計
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。