來這里找志同道合的小伙伴!背景介紹 對話生成模型是最近幾年才被提出的模型,該模型從提出開始便迅速的成為了學術界和工業(yè)界的研究熱點。 提到對話生成模型,我們不得不先提到Sutskever和Cho兩個大神。其實這兩個人沒有一個是研究對話生成模型的。那我們?yōu)槭裁匆岬竭@兩個人呢?因為現(xiàn)在大多數對話生成模型的框架都是以這兩個人的工作為基礎的。這兩個人到底是干什么的呢?他們是研究機器翻譯的。他們兩個人來自于不同的團隊,但都在2014年發(fā)表了廣受業(yè)界關注的文章。他們的文章中都提出了用RNN Encoder Decoder的框架去做機器翻譯。這個框架剛一提出,瞬間就火了,為什么呢?因為它相比于傳統(tǒng)的方法效果提升了很多。而且它是端到端的,就是說在這個框架下不需要過多的人工參與,只要將一句話輸入到RNN Encoder-Decoder的網絡中,就可以自動的生成一句話,省去了人工提取特征這個煩人的操作。 之后Cho大神又和Bahdanau合作提出了Attention based Encoder Decoder。這個模型把機器翻譯的效果又提升了一大截,特別是對長句子的效果要比原有的RNN Encoder Decoder好很多。這下RNN一時間占領了自然語言處理領域,幾乎所有研究自然語言處理任務的人都開始研究用RNN解決他們的問題。 對話生成模型也是在這個RNN的大潮下被提出的。對話生成和機器翻譯的輸入和輸出都是句子。因此,人們很容易的想到了將Sutskever和Cho兩個大神的思路直接套用到對話生成模型上,然后在此基礎上再做一些改進。 2015年,有關對話生成模型的論文井噴似的產生。其中華為諾亞方舟實驗室在這方面做了比較突出的貢獻,他們在Attention based Encoder Decoder的基礎上提出了Neural Response Machine。個人認為他們工作的主要貢獻是給研究者們指明了一個新的研究方向——對話生成模型研究。同時他們給出了一個現(xiàn)在公認有效的評估方式——人工評測。 大多數研究對話生成模型的團隊都是從互聯(lián)網上收集了大規(guī)模的對話語料作為訓練數據。在大數據的支撐下,對話生成模型的效果尚可。在我們的實際工作中,可能需要構建特定領域的對話生成模型。比如:微信有很多公眾號,我們可以給每個公眾號搭建一個聊天機器人,但是每個公眾號都有他們特定的領域,而特定領域的聊天語料一般都是較為稀缺的,無法滿足訓練對話生成模型的需求。那么怎么辦呢?難道對話生成模型就不能用到特定領域的聊天機器人中了嗎? 對話生成模型那么好,我們怎么可能輕易放棄呢?數據量少就想辦法唄,萬一找出一個解決辦法我們是不是也能像Sutskever和Cho兩個大神一樣火一次。上文提到了大多數研究對話生成模型的團隊都是從互聯(lián)網上收集了大規(guī)模的對話語料數據作為訓練數據,這些數據雖然不是特定領域的對話數據,但起碼也是對話數據啊,我們是不是可以想個辦法利用這部分數據幫助特定領域的對話生成模型的訓練呢。 在我們的冥思苦想之下,終于看到了一點曙光。我們發(fā)現(xiàn)了秘密武器——適應的對話生成模型。下面兩章我們先介紹一下對話生成模型是怎么實現(xiàn),之后介紹一下適應性對話生成模型的原理。 對話生成模型 如圖一所示,對話生成模型一般采用RNN Encoder Decoder的框架。Encoder將輸入的問題編碼到一個隱向量中,Decoder負責對這個隱向量進行解碼,得到最后輸出的答案。RNN Encoder Decoder可以看做是最大化給定輸入問題條件下輸出答案的條件概率。假設我們有一個語料集,其中表示輸入的問題,表示輸出的答案, 表示語料中問題與答案對的個數,那么對話模型的目標函數就可以表示為:
適應的對話生成模型 適應的對話生成模型利用了全領域的對話數據(即從互聯(lián)網上可以直接收集到的大規(guī)模對話數據)幫助訓練特定領域的對話生成模型。一提到利用全領域數據幫助訓練特定領域的對話生成模型,我們最直接的可以想到兩種方式。 第一種是將全領域數據和特定領域的對話數據集合在一起,共同訓練特定領域的對話模型,這種方式可以有效的解決數據量不足的問題,但是由于全領域的對話數據量遠超過特定領域的對話數據量,因此,特定領域的對話數據將被全領域的對話數據淹沒,導致訓練出來的對話生成模型生成答案的風格和全領域的答案風格比較接近,而和特定領域的答案風格先去甚遠。 第二種是利用全領域的對話數據先訓練一個對話模型,然后用該模型做為初始化模型,再用特定領域的對話數據fine-tune這個模型。這種方式往往會導致模型過擬合到特定領域對話數據上,即全領域的對話數據信息無法保留下來,最后的模型依然是只包含了特定領域的數據信息,由于特定領域數據的信息較少,該模型無法達到預期。 而我們提出的適應的對話生成模型相比于上述兩種方式可以更有效的防止特定領域的數據被全領域的對話數據淹沒,同時防止模型過擬合到特定領域的數據上。那么我們的模型是怎么實現(xiàn)的呢?請看圖二。 和前面提到的第二種方式類似,我們的模型先利用全領域數據對模型進行預訓練,然后利用預訓練的模型參數對特定領域的對話模型進行初始化。 和第二種方式不同的是,我們的模型不是直接進行fine-tune的,而是將預訓練模型的信息作為一個監(jiān)督信息加入到了目標函數中,使得適應的對話生成模型保留著全領域的信息,防止了其過擬合到特定領域的對話數據上。這個監(jiān)督信息是通過預訓練模型與適應的對話生成模型的KL散度加到目標函數中的,其可以看做是一個正則項。適應的對話生成模型在保證最大化給定輸入問題條件下輸出答案的條件概率的同時,還要使模型與全領域數據訓練出來的模型盡可能的接近,即兩者的KL散度盡可能的小,以保證適應的對話生成模型中保留全領域數據的信息,防止模型過擬合到特定領域上,因此我們改進后的目標函數如下: 其中表示全領域中的數據分布,表示正則化權重,表示KL散度函數。 上式中的正則化權重的取值是從 0 到 1 的。當時,全領域數據的信息對 于適應的對話生成模型的訓練沒有任何影響,適應的對話生成模型和前文提到的 第二種直接fine-tune的模型相同。相反,當時,適應的對話生成模型完全 信賴全領域的數據信息,而忽略了特定領域對話數據的信息。該值的確定與特定 領域的對話數據量有關,如果特定領域對話數據較少, 應該取值較大,模型需要從全領域數據中提取較多的信息完成模型訓練,反之亦然。 總結與展望 特定領域的智能聊天機器人是目前國內外互聯(lián)網公司關注的熱點之一,我們的方法讓對話生成模型向實際應用到智能聊天機器人中更近了一步。但是即使應用了我們的方法,特定領域對話生成模型仍然存在著生成回答與問句無關以及生成回答趨向于高頻答案等問題。要解決上述問題,需要從改進對話生成模型以及更好的利用遷移學習將外部信息引入到對話生成模型的訓練中兩方面入手,這也是我們日后的兩個重點研究方向。 參考文獻 [1]Dzmitry Bahdanau, KyunghyunCho, and Yoshua Bengio. Neural machine translation by jointly learning to alignand translate. CoRR, abs/1409.0473, 2014. [2]Kyunghyun Cho, Bart vanMerrienboer, C? aglar G¨ulc?ehre, Fethi Bougares, Holger Schwenk, and YoshuaBengio. Learning phrase representations using RNN encoder-decoder forstatistical machine translation. CoRR, abs/1406.1078, 2014. [3]Ilya Sutskever, OriolVinyals, and Quoc V. Le. Sequence to sequence learning with neural networks.CoRR, abs/1409.3215, 2014. [4]Lifeng Shang, Zhengdong Lu,and Hang Li. Neural responding machine for short-text conversation. CoRR,abs/1503.02364, 2015. 微信AI 人工智能,走進生活 |
|