对话预训练_百度发布首个大规模隐变量对话模型PLATO
百度于去年10月公布的基于飛槳開(kāi)源深度學(xué)習(xí)平臺(tái)開(kāi)發(fā)的通用領(lǐng)域?qū)υ?huà)生成預(yù)訓(xùn)練模型PLATO,相關(guān)論文最近已正式被ACL 2020接收。
PLATO是業(yè)界首個(gè)基于隱空間(Latent Space)的端到端的預(yù)訓(xùn)練對(duì)話(huà)生成模型。據(jù)悉,該模型利用隱向量來(lái)表示對(duì)話(huà)的潛在方向,從而達(dá)到對(duì)話(huà)內(nèi)容豐富度和流暢度的顯著提升。針對(duì)具體的對(duì)話(huà)任務(wù),基于PLATO可以用少量數(shù)據(jù)訓(xùn)練得到非常流暢的對(duì)話(huà)系統(tǒng)。
論文名稱(chēng):
PLATO:Pre-trained Dialogue Generation Model with Discrete Latent Variable
論文地址:
https://arxiv.org/abs/1910.07931
預(yù)訓(xùn)練模型及代碼:
https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO
引言
研發(fā)開(kāi)放領(lǐng)域(Open-Domain)的對(duì)話(huà)機(jī)器人,使得它能用自然語(yǔ)言與人自由地交流,這一直是自然語(yǔ)言處理領(lǐng)域終極目標(biāo)之一。
對(duì)話(huà)系統(tǒng)的挑戰(zhàn)非常多,其中有兩點(diǎn)非常重要,一是大規(guī)模開(kāi)放域多輪對(duì)話(huà)數(shù)據(jù)匱乏; 二是對(duì)話(huà)中涉及常識(shí)、領(lǐng)域知識(shí)和上下文,因此在對(duì)話(huà)回復(fù)時(shí),存在“一對(duì)多”問(wèn)題。
比如這個(gè)例子“李雷:今天好冷啊,外面風(fēng)好大。”韓梅梅Bot可以怎樣回復(fù)李雷呢?
A.是啊,天氣預(yù)報(bào)說(shuō)今天氣溫驟降10度呢。
B.好期待下雪啊,這樣就可以堆雪人了。
C.剛在外面走了一會(huì),發(fā)型都被吹亂了。
一個(gè)對(duì)話(huà)的上文(Context),往往可以對(duì)應(yīng)多個(gè)不同回復(fù)(Response)的方向。這些不同的回復(fù)隨著不同的人,不同的背景和環(huán)境可能有所不同,但都是合理的回復(fù)。
對(duì)于這種復(fù)雜的一對(duì)多的模式,神經(jīng)網(wǎng)絡(luò)擬合起來(lái)往往非常棘手。在學(xué)習(xí)這樣一對(duì)多的數(shù)據(jù)的時(shí)候,會(huì)因?yàn)槟P湍芰蛿?shù)據(jù)匱乏導(dǎo)致最終學(xué)習(xí)的效果趨向于平庸,極易產(chǎn)生如“哈哈”、“嗯”這樣大家熟知的索然無(wú)味的“聊天終結(jié)語(yǔ)”。
預(yù)訓(xùn)練模型近年來(lái)不管在自然語(yǔ)言理解還是在自然語(yǔ)言生成領(lǐng)域都產(chǎn)生了巨大的影響。利用通用語(yǔ)料進(jìn)行預(yù)訓(xùn)練,在目標(biāo)領(lǐng)域上能用少量的數(shù)據(jù)得到很好的效果。
盡管如此,對(duì)話(huà)預(yù)訓(xùn)練的效果因?yàn)樯鲜鲈蛉匀徊荒茏屓藵M(mǎn)意。為了解決這些問(wèn)題,百度提出了基于飛槳開(kāi)源深度學(xué)習(xí)平臺(tái)開(kāi)發(fā)的一個(gè)新的對(duì)話(huà)生成框架——帶離散隱變量的對(duì)話(huà)生成預(yù)訓(xùn)練模型“柏拉圖”(PLATO)。
隱變量較為普遍地在VAE、CVAE等技術(shù)中使用,但在論文中,作者們首次提出將離散的隱變量結(jié)合Transformer結(jié)構(gòu),應(yīng)用到通用的對(duì)話(huà)領(lǐng)域。通過(guò)引入離散隱變量,可以對(duì)上文與回復(fù)之間的“一對(duì)多”關(guān)系進(jìn)行有效建模。
同時(shí),文章中通過(guò)利用大規(guī)模的與人人對(duì)話(huà)類(lèi)似的語(yǔ)料,包括Reddit和Twitter,進(jìn)行了生成模型的預(yù)訓(xùn)練,后續(xù)在有限的人人對(duì)話(huà)語(yǔ)料上進(jìn)行微調(diào),即可以取得高質(zhì)量的生成效果。
PLATO可以靈活支持多種對(duì)話(huà),包括閑聊、知識(shí)聊天、對(duì)話(huà)問(wèn)答等等。而文章最終公布的在三個(gè)公開(kāi)對(duì)話(huà)數(shù)據(jù)集上的測(cè)試,PLATO都取得了新的最優(yōu)效果。
模型介紹
在PLATO中,離散隱變量可以有K個(gè)取值,它的每個(gè)取值,是與一個(gè)回復(fù)中的意圖相對(duì)應(yīng)的,或者可以理解為多樣化的對(duì)話(huà)的動(dòng)作(Action)。
在PLATO的訓(xùn)練中,有2個(gè)任務(wù)同步進(jìn)行,且共享網(wǎng)絡(luò)參數(shù):回復(fù)生成和隱變量識(shí)別。給定上文和離散隱變量的取值(即確定了回復(fù)中的意圖),生成任務(wù)會(huì)盡量最大化目標(biāo)回復(fù)的似然概率。
同時(shí),識(shí)別任務(wù)盡量估計(jì)給定上文和目標(biāo)回復(fù)對(duì)應(yīng)的隱變量取值。顯然,隱變量的準(zhǔn)確識(shí)別,可以進(jìn)一步提升回復(fù)生成的質(zhì)量。
PLATO的網(wǎng)絡(luò)架構(gòu)如圖1所示,由Transformer Blocks組成。針對(duì)多輪對(duì)話(huà)的輸入的表示方法,PLATO也進(jìn)行了獨(dú)特的設(shè)計(jì),每個(gè)token的Input Embedding是由對(duì)應(yīng)的token、role、turn和position embedding相加得到。
預(yù)訓(xùn)練中同步進(jìn)行了2個(gè)任務(wù)——回復(fù)生成(Response Generation)和隱變量識(shí)別(Latent Act Recognition)。
在回復(fù)生成任務(wù)中,PLATO借鑒UniLM使用了靈活的注意力機(jī)制:對(duì)上文進(jìn)行了雙向編碼,充分利用和理解上文信息;對(duì)回復(fù)我們進(jìn)行了單向解碼,適應(yīng)回復(fù)生成的Autoregressive特性。
在隱變量識(shí)別任務(wù)中,PLATO使用特殊符號(hào)[M]作為輸入,收集給定上文和目標(biāo)回復(fù)的信息,用于估計(jì)回復(fù)意圖(即離散隱變量的取值)。
?
圖1 帶離散隱變量對(duì)話(huà)生成預(yù)訓(xùn)練的網(wǎng)絡(luò)架構(gòu)
PLATO訓(xùn)練使用了三個(gè)目標(biāo)函數(shù)(Loss Function)——negative log-likelihood (NLL) loss、bag-of-words (BOW) loss和response selection (RS) loss,如圖1最后一列所示。
在文本生成任務(wù)中,最常用的是NLL loss,PLATO引入了BOW loss是為了促進(jìn)離散隱變量的訓(xùn)練。此外,RS可以輔助判斷一個(gè)回復(fù)與上文的相關(guān)性。
PLATO的模型由大規(guī)模語(yǔ)義預(yù)訓(xùn)練模型進(jìn)行參數(shù)初始化,在預(yù)訓(xùn)練中,PLATO使用了8.3M Twitter和Reddit對(duì)話(huà)樣本。預(yù)訓(xùn)練的PLATO模型以及代碼,已經(jīng)在GitHub上開(kāi)源,開(kāi)源地址見(jiàn)本文開(kāi)頭部分。
實(shí)驗(yàn)結(jié)果及分析
為了驗(yàn)證預(yù)訓(xùn)練模型的效果,論文在3個(gè)公開(kāi)對(duì)話(huà)數(shù)據(jù)集上進(jìn)行了測(cè)試:Persona-Chat、Daily Dialog以及DSTC7-AVSD。
Persona-Chat是典型的知識(shí)聊天任務(wù):兩個(gè)人講述自己信息(Persona Profiles),并在對(duì)話(huà)中盡量了解對(duì)方;Daily Dialog偏向日常閑聊類(lèi)型;DSTC7-AVSD是對(duì)話(huà)式問(wèn)答,根據(jù)視頻場(chǎng)景信息,兩人進(jìn)行多輪問(wèn)答,討論視頻中物體和事件。
在每個(gè)數(shù)據(jù)集上的實(shí)驗(yàn),作者們對(duì)比了基線(xiàn)方法以及每個(gè)數(shù)據(jù)集上的SOTA方法。PLATO在Persona-Chat和Daily Dialog上的自動(dòng)和人工評(píng)估結(jié)果,如表1所示。
?
表1 Persona-Chat和Daily Dialog上的評(píng)估結(jié)果
PLATO在DSTC7-AVSD上的結(jié)果,如表2所示。
?
表2 DSTC7-AVSD上的自動(dòng)評(píng)估結(jié)果
由這些結(jié)果可見(jiàn),PLATO在各個(gè)對(duì)話(huà)數(shù)據(jù)上,均超過(guò)了當(dāng)前最優(yōu),取得了新的最優(yōu)效果。
PLATO也與其他預(yù)訓(xùn)練模型進(jìn)行了對(duì)比,在Persona-Chat上的實(shí)驗(yàn)結(jié)果如表3所示,其中2.2是不使用Latent Space的對(duì)比模型,3.1是完整PLATO模型。
?
表3 不同預(yù)訓(xùn)練模型在Persona-Chat的PPL結(jié)果
通過(guò)對(duì)比這些結(jié)果,可以看出:
靈活的注意力機(jī)制可以充分利用上文的雙向信息(Model 1.2 v.s. Model 1.3);大規(guī)模的Twitter和Reddit語(yǔ)料,顯著改善回復(fù)生成(Group 2&3 v.s. Group 1);離散隱變量的引入,則可以進(jìn)一步提升回復(fù)質(zhì)量(Model 3.1 v.s. Model 2.2)。
對(duì)于PLATO的定性分析,論文也在表4中提供了一些case。給定一個(gè)上文,通過(guò)對(duì)離散隱變量進(jìn)行不同賦值,PLATO可以產(chǎn)生多樣且都合理的回復(fù)。
?
表4 PLATO模型生成的回復(fù)
總結(jié)和未來(lái)工作
盡管越來(lái)越多的工作證明了隨著預(yù)訓(xùn)練和大規(guī)模語(yǔ)料的引入,自然語(yǔ)言處理領(lǐng)域開(kāi)啟了預(yù)訓(xùn)練然后微調(diào)的范式。在對(duì)話(huà)模型上,大規(guī)模預(yù)訓(xùn)練還處于初級(jí)階段,需要繼續(xù)深入探索。
論文提出的隱變量空間預(yù)訓(xùn)練模型,可能成為端到端對(duì)話(huà)系統(tǒng)邁上一個(gè)新臺(tái)階的關(guān)鍵點(diǎn)之一。百度NLP也在持續(xù)優(yōu)化當(dāng)前對(duì)話(huà)模型,在不久的將來(lái),更加強(qiáng)大的對(duì)話(huà)預(yù)訓(xùn)練模型也許會(huì)被陸續(xù)披露。
如果您加入官方 QQ 群,您將遇上大批志同道合的深度學(xué)習(xí)同學(xué)。官方 QQ 群:703252161。
如果您想詳細(xì)了解更多飛槳的相關(guān)內(nèi)容,請(qǐng)參閱以下文檔。
- Dialogue-PLATO項(xiàng)目地址:https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO
- 官網(wǎng)地址:https://www.paddlepaddle.org.cn
- 飛槳開(kāi)源框架項(xiàng)目地址:
GitHub: https://github.com/PaddlePaddle/Paddle
Gitee: https://gitee.com/paddlepaddle/Paddle
總結(jié)
以上是生活随笔為你收集整理的对话预训练_百度发布首个大规模隐变量对话模型PLATO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eclipse集成lombok了但是无法
- 下一篇: pr如何处理音效_Pr基础全通关:从0到