當前位置:
首頁 > 新聞 > 清華大學柯沛:閑聊對話中的句式控制

清華大學柯沛:閑聊對話中的句式控制

雷鋒網AI研習社按:在閑聊對話領域,對話策略研究是近幾年的熱門話題,實現對話策略需要引入一些要素,讓聊天機器人變得更加擬人化,以便能跟用戶更好地交互。來自清華大學的柯沛認為,日常對話中的句式可以直接反映一個人的對話目的,通過引入句式控制,聊天機器人將能生成優質的回復——不僅句式受控,還包含了豐富的信息量。

在近日的 AI 研習社大講堂上,柯沛給我們介紹了這項具有開創性的研究成果。

分享主題:閑聊對話中的句式控制

分享提綱:

從對話策略分析句式控制的緣由

基於條件變分自編碼器的對話生成模型

生成質量的自動評價和人工評測

未來工作及展望

雷鋒網AI研習社將其分享內容整理如下:

很高興能有機會跟大家分享我們的工作,我叫柯沛,是清華大學計算機系的在讀博士生,研究方向是自然語言處理,主要關注自然語言生成和對話系統。

今天分享的是我們今年發表在 ACL 上的一個工作,研究的是閑聊對話中的句式控制問題。首先,我會從對話策略講起,跟大家談談閑聊對話主要會涉及哪些問題,再結合句式控制的任務介紹我們所使用的模型,然後通過機器評測和人工評測說明模型的效果,同時給出一些對話示例,最後總結我們的工作和未來的發展方向。

我們先來講一下對話策略的問題。閑聊對話與任務型對話有本質上的區別,閑聊對話最大的特點是涉獵的話題較廣泛,什麼都能聊。目前閑聊對話做得比較好的產品是微軟小冰,只要有足夠的耐心和它聊,對話就會一直持續下去。

在閑聊對話領域,對話策略研究是近幾年的熱門話題,實現對話策略需要引入一些要素,讓聊天機器人變得更加擬人化,能夠跟用戶更好地交互。比如我們實驗室所做的一個工作:通過引入情緒因素,讓聊天機器人可以生成帶有不同情緒的回復,提高用戶的聊天體驗。我們實驗室還試圖將人物設定賦予聊天機器人,讓聊天體驗變得更有意思。

我們這篇文章著重要談的是句式(Sentence Function)問題,在我們看來,日常對話中的句式可以直接反映一個人的對話目的,所以我們總結出了常見的 3 種句式類型:

第一種類型是疑問句,在雙方都不熟悉的情況下,如果我想認識你,可能就會更多使用疑問句,通過提問來獲取更多關於你的信息。

第二種類型是祈使句,主要用於發出請求或者邀請,類似的回復我們一律稱為祈使句,祈使句一般可以促進更深層次的交互。

第三種類型是平時用得比較頻繁的陳述句,從語氣上來講比較平淡,主要用於陳述事實或者解釋原因。

在進一步展開我們文章的話題前,需要跟大家理清幾個近義詞,Sentence Function 被我們暫譯為「句式」,根據Sentence Function可以把所有的句子劃分成多種Sentence Type,比如我們目前考慮的 3 種 Sentence Type:疑問句、祈使句和陳述句。然而單就疑問句而言,其實還包含很多種細分的模式,比如一般疑問句和特殊疑問句,這說明同一類型的句子中也可能存在多種不同的Sentence Pattern

既然我們說句式可以反映一個人的說話目的,那麼引入句式因素,是否就能有效提高聊天機器人的交互性呢?

這裡我們給了一個例子,用戶說我現在餓了,聊天機器人則可以根據不同的對話目的,給出不同句式類型的回復。

如果機器人想知道用戶為什麼餓了,那麼他會提問:你早餐吃的什麼呀?

如果機器人想向用戶發出邀請/請求,就會使用祈使句:那我們一起吃晚飯吧!

當然,機器人也可以選擇比較平穩的回復,這時會選擇陳述句:我也餓了,可你在午飯時候吃了很多。

為了賦予機器人生成不同句式的回復的能力,我們的工作在生成過程中規划了句式控制詞話題詞以及普通詞的生成位置,以達到理想的生成效果。

我們的工作涉及到可控對話生成和可控文本生成的任務,也就是說給定一個屬性值,生成的語言必須和這個屬性值相匹配,目前學界做的較多的是跟情緒相關的研究,比如設定一個情緒「喜歡」,聊天機器人自動生成各種與「喜歡」屬性相匹配的對話內容;還有一種更加粗線條的情感極性,主要分為「正向情感」和「負向情感」。另外還有一種與英語時態相關。還有人研究對話意圖,讓生成的對話能夠符合事先設定的對話意圖。也有人做「風格」相關的一些研究工作,不過這方面更多集中在圖像領域,比如說風格遷移,就語言領域的研究來講,這塊還是處於比較初級的階段(比如把對話風格統一調整為「男性」)。

以上這 5 類工作是近幾年比較熱門的研究方向。

回到我們的工作,我們首先會輸入用戶請求以及設定的句式類型,模型會生成一個回復——這個回復不僅在語義上要與用戶的請求對應,並且還要與設置的句式類別相匹配。

完成這項任務會面臨兩個比較大的挑戰:第一個是涉及到對生成過程的全局控制,比如生成一個疑問句,開頭可能是個疑問詞,中間還涉及到一些助動詞,最後可能還要考慮標點符號的因素;第二個挑戰在於如何平衡句式控制與信息量兼容性的問題,畢竟生成結果中如果不能包含豐富的信息量,句式控制得再完美也會影響到對話體驗。

基於條件變分自編碼器的對話生成模型

接下來我會給大家介紹我們的模型,看看我們是如何解決以上兩個挑戰的。

左邊是對話領域中常見的「編碼-解碼」結構,該結構一般帶有 attention,以增強 post 和 Response 間的對齊關係,然而僅僅只有這個結構,生成的結果肯定不是我們想要的,因此我們需要增加控制組件,讓模型能夠達到控制句式的效果。

整個模型主要基於條件變分自編碼器(CVAE 模型),該模型早年更多在圖像領域使用,一直到最近兩年才運用到文本與對話上來,如果只是單純引入 CVAE 作為技術框架,之前提到的全局控制與信息量兼容問題依然無法得到解決,因此我們便在原先的 CVAE 基礎上做了改進。

我會從四個關鍵部件來給大家講解這個模型,分別是:傳統的編碼-解碼器識別/先驗網路判別器以及類型控制器

傳統的編碼-解碼框架會先通過循環神經網路對用戶的 post 進行編碼,得到每個位置的隱層向量,然後再將隱層向量傳給解碼器,通過逐步解碼最終生成回復。是編碼器每個位置的隱狀態向量;是解碼器中每個位置的隱狀態向量;在我們得到解碼器中每個位置的隱狀態後,我們通過簡單的映射,即線性變換加上 softmax 層,來得到每一個位置生成每一個詞的概率,然後我們再從詞的概率分布里進行採樣,就能得到最終的解碼結果。這個是一個非常經典的帶有 attention 機制的編碼-解碼模型。

為了讓回復的句式能夠符合我們之前的設定,我們引入了識別網路和先驗網路。根據條件變分自編碼器原理,訓練的過程中我們是知道真實回復的,所以訓練的時候我們會利用後驗網路對 Post 信息和 Response 信息進行編碼,獲得隱變數分布的參數,隱變數分布選的是高斯分布,這裡我們假設協方差矩陣是對角陣,所以我們要得到的兩個參數是和,那麼我們可以設計一個識別網路,如 MLP,並通過識別網路得到隱變數的高斯分布。

這個高斯分布的用處是什麼呢?實際上引入隱變數的目的,是希望可以將一些跟句式相關的特徵編碼到隱變數中,然後再通過隱變數來引導 response 的生成。不過要注意的是,這個是在訓練的過程獲得的,測試過程是看不到真實回復的,所以在測試時我們使用了不包含 response 信息的先驗網路。

這樣可能造成的一個問題是,兩個不一樣的網路會導致訓練和測試之間存在隔閡。對此,我們的解決方案是通過設計一個 lost function 讓兩個網路的隱變數分布儘可能的接近,以保證測試的時候也能得到一個含有句式信息的隱變數分布。

經過識別/先驗網路後,我們會得到一個隱變數 z 的高斯分布,我們在高斯分布中採樣得到 z,那麼又會面臨一個新的問題:網路的輸入是 x(post)和 y(response),也就是說 z 是提取了 post 和 response 的信息,然而這個信息可能與句式無關,我們要怎麼做才能讓 z 編碼到儘可能多的句式信息呢?我們的解決方案是藉助判別器,判別器以 z 為輸入,最終得到一個分類結果,這個分類結果就是之前提到的三種句式(疑問句、祈使句、陳述句)上的離散概率。

分類器以輸入時設定的句式類別為監督,如果發現分類結果與人為設置的句式結果不一樣,就會產生一個 loss,進而督促 z 編碼更多在 Post 或者 response 中體現的句式信息。總的來說,判別器主要用於輔助 z 編碼與句式相關的信息。

接下來要分享的是比較重要的部分,那就是類型控制器,我們當前每一步的生成,解碼器都會計算,這個和編碼句式信息的 z 會通過類型控制器先在詞的類型上生成一個分布,看當前解碼位置上使用哪種類型的詞概率更高。

這裡我將詞分成了三種類型:第一類是句式控制相關的詞、第二類是話題相關的詞、第三類是起句子連接作用的普通辭彙。然後我們將類別上的概率分布放進正常的解碼過程中,這個概率分布與生成詞原本的概率分布可以做一個概率混合,最後得到每一個詞的解碼概率,通過採樣即可生成解碼結果。

這個類型控制器的實現也比較簡單,這裡用的是 MLP,輸入是把當前的(輸出端語言模型的信息)和 z(句式控制相關的信息)兩個結合起來,再過一個 MLP 和 softmax,最終得到詞類別上的概率分布。

我們的解碼器與一般解碼器不同的地方在於,在計算每一個詞的解碼概率時,使用的是混合的計算方式——根據當前的和 z 去挑選當前用哪一類詞更恰當,然後再到每個類型里去看哪一個詞的解碼概率更高一些,以此形成概率混合。其中,每一類的演算法各有不同,比如第一類句式控制相關的詞,這一類詞的在計算概率時會用到語言模型的信息、隱變數信息以及 label 信息。第二類主題詞與第三類普通詞的演算法會比較類似,但詞表略有不同,是一個比較常規的的投影過程。我們最終將三個詞表的結果用概率混合進行計算,就能得到我們解碼出每一個詞的概率了,至此,我們的解碼工作也就完成了。

最後我們再來回顧一下整個模型,這個模型會產生 loss 的地方主要有三點:第一點是最終生成的 response 與給定的 response 之間的交叉熵;然後在對 z 做分類時,判斷當前類別與我們設定的類別是否一樣,中間也會存在一個 Loss;第三個點是為了拉近識別網路與先驗網路產生的分布距離,我們設置了一個 KL 項,在這過程也會產生 loss。

三者我們做了聯合優化,最終得出一個總的 loss,再通過梯度下降等方法去訓練來得到我們最終的模型參數。

評測結果

我們工作的另外一項貢獻,是構建了一個帶句式標籤的中文數據集,這個數據在學界是比較少的。

數據集里大概有 196 萬的 post,response 和 post 在數量上對等,不過帶了相應的句式標籤,最後我們還保留了 6000 個 post 作為 test set。

如果不考慮話題因素,目前已有其他模型也在試圖做同樣的事情,如 c-seq2seq、MA 以及 KgCVAE 模型等,我們將他們作為基線模型,從生成回復的語法性、多樣性、準確性三個方面進行對比,結果顯示,除了語法性以外,多樣性和準確性方面我們的模型都取得了比較出眾的效果。

涉獵對話領域的同學可能都知道,自動指標有時候是不靠譜的,這時候我們需要藉助一些人工評價,我們這裡採取的是一對一比較式評價,我們給標註者一個用戶請求以及對應的模型生成結果,讓他們從我們的模型更好、基線模型更好、以及平局三者之間做出選擇——為了公平起見,標註過程我們會對模型的名稱進行保密。

我們比較的指標主要有三個:語法性合適性信息量,從結果來看,只要結果顯示超過 0.5,就表示我們的模型在該項目的表現要比其他模型更好,我們還會做顯著性的測試,結果中我們可以看到除了疑問句(相對而言句式較簡單),其他方面都是我們的模型表現得更顯著,尤其是在信息量上,這也是我們文章所要解決的挑戰,使得回復既包含豐富的信息量,又在句式上是可控的。

為了分析這些回復究竟有什麼樣的規律,我們統計了高頻詞和常見的模式,主要是通過頻繁模式挖掘的演算法來分析的。疑問句中較突出的是疑問詞,頻繁出現的模式既包含一般疑問句,還包含特殊疑問句,如果模型確實能夠將這些模式靈活運用到回復上的話,我們即可獲得優質的生成結果。祈使句和陳述句同理。

值得一提的是,陳述句的頻繁模式與高頻詞相對疑問句和祈使句而言沒有那麼顯著,因為陳述句更多的是轉折和並列,但我們的模型有能力利用這些模式生成多樣的回復。

接下來我用更加直觀的生成例子來做講解。

這個例子里,post 是「如果有一天我跟你絕交,你會怎樣?」在我們的模型生成的回復里,紅色部分是從句式控制相關的詞表裡生成的;藍色則是從話題詞詞表裡生成的;而剩餘的黑色部分則是從一般辭彙詞表中生成。這也意味著,如果要生成一個好的回復,我們需要將這三種不同類型的詞進行合理的規劃,這樣在面對不同句式類型的生成要求時,才能夠生成比較優質的回復——不僅能夠控制句式,還能夠包含豐富的信息量。

要是我們要求模型生成多個疑問句回復會怎樣?我們的模型可以通過採樣多個隱變數 z 來達成目標。如圖所示,目前的生成結果中,既有一般疑問句的問法,也有特殊疑問句的問法。這說明,我們的模型能夠做到的不僅僅是區分 3 種句式類別,通過引入隱變數還能夠學習到句式內部的多樣性

結論

總結一下,在單輪對話里通過生成不同句式的回復來實現對話目的,這一點我們的模型已經做得比較好了。在初步具備控制能力的情況下,下一步我們需要做感知,即知道用戶表現出什麼樣的狀態,這樣我們才能決定我們使用的句式、對話目的與策略,從而在多輪對話里生成較高質量的回復。目前我們的工作只做到了第一步,第二步相對來說比較有難度,因為涉及到的是用戶行為的探測和感知。這個可以看做是我們工作未來發展的一個方向。

另外,在語義和結構方面,我們的工作目前只是通過類別控制器去做規劃性的工作,比如回復里哪個地方該用哪種類別的詞。實際上我們還可以做語義和結構的解耦,以保證在同一個結構下表現不同語義時結構能夠不發生變化,這也是我們工作未來的一個發展方向。

最後給大家展示的是可控對話近兩年的一些研究成果,它們都是在解決同一個問題:怎樣控制回復的某種屬性。如果大家對這些話題感興趣的話,都可以考慮看看這些最新的論文。我今天的分享就到這裡,謝謝大家。

以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網AI研習社社區(https://club.leiphone.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

歐盟又罰了華碩等4家公司;福特拆分自動駕駛業務設獨立公司;小米A2系列西班牙發布
谷歌 AI:語義文本相似度研究進展

TAG:雷鋒網 |