更多乾貨內容敬請關注「平安壽險PAI」(公眾號ID:PAL-AI),文末有本期分享內容資料獲取方式。

人機對話作為人機交互系統的核心功能之一,發揮著十分重要的作用。目前,生成式的人機對話存在內容把控性較弱,生成內容不一定符合場景需求的問題。所以,在實際運用中往往需要對模型做出更多的調整和控制,使生成的對話更適用於具體場景。

1月8日,由平安壽險AI團隊在Paper Weekly直播間進行的主題為「對話生成模型」的技術分享,由資深演算法工程師姚曉遠主講其內容分4個部分:

  • 壽險的人機對話業務介紹
  • Seq2Seq 對話模型原理
  • 基於主題規劃和文本屬性控制的Seq2Seq模型優化
  • Seq2Seq 模型在壽險業務的實踐介紹

分享老師:姚曉遠

平安壽險人工智慧研發團隊資深演算法工程師。畢業於武漢大學,獲得碩士學位,研究方向為自然語言處理。曾任職於百度,現為壽險人工智慧研發團隊資深演算法工程師,具有 5 年人工智慧研發經驗。曾作為主要開發人員參與圖片廣告、事件圖譜、智能客服等項目,目前擔任人機交互演算法研發負責人,主要進行對話生成、問答匹配演算法研發。

以下是根據本期技術分享內容整理的文字稿。

一、壽險的人機對話業務介紹

1. 對話機器人的常見應用

目前,對話機器人是一個熱門話題,大家熟知的應用和產品主要有三種:

第一種是虛擬助手,能對個人輸入完成相應的任務或提供相應服務,典型的商業產品包括如siri、cortana、度祕等;

第二種是智能音箱,通過語音交互,完成用戶任務,也能對智能家居設備進行控制。典型的商業產品包括如echo、天貓精靈、小愛同學等;

第三種是閑聊對話,在開放域與用戶進行閑聊。典型的商業產品如:微軟小冰。

2. 壽險業務場景的對話機器人

在保險業務場景下,最為人熟悉的對話機器人應用就是「客服機器人」。

平安壽險客服機器人主要基於自然語言處理、深度學習、OCR、風控等技術,可實現寒暄、業務諮詢、業務辦理(屬業內首創)、產品及服務推薦等功能,為用戶提供一站式「服務+推薦」的優秀體驗。

3. 對話機器人的任務類型

對話機器人的任務類型可以分為三類:

第一類是任務型對話,主要解決如訂機票、訂酒店等問題。它涉及的技術包括:語義理解、意圖識別、狀態追蹤、對話決策等;

第二類是知識型對話,在壽險客服的場景裏,用戶可能會問「你這個保險要交多少錢?」這類問題。它涉及的技術包括:文本表示、語義匹配、知識圖譜等;

第三類是閑聊型對話,用戶可能只想找人聊聊天,對話不涉及到知識或業務,比如說「今天天氣真好」。它涉及的技術包括:文本生成模型、文本檢索、排序技術等;

4. 讓閑聊更有用

以解決閑聊型任務為例,大家較為熟悉的,是用seq2seq生成閑聊型機器人。但普通seq2seq可能出現如負面情感的回復、疑問句式的回復、回復的多樣性較低等問題,導致用戶體驗差或者對話上下文不夠連貫。

在沒有任何約束的聊天情境下,這種回復可能問題不大。但在壽險業務場景中,客服機器人需要引導客戶儘快結束閑聊,開啟(或延續上一個)任務型對話。

在這種背景下,如果客服機器人回復一個疑問句式,給用戶的感覺會比較奇怪。另外,如果在較嚴肅的對話場閤中,客服機器人給出了一個負面情感傾向的回應,用戶體驗也會較差。

因此,負面情感回復、疑問句式回復、回復多樣性低、一致性低,都是研發壽險客服機器人需要攻克的難點。

二、Seq2Seq 對話模型原理

1. 模型探析

生成一段對話回復的模型可以簡單分為三類:

一是規則模板。典型的技術就是AIML語言。這種回復實際上需要人為設定規則模板,對用戶輸入進行回復。

優點是:1、實現簡單,無需大量標註數據;2、回復效果可控、穩定。

不足是:1、如果需要回復大量問題,則需要人工設定大量模板,人力工作量大;2、使用規則模板生成的回復較為單一,多樣性低。

二是生成模型。主要利用編碼器-解碼器結構對回復進行。典型技術是Seq2Seq、transformer。

優點是:無需規則,能自動從已有對話文本中學習如何生成文本。

不足是:1、生成效果不可控,訓練好的模型更像是一個「黑盒」,也無法幹預模型的生成效果;2、傾向生成萬能回復,如「好的」、「哈哈」等,所以多樣性與相關性低。

三是檢索模型。利用文本檢索與排序技術從問答庫中挑選合適的回復。

優點是:由於數據來源於已經生成好的回復,或是從已抓取的數據得到的回復,所以語句通順性高,萬能回復少;

不足是:1.不能生成新的回復文本,只能從問答庫中得到文本進行回復;2.當檢索或排序時,可能只停留在表面的語義相關性,難以捕捉真實含義。

2. RNN模型回顧

RNN是能夠對序列進行建模的神經網路。它的每一個時刻的狀態,由當前的輸入以及上一個時間步的狀態來決定,經過線性變化和激活函數,就可以完成一個RNN建模。

這裡存在的問題是,在神經網路訓練過程中,更新參數需要計算梯度,這裡的梯度計算裏存在連乘,導致梯度趨於0或者趨於無窮大,使得模型無法有效地學習到長距離的依賴關係。

LSTM是RNN的一種常見的改進模型,引用了門機制去解決梯度爆炸或者梯度消散的問題。門計算所需要用到的參數,由模型自己去進行學習。每一個門都有對應的參數,每一個門的每次計算,是根據當前的輸入前一刻的狀態,以及內部狀態,來計算門的值是什麼,最後再對整個狀態進行更新。

GRU是另一個對RNN進行改進的模型,可以看作是LSTM的變形。相對於LSTM ,GRU模型減少了一個門,參數量也會變少。因此,最終GRU的速度比RNN、LSTM更快一些。

3. seq2seq模型回顧

瞭解RNN後,我們就可以引入seq2seq模型了。在seq2seq模型裏,實際上輸入的是一段序列文本,生成的也是一段序列文本。

Encoder:seq2seq的編碼器是單層或多層的RNN(雙向),會對輸入的文本進行編碼變成一個向量輸出。

Decoder:seq2seq的解碼器,也是一個單層或多層的RNN(非雙向),然後根據context信息對每一步進行解碼,輸出對應的文本。

這裡提到的每步context,最簡單的方法是直接拿encoder的輸入文本信息的最後一個狀態,或者是整個狀態進行加總,得到一個固定的向量。然後,再將這個向量作為decoder的context進行輸入。

但這樣的問題是,這個context是一個固定長度的向量,表達能力比較有限,所以在這個基礎上,又提出了Attention機制

Attention機制:每步解碼都會根據當前狀態對encoder的文本進行動態權重計算,然後對權重進行歸一化。得到歸一化後,再算出一個當前加權後的context,作為decode的context。這樣處理後的表達能力就會就會更強一些。

下圖是一種比較常見的Attention形式,通過加法來完成。其他的Attention形式可能會通過乘積來完成權重計算。

優化目標:有了前面的組件後,我們可以定義一個優化目標。優化目標實際上就是對每一步的單詞計算一個交叉熵,然後把它給加起來,最後得到一個損失函數。

4. Beam Search

前面提到seq2seq模型以及訓練目標是如何訓練的,再涉及到的問題,就是模型是如何進行預測的。這裡可能會存在的問題是:

貪心搜索:每一步搜索都取概率最大的分支,容易陷入局部最優解。

比如,可能當前一步的概率很大,但後面的概率都很小,這樣搜索出來的文本就不是全局的最優解。

但如果對整個空間進行搜索,可能搜索空間太大,無法全部搜索。

Beam Search:採取折中的辦法,每次搜索只保留最優的k條路徑,搜索結果優於貪心搜索,因為每一步並非按最大的去選一個;時間複雜度也可以根據對「K」的設置進行控制;(如下圖:每次搜索只保留最優的2條路徑)

但在對話來說,Beam Search可能會產生的問題是:可能都是十分相近的句子。

舉個例子:當用戶說「我喜歡打籃球」,搜索出來的結果可能是「我也是。」「我也是!」「我也是……」只有標點符號不同,這樣多樣性依然很低。

三、基於主題規劃和文本屬性控制的 Seq2Seq 模型優化

基於已有的seq2seq模型以及上述需要解決的問題,我們調研了大量論文,下面摘取對「對話生成」借鑒意義比較大的重點來闡述。

1. Copy機制

這裡介紹的論文是發表在ACL2017的《Get To The Point: Summarization with Pointer-Generator Networks》

Copy機制最初設計用於解決OOV問題。當生成一段文本的時候,這個生成單詞可以有兩種來源:一種是通過普通seq2seq生成;另一種是從原文本拷貝過來。比如普通的生成任務裏,他往往有大量的OOV(out of vocabulary),這樣的詞是無法生成的,以至於回復效果會變差。

Copy機制的好處在於,當生成單詞的時候,既可以是生成的,也可以是從Source Text裡面直接拷貝過來。

當然,Copy機制有很多實現辦法,這裡講的是最容易理解與實現的一種,即將每步輸出的單詞概率看作一個混合模型(生成的單詞概率分佈與拷貝原文的單詞概率分佈的混合),利用注意力得分作為拷貝單詞的概率。

注意力的得分的明顯特點是,它經過了歸一化,代表了這段文本中不同單詞在當前步驟的重要程度,可以看作拷貝不同單詞的概率。這個最早用在point network模型裡面。

將Copy機制用於閑聊後,回答的相關性和流暢性會更高。舉個例子,當用戶說「我老家是湖南的」,普通的seq2seq生成回答「我也是」就結束了。有了Copy機制後,對原文拷貝單詞的概率會更大,可能生成的回答是「我也是湖南的。」 這樣回答相關性會更高。

2. 基於控制主題的seq2seq的模型——主題控制

前面曾提到普通的seq2seq生成的內容,其實沒有辦法把控生成的語義信息。我們希望生成更有意義的回復,以提高閑聊相關性、流暢性。

論文裏提到的「Content-Introducing」(為便於理解,我們稱之為「控制主題」模型),就是通過增加關鍵詞信息,用關鍵詞去影響生成回復的語義(主題),以下介紹兩種解決思路。

思路一:用關鍵詞作為硬約束

這裡介紹的論文是發表在ACL2016的《Sequence toBackward and Forward Sequences: A Content-Introducing Approach to GenerativeShort-Text Conversation》

我們先考慮一種最簡單的情況:假設預測出的關鍵詞在生成文本中一定會出現。這裡論文提出一種直觀且簡單的預測關鍵詞方法:利用互信息進行預測,即取與問題互信息最大的詞作為關鍵詞。

有了關鍵詞,下面我們考慮如何對回復進行生成。每次的生成包含兩步:第一步,生成包含關鍵詞的前半句話;第二步,生成後半句話;

如下圖,當被問及「Where are you from」,首先生成地點單詞「Osaka」,第一步根據地點單詞生成前半句「from」「am」「I」,第二步再生成後半句「Japan」。相當於一個單詞把文本隔成兩段,分兩步生成整句話。

這裡可能存在的問題是,當遇到預測的單詞不準,或者在對話中出現較少時,上下句可能銜接不夠流暢。在此引入第二種思路。

思路二:用關鍵詞作為軟約束

這裡介紹的論文是發表在Emnlp2016的《Towards implicit content-introducing for generative short-textconversation systems》。

第二個思路假設關鍵詞在生成文本中不一定會出現,只作為額外信息輸入到網路里;設計cue word gru單元,將關鍵詞信息加入到每一步的狀態更新;

首先,這裡有兩個GRU單元。一個普通GRU負責記錄對話的狀態、上下文等內容,另一個Cue word GRU記錄當前關鍵詞信息,利用設計的fusion unit結構融合普通GRU與Cue word GRU單元。

個人理解,這與門機制類似,要將兩個部分的信息合在一起。那每個信息需要流入多少呢?實際上就是通過一個網路去計算。通過加權合併,就可以知道普通seq2seq的信息和關鍵詞信息。最終,模型就能學習出如何生成一個既能承接上句,又包含關鍵詞語義的回復。

思路三:用關鍵詞同時約束主題與情感

在這裡,我們介紹的論文是,於2018年發表在Emnlp的《A Syntactically Constrained Bidirectional-Asynchronous Approach for Emotional Conversation Generation》。目前我們團隊只做了調研,還沒有展開實驗。

論文裏,假設每個生成的回復都包括一個情感關鍵詞與主題關鍵詞,即序列為[y_ct, w_tp, y_md,w_et, y_ce],其中w_tp為主題關鍵詞,w_et為情感關鍵詞,y_ct,y_md,y_ce為剩下對應位置的文本序列。

首先預測情感關鍵詞與主題關鍵詞。有了兩個關鍵詞後,就可以考慮如何生成文本。每次首先生成中間的文本序列y_md,再分別生成剩下的兩段文本,最後對這段文本的真實方向進行二分類,輸出最終生成的文本。

3. 基於控制主題的seq2seq的模型——屬性控制

為了避免出現負面情感或疑問句式的回應,我們希望模型能學習到文本的屬性信息(句式、情感信息),從而能夠控制生成文本風格,使生成的回復更為可控。下面我們考慮的是對文本屬性進行控制的生成模型。

思路一:直接融合屬性信息

這裡介紹的是一個相對簡單的模型(如下圖),輸入的文本除了encoder的信息,還包括屬性embedding的信息。這樣一來,每一步解碼都會帶上屬性信息,模型就會學習如何根據兩段信息合理地生成單詞。

舉個例子,比如在label embedding,第1個是正面情感的embedding,第2個是肯定句式的embedding,最後就會生成一個正面情感的肯定句。

思路二:用條件變分編碼器

這裡介紹的論文是《Generating Informative Responses with Controlled Sentence Function》。

這篇論文中使用條件變分編碼器的網路結構去控制回復的句式,使模型生成一些更有信息量的回復。

在變分編碼器中,我們希望隱變數z更好的進行編碼。這篇文章通過約束中間隱變數z,使z更多地去編碼句式屬性的信息。

這裡採用的是通過加入判別器來實現對z的約束。判別器對編碼後得到的中間隱變數z,經過分類判斷它是陳述句、疑問句或是祈使句。

為了更好地對生成的單詞進行建模,論文中分別對控制句式相關的詞、主題相關的詞、普通詞計算概率,最後利用一個混合模型計算出最後的概率。

混合模型在每次生成單詞時,會先用隱變數信息計算生成哪種詞,得到三種單詞分別的生成概率,最後進行加權得到生成一個單詞的概率。

由於加入了條件變分編碼器和判別器,最終的訓練loss是三個部分之和:先驗分佈與後驗分佈的kl散度、判別器分類交叉熵、普通seq2seq的loss。

4. 改進Beam Search——提高回復多樣性

前面主要解決的是生成回復不可控的問題,如控制回復屬性(情感、句式)、控制回復主題等內容。後面,我們繼續調研大量文章,來解決回復多樣性的問題。以下討論的是改進Beam Search。

Beam Search的多樣性低,主要因為它總是選擇一條分支路徑,導致最後的生成回復都差不多。

思路一:通過增加懲罰項,比如對同一組的第二、第三選項進行降權,從而避免每次搜索結果都來自於同一路徑。對於權重的選擇,可以通過強化學習得到;也可以通過設置參數、調整參數來得到(如下圖)。

思路二:計算每條路徑的概率分,如果後面生成的話跟第一組相似,就對該組進行降權,避免組與組之間相似度過高(如下圖)。

四、Seq2Seq 模型在壽險業務的實踐介紹

1. 實驗數據

基於以上模型的調研和優化,結合壽險的業務場景,我們進行了一些實驗與效果評估。

實驗數據來自於微博,我們參考了一些論文的設計方法,將情感標籤分為6類:喜愛、悲傷、厭惡、生氣、高興、其他;句式標籤分為3類:疑問句、祈使句、陳述句。

數據樣例請參考下圖。

2. 效果對比

從實驗數據看(如下圖),如果用seq2seq、copy可能會生成疑問句,這是我們在業務場景下不願意看到的情況。而我們改進的模型c-seq2seq、vae-seq2seq生成的回復,大部分能保證是正面和肯定句式的回復。

我們的效果評估主要運用人工評估方式。在對話場景中,很多千變萬化的回復可能都是好的,並非說生成的對話一定跟訓練集或測試集的目標越接近才越好,所以很難用自動化標準去評估。

3. 模型對比

普通seq2seq存在生成回復相關性不夠高、生成回復為否定句或負面情感的問題。

Copy機制+seq2seq:提高了回復相關性,但依然無法解決回復為否定句或負面情感的問題。

主題控制+seq2seq:既提高回復相關性,也可以控制回復語義,提升回復效果,但可能出現回復不通順的問題,並存在否定句式與負面回復。

屬性控制+seq2seq:比較能滿足場景需要,但有一定比例的通用回復,可以通過改進Beam Search、後排序的辦法來提高個性化回復的得分,從而提高回復多樣性。

4. 總結

在對話生成任務上,探索了copy機制、主題控制、屬性控制、diverse beam search等多種提高回復效果的方法。在內部場景中進行實驗,其中的屬性控制模型能有效提升回復質量,獲得了較好效果。

五、資料獲取

獲取本期直播視頻及資料方式如下:

1 / 關注「平安壽險PAI」(ID:PAL-AI)

2 / 後臺回復「對話生成模型」即可獲取下載鏈接

Reference:

  • Abigail See, Peter J. Liu, and Christopher D. Manning. Getto the point: Summarization with pointer-generator networks. In Proceedings ofthe 55th Annual Meeting of the Association for ComputationalLinguistics (Volume1: Long Papers), pp. 1073-1083, July 2017.
  • Mou L, Song Y, Yan R, et al. Sequence to Backward andForward Sequences: A Content-Introducing Approach to Generative Short-TextConversation[J]. 2016.
  • Yao L, Zhang Y, Feng Y, et al. Towards implicitcontent-introducing for generative short-text conversationsystems[C]//Proceedings of the 2017 Conference on Empirical Methods in NaturalLanguage Processing. 2017:2190-2199.
  • Li J, Sun X. A Syntactically ConstrainedBidirectional-Asynchronous Approach for Emotional ConversationGeneration[C]//Proceedings of the 2018 Conference on Empirical Methods inNatural Language Processing. 2018:678-683.
  • Ke P, Guan J, Huang M, et al. Generating InformativeResponses with Controlled Sentence Function[C]//Proceedings of the 56thAnnual Meeting of the Association for Computational Linguistics (Volume 1: LongPapers). 2018, 1: 1499-1508.
  • Li J, Monroe W, Jurafsky D. A Simple, Fast, DiverseDecoding Algorithm for Neural Generation[J]. arXiv preprint arXiv:1611.08562,2016.
  • Vijayakumar A K, Cogswell M, Selvaraju R R, et al. Diversebeam search: Decoding diverse solutions from neural sequence models[J]. arXivpreprint arXiv:1610.02424, 2016.

推薦閱讀:

相關文章