普通文檔也能變對(duì)話:深入理解對(duì)話補(bǔ)全技術(shù)
當(dāng)我們提到對(duì)話機(jī)器人,你是否也會(huì)像我一樣立刻想起與Siri或者Alexa的一次次對(duì)話,雖然它們有時(shí)候可能會(huì)讓你啼笑皆非,但也無(wú)可否認(rèn)它們確實(shí)為我們的生活帶來(lái)了很大便利。然而,訓(xùn)練這樣的對(duì)話AI,其難點(diǎn)在于如何獲取高質(zhì)量的對(duì)話數(shù)據(jù)。過去我們通常需要收集大量的人類對(duì)話作為訓(xùn)練數(shù)據(jù),這既費(fèi)時(shí)又費(fèi)力。那么,有沒有更好的方法呢?
偶然想起去年閱讀的一篇論文,介紹了一種對(duì)話補(bǔ)全的方案,非常有趣。今天就向大家介紹一種全新的方法——對(duì)話補(bǔ)全,它能幫我們把普通的文檔轉(zhuǎn)變成聊天記錄。讓我們一起探索這個(gè)顛覆傳統(tǒng)的技術(shù),看看它如何打破界限,讓任何一篇文檔都能“說話”。
首先,讓我們看一下“對(duì)話補(bǔ)全”(inpainting)這個(gè)詞。它其實(shí)是從圖像處理那塊借用過來(lái)的,原意是指用周圍的像素信息來(lái)補(bǔ)全圖片中缺失或者損壞的部分。而在這篇論文里,我們可以理解為用已有的對(duì)話內(nèi)容來(lái)推測(cè)和補(bǔ)全對(duì)話中缺失的部分。就好像我們?cè)诳匆环嫊r(shí),如果畫中有一部分缺失,我們就會(huì)想象這部分應(yīng)該是什么樣的,以使畫看上去更完整。在對(duì)話補(bǔ)全中,我們也是這樣,利用已有的對(duì)話內(nèi)容來(lái)猜測(cè)缺失的部分,讓整個(gè)對(duì)話聽起來(lái)更流暢、更完整。
下面我們來(lái)看看這個(gè)論文是怎么講的。
簡(jiǎn)介
對(duì)話機(jī)器人需要大量的優(yōu)質(zhì)對(duì)話來(lái)進(jìn)行訓(xùn)練,但這種數(shù)據(jù)往往不太好找。因此,論文作者想出了一種新的方法,叫做"對(duì)話補(bǔ)全",就是把普通的文章改編成像我們?nèi)粘A奶煲粯拥膶?duì)話。這樣一來(lái),我們就能從各種各樣的文章中獲取大量的對(duì)話內(nèi)容了。具體來(lái)說,就是把文章的每一句話看作一個(gè)人的發(fā)言,然后機(jī)器人就要猜測(cè)另一個(gè)人可能的回答或者提問。
訓(xùn)練的部分
對(duì)話補(bǔ)全器(inpainting)使用的是一種叫做T5的生成模型,這是一種編碼器-解碼器的模型。這個(gè)模型的訓(xùn)練方法跟我們之前見過的BERT模型有點(diǎn)類似,只不過有一個(gè)關(guān)鍵的不同:BERT是在句子中遮蔽單個(gè)的詞語(yǔ)來(lái)訓(xùn)練模型,而在這里,我們是遮蔽掉整個(gè)發(fā)言來(lái)訓(xùn)練模型。
舉個(gè)例子,考慮以下對(duì)話:
講話者1:“你好,你怎么樣?”
講話者2:“我很好,謝謝你。你呢?”
講話者1:“我也很好,謝謝你的關(guān)心?!?/code>
在對(duì)話補(bǔ)全任務(wù)中,可能會(huì)遮蔽一個(gè)完整的發(fā)言,像這樣:
講話者1:“你好,你怎么樣?”
講話者2:?
講話者1:“我也很好,謝謝你的關(guān)心?!?/code>
模型的任務(wù)就是預(yù)測(cè)缺失的發(fā)言(在這個(gè)例子中,“我很好,謝謝你。你呢?”)。用于訓(xùn)練的損失函數(shù)是標(biāo)準(zhǔn)的交叉熵?fù)p失,它的目標(biāo)是最小化原始發(fā)言在部分對(duì)話給出的情況下的負(fù)對(duì)數(shù)概率。
推理階段
在推理階段,訓(xùn)練好的補(bǔ)全模型被用來(lái)將一篇文章轉(zhuǎn)化為對(duì)話。假設(shè)我們有一篇這樣的文章:
“貓是小型的食肉哺乳動(dòng)物?!?“它們經(jīng)常被當(dāng)作寵物。”
“貓有強(qiáng)壯的柔韌體骼,反應(yīng)快,爪子銳利且可以伸縮。”
這篇文章被視作在一個(gè)假設(shè)的對(duì)話中,作者的一系列發(fā)言。這個(gè)對(duì)話最初看起來(lái)像這樣:
作者:“貓是小型的食肉哺乳動(dòng)物?!?
讀者:?
作者:“它們經(jīng)常被當(dāng)作寵物。”
讀者:?
作者:“貓有強(qiáng)壯的柔韌體骼,反應(yīng)快,爪子銳利且可以伸縮?!?
讀者:?
問號(hào)代表對(duì)話中缺失的部分,這就是對(duì)話補(bǔ)全模型設(shè)計(jì)的目的,去填補(bǔ)這些缺失的部分。用了對(duì)話補(bǔ)全模型后,對(duì)話可能會(huì)變成這樣:
作者:“貓是小型的食肉哺乳動(dòng)物?!?
讀者:“貓一般常在哪些地方出沒呢?”
作者:“它們經(jīng)常被當(dāng)作寵物。”
讀者:“貓有哪些特殊的身體特征呢?”
作者:“貓有強(qiáng)壯的柔韌體骼,反應(yīng)快,爪子銳利且可以伸縮?!?
讀者:“真有意思,你能再多介紹一些關(guān)于貓的行為習(xí)性嗎?”
文章和對(duì)話的例子
再讓我們看另一篇文章:
“大象是大型哺乳動(dòng)物?!?
“它們有長(zhǎng)長(zhǎng)的鼻子。”
“大象是食草動(dòng)物?!?/code>
用了對(duì)話補(bǔ)全模型后,對(duì)話可能會(huì)變成這樣:
作者:“大象是大型哺乳動(dòng)物?!?
讀者:“大象有哪些獨(dú)特的特征呢?”
作者:“它們有長(zhǎng)長(zhǎng)的鼻子?!?
讀者:“大象平時(shí)都吃些什么?”
作者:“大象是食草動(dòng)物?!?
讀者:“真有趣,你能告訴我更多關(guān)于大象的棲息地信息嗎?”
總結(jié)
"對(duì)話補(bǔ)全"就像是給聊天記錄中的空白部分填充內(nèi)容。它可以幫我們把普通的文章變成像人們?nèi)粘?duì)話一樣的聊天記錄。這對(duì)于訓(xùn)練聊天機(jī)器人來(lái)說是個(gè)好方法,因?yàn)樗芴峁┐罅控S富、真實(shí)的對(duì)話內(nèi)容。所以,這個(gè)技術(shù)可能會(huì)給聊天機(jī)器人的發(fā)展帶來(lái)很大的幫助。