0
本文作者: 黃善清 | 2018-09-06 09:36 |
雷鋒網(wǎng)AI研習社按:現(xiàn)如今,諸如小冰這類閑聊機器人逐漸進入了大眾的視野,甚至成為了一部分人打發(fā)閑暇時光的伴侶。然而,現(xiàn)在的閑聊機器人在對話的互動性、一致性以及邏輯性上都還存在著一些亟待解決的缺陷。
近日的 AI 研習社大講堂上,來自清華大學的王延森分享了一篇收錄于ACL2018的論文,嘗試著利用提問來解決閑聊機器人互動性不足的問題。
分享嘉賓:
王延森,清華大學計算機系本科生,現(xiàn)于清華大學計算機系人工智能實驗室交互式人工智能課題組,師從黃民烈教授從事科研工作,主要研究方向為對話系統(tǒng)、文本生成、邏輯信息處理等。
公開課回放地址:
分享主題:如何利用提問增強開放領域?qū)υ捪到y(tǒng)互動性
分享提綱:
開放領域?qū)υ捪到y(tǒng)的發(fā)展現(xiàn)狀,存在的問題
利用提問解決開放領域?qū)υ捪到y(tǒng)中存在的互動性問題的可行性與核心思路
如何利用分類型解碼器(typed decoder)在對話系統(tǒng)中提出恰當而有意義的問題
模型在數(shù)據(jù)集上結果分析以及仍然存在的問題
雷鋒網(wǎng)AI研習社將其分享內(nèi)容整理如下:
今天很榮幸可以和大家分享這篇論文,我們把類型解碼器運用到開放式對話系統(tǒng)的提問中,來增強系統(tǒng)和人的互動性。
我會先給大家介紹開放式對話系統(tǒng),以及該領域目前依然存在哪些問題,從而引出我們?yōu)槭裁匆趯υ捪到y(tǒng)中引入提問環(huán)節(jié),再與現(xiàn)有的工作進行對比,接著會講解我們的類型解碼器,最后給大家介紹我們的數(shù)據(jù)集。
對話系統(tǒng)聽起來似乎很高大上,說白了就是人與計算機的交互。
從種類上來說,可以分為閑聊系統(tǒng)和任務型系統(tǒng)。關于閑聊系統(tǒng),我舉幾個例子大家可能就會明白:Siri 和小冰,當你和閑聊系統(tǒng)聊天時,它能夠像朋友一樣跟你聊天。任務型任務典型的例子是銀行的機器人客服系統(tǒng),你給它提業(yè)務上的一些問題,可以立馬獲得解答。
從解決方法上來說,對話系統(tǒng)又可以分為:基于規(guī)則、基于檢索和基于生成。基于規(guī)則的特點在于會提前設好模式(pattern),需要的時候會根據(jù)模式進行回復;基于檢索則是通過模型訓練或者模型學習,從已有的樣本中挑出最好的回復;基于生成指的是通過深度學習或者機器學習的方式,讓訓練樣本可以針對不同輸入而給出不同的回復。
今天我們主要談的是基于生成的閑聊系統(tǒng),先來看一些比較新的研究成果。
這是利用深度學習模型所訓練出的一些比較好的結果??梢钥闯?,機器學習生成方式具有一個很好的優(yōu)點,就是具有一定的創(chuàng)新性的,不再局限于訓練數(shù)據(jù)中的結果,而是基于生成模型來生成回復,因此回復往往富有創(chuàng)造力。
不過模型也存在局限性,在理解上文邏輯這塊做得還是比較薄弱。
從更高層面來看,我們還發(fā)現(xiàn)了語義理解、上下文理解、個性身份一致性的問題。很多人在使用閑聊系統(tǒng)過程中發(fā)現(xiàn),很多時候聊到一半便進行不下去,是因為機器人自己先把天聊死了。
有些甚至還涉及到道德層面的問題,一旦機器人沒法理解人類話語中的意圖,就會容易造成誤解。
上圖展示了一名用戶在情緒抑郁時對機器人說的話,以第二條為例,用戶表示隔天自己不想活了,結果機器人很自然地接了一句:好的,我會提醒你。
簡單總結一下,機器系統(tǒng)在句義理解、上下文一致性和交互性上存在不同程度的問題,而這些問題主要體現(xiàn)在內(nèi)容、AI 個性化、AI 情感以及聊天策略上,目前已有一些工作在努力解決這一個問題。
比如這 3 篇文章分別從情感交互、提問以及控制句式入手,試圖解決機器的交互性問題;針對上下文一致性的問題,這幾篇文章強調(diào)賦予機器人獨立人格,這樣機器人才不會問答過程中迷失自我;至于如何讓機器人變得機靈,這篇文章建議可以從外部引入常識信息庫,避免出現(xiàn)一些牛頭不對馬嘴的回答。
我們今天來談談如何通過提問來增強機器人的互動性。
機器可能不清楚什么是好的提問,這個涉及一個重要的因素:場景理解,也就是說,機器要理解整句話在說什么,而不是局限于某個局部,這樣才能達到最好的提問效果。
過往的研究表明,提問是一種更加主動的行為方式,有利于對話順利開展下去。過去所做的工作更多是讓系統(tǒng)及時定位到文章里的關鍵信息所在,并據(jù)此作出提問,這也意味著,提問無助于提高文章整體的信息增量,而是基于上文內(nèi)容的一個重復提問,這樣并不適合直接運用到對話系統(tǒng)中。
我們的探索與前人的工作主要存在幾個不同之處:
一、我們希望增強互動性和持續(xù)性,讓聊天有效進行下去,而過去的工作更像是一種信息檢索;
二、在提問的種類上,過去的工作給定答案之后,問題的形式就被定死了,而我們的提問希望由對話系統(tǒng)自己找到合適的提問方式;
三、在大多數(shù)情況下,我們并不是對上文中的東西進行提問,而是對與其相關的東西進行提問,這就要求模型在給定的話題下進行一定程度的遷移。
通過簡單的觀察后我們發(fā)現(xiàn),一個好的問題應該由疑問詞、話題詞以及普通詞組成——疑問詞決定提問模式,話題詞則給模型提供了話題遷移的能力。
于是我們提出了一種新型的生成模型——類型解碼器,將句式的生成分為兩個步驟,首先是定位好類型,再按照類型找到對應的詞。根據(jù)對于詞類型的劃分程度,我們將我們的類型化解碼器分為了強類型化解碼器和弱類型化解碼器兩種,分別用 HTD 與 STD 表示。
我們首先看弱類型化解碼器 STD,對于當前的解碼狀態(tài),我們會通過一個信息層估計每一種詞(疑問詞/話題詞/普通詞)并據(jù)此生成概率分布。我們假設每一個詞都有能力充當某種類型的詞,所以會維護三個內(nèi)容相同的類型詞表。每一種類型的解碼會先預測這個詞表中每個詞出現(xiàn)的概率,再對當前解碼位所需要的詞語類型概率進行一個預測,最后將二者結合起來得到最終的詞表概率分布,取其合縱最大的一個作為生成詞。在同一個詞表中使用不同的分布,每個分布都會有對應的類型,于是我們使用一個混合策略,將這些概率分布混合起來。
下面是全概率公式在這個問題中的運用:每個位置的概率=當前需要每種類型的概率乘上這個詞在當前位置作為這種類型的概率。
計算概率的方式很簡單,就是在最終的狀態(tài)上加入不同的線性層即可。
軟類型解碼器有一個明顯的問題,就是明明有些詞壓不太可能作為一個特定類型的詞出現(xiàn),我們卻認為它都有可能,讓模型去學這種可能性,聽起來有些荒誕。
對于強類型解碼器來說,我們希望能夠人為控制這些本不應當學習的部分,這個「強」主要體現(xiàn)在兩個部分:
第一,有些詞的詞性我們需要實現(xiàn)確定
第二,對于每個位置具體選擇哪種類型的詞,要有一個明確的判斷
讓我們來看一下模型的框架。
在強類型解碼器中,只存在一個詞表,詞表被分為 3 個部分,每個部分對應不同的類型。我們先預測某個類型上的概率分布,再利用 gumbel-softmax 做銳化,使其起到類似 gate 的作用,最后利用 gate 去調(diào)適整個詞表上的概率。
讓我們來看一下公式。
具體如何做參數(shù)調(diào)制,再看一組例子。
調(diào)制我們可不可以考慮使用 argmax 呢?首先,argmax 的函數(shù)是不可導的,也就是說模型在訓練的過程中梯度回傳可能會帶來一些問題。另外,一旦詞類預測錯誤,無論詞表的預測多么正確,都沒有挽回的余地,這也是我們最終沒有使用 argmax 的原因,而是選擇使用一個叫 gumble-softmax 的機制。
gumble-softmax 機制遵循 gumble distribution 的分布,引入了隨機化因素,方便訓練模型來抹平一些不必要的銳化。
其中,Tau 表明的是 gumble-softmax 的銳化程度,是一個重要的超參數(shù),它決定了模型的銳化程度。如果 Tau 是 1 意味著銳化程度保持不變,趨于 0 就會退化成 argmax,趨于正無窮就會形成均勻分布。簡而言之,Tau 越小,銳化的作用越明顯,Tau 越大,模糊的作用越明顯。我們希望通過銳化方式來控制類型的生成,所以在實際使用中一般會取小于 1 的 Tau 值。
在解決了強制控制類型的問題以后,我們來看如何決定詞類分布的問題,也就是如何決定每個詞對應的類型。
疑問詞比較好確定,因為一共就那么幾種提問方式;話題詞的確定要稍微麻煩一點,在訓練中,我們會將 response 里的所有名詞和動詞作為話題詞訓練,也就是將回復中的名詞和動詞所在對應詞表的位置都標記為話題詞。
然而在實際使用中,回復不可能事先給定好,所以會稍稍麻煩一些。為了更好的進行預測,我們引入了點互信息 PMI 這么一個概念,用于衡量 post 中出現(xiàn)的詞與在 response 中出現(xiàn)的詞之間的關聯(lián)程度。
在實際運用中,我們會把 post 中的每個詞與詞表中詞 ki 的 PMI 利用這樣一個公式結合起來,就得到了詞表中的詞 ki 與上文的相關程度。
排名前 20 個(超參數(shù))的成為話題詞,話題詞或疑問詞以外的被歸類為普通詞。
至于在損失函數(shù)這塊,我們除了像一般的模型一樣在詞表的概率分布上做出了損失函數(shù),同時也在詞類的 gate 上加了監(jiān)督,并且利用 lambda 這樣一個超參數(shù)將兩部分進行調(diào)和。
說完了模型,讓我們來看一下實驗的部分。
伴隨著工作出現(xiàn)了一個全新的數(shù)據(jù)集——對話生成中的對話數(shù)據(jù)集,是我們從微博數(shù)據(jù)集中篩選出來的,大概有九百萬條,后來過濾了一些不太重要的回復。
這是一些自動評價的指標。
困惑度描述的是語法性問題,而 distinct-1 和 distinct-2 描述的是詞匯的豐富性,至于 TRR 則是我們自己提出的指標,它表示話題詞占到總回復的比例。總的來看,我們的模型在這些指標上都取得了很好的結果。
接下來看一看人工評價結果。
我們主要通過兩兩對比的方式進行評測,評價主要由以下三個指標組成:合適性、豐富性、回復意愿。在這個環(huán)節(jié)上我們的模型也取得顯著的結果,其中強類型解碼器要優(yōu)于弱類型解碼器。
這里也給出了一些生成的例子。
過往的模型只能給出類似「什么」、「什么情況」這樣一些通用回復,并不具備從上文抓取話題詞做話題遷移的能力,而我們的提問模型就比較豐富,只是在常識問題這塊還有待改善。
從類型控制的結果可以看出,這個 gate 的作用非常明顯,針對在特定位置的類型可以把控得較好,從而生成對應類型的詞。
我們的模型常見的錯誤主要體現(xiàn)在沒有話題詞、生成錯誤的話題詞、類型預測錯誤,三者各自所占的比例都比較相近。
做個簡單的總結,我們希望通過控制問題中不同類型的詞語來生成問題,為此我們提出了強類型和弱類型的兩種解碼模型。這篇文章給大家提出了新問題、新數(shù)據(jù)集、新模型,以及存在的一些問題,比如類型與詞表框架錯位導致的語法問題。
以上就是本期嘉賓的全部分享內(nèi)容。更多公開課視頻請到雷鋒網(wǎng)AI研習社社區(qū)(https://club.leiphone.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。