一文讀懂智能對話系統
來源:機器學習演算法全棧工程師
作者:蒙康
編輯:王抒偉
本文共6050字,建議閱讀10分鐘。
本文帶大家理解智能對話系統的研究方法以及未來趨勢。
筆者在最近的研究中發現了一篇非常好的有關對話系統的論文,《A Survey on Dialogue Systems:Recent Advances and New Frontiers》,論文來自於京東數據團隊,論文引用了近124篇論文,是一篇綜合全面的介紹對話系統的文章,可謂是誠意滿滿,今天我們將其重點進行解讀,以饗讀者。
前言
擁有一個虛擬助理或一個擁有足夠智能的聊天夥伴系統似乎是虛幻的,而且可能只在科幻電影中存在很長一段時間。近年來,人機對話因其潛在的潛力和誘人的商業價值而受到越來越多研究者的關注。
隨著大數據和深度學習技術的發展,創建一個自動的人機對話系統作為我們的私人助理或聊天夥伴,將不再是一個幻想。
當前,對話系統在各個領域越來越引起人們的重視,深度學習技術的不斷進步極大地推動了對話系統的發展。對於對話系統,深度學習技術可以利用大量的數據來學習特徵表示和回復生成策略,這其中僅需要少量的手工操作。
現如今,我們可以很容易地訪問網路上對話的「大數據」,我們也許能夠學習如何回復,以及如何回復幾乎任何的輸入,這將極大地允許我們在人類和計算機之間建立數據驅動的、開放的對話系統。
另一方面,深度學習技術已經被證明是有效的,可以在大數據中捕獲複雜的模式,並擁有大量的研究領域,如計算機視覺、自然語言處理和推薦系統等。在本文中,作者從不同的角度對這些最近的關於對話系統的進展進行概述,並討論了一些可能的研究方向。
具體來說,對話系統大致可分為兩種:
任務導向型(task-oriented)對話系統和
非任務導向型(non-task-oriented)對話系統(也稱為聊天機器人)。
面向任務的系統旨在幫助用戶完成實際具體的任務,例如幫助用戶找尋商品,預訂酒店餐廳等。
面向任務的系統的廣泛應用的方法是將對話響應視為一條管道(pipeline),如下圖所示:
系統首先理解人類所傳達的信息,將其作為一種內部狀態,然後根據對話狀態的策略採取一系列相應的行為,最後將動作轉化為自然語言的表現形式。
雖然語言理解是通過統計模型來處理的,但是大多數已經部署的對話系統仍然使用手工的特性或手工制定的規則,用於狀態和動作空間表示、意圖檢測和插槽填充。
非任務導向的對話系統與人類交互,提供合理的回復和娛樂消遣功能,通常情況下主要集中在開放的領域與人交談。雖然非任務導向的系統似乎在進行聊天,但是它在許多實際應用程序中都發揮了作用。
數據顯示,在網上購物場景中,近80%的話語是聊天信息,處理這些問題的方式與用戶體驗密切相關。
一般來說,對於非任務導向型對話系統,目前用的主要是兩種主要方法:
生成方法,例如序列到序列模型(seq2seq),在對話過程中產生合適的回復,生成型聊天機器人目前是研究界的一個熱點,和檢索型聊天機器人不同的是,它可以生成一種全新的回復,因此相對更為靈活,但它也有自身的缺點,比如有時候會出現語法錯誤,或者生成一些沒有意義的回復;
基於檢索的方法,從事先定義好的索引中進行搜索,學習從當前對話中選擇回復。檢索型方法的缺點在於它過於依賴數據質量,如果選用的數據質量欠佳,那就很有可能前功盡棄。
近年來,大數據和深度學習技術的迅猛發展,極大地促進了面向任務和面向非導向的對話系統的發展。
在本篇論文中,作者的目標是
對對話系統進行概述,特別是最近的深度學習的進展;
討論可能的研究方向。
任務導向系統
面向任務的對話系統是對話系統的一個重要分支。在這部分中,作者總結了面向任務的對話系統的管道方法和端到端方法。
管道(pipeline)方法
任務導向型對話系統的典型結構在之前的圖中已經展示,它包括四個關鍵組成部分:
自然語言理解(Natural Language Understanding,NLU):它將用戶輸入解析為預定義的語義槽。
如果有一個話語,自然語言理解將其映射為語義槽。插槽是根據不同的場景預先定義的。
上圖展示了一個自然語言表示的示例,其中「New York」是指定為slot值的位置,並且分別指定了域和意圖。典型的,有兩種類型的表示。一個是話語層次類別,如用戶的意圖和話語類別。另一個是字級信息提取,如命名實體識別和槽填充。對話意圖檢測是為了檢測用戶的意圖。它將話語劃分為一個預先定義的意圖。
對話狀態跟蹤(Dialogue State Tracker,DST)。對話狀態跟蹤是確保對話系統健壯性的核心組件。它在對話的每一輪次對用戶的目標進行預估,管理每個回合的輸入和對話歷史,輸出當前對話狀態。這種典型的狀態結構通常稱為槽填充或語義框架。傳統的方法已經在大多數商業實現中得到了廣泛的應用,通常採用手工規則來選擇最有可能的輸出結果。然而,這些基於規則的系統容易出現頻繁的錯誤,因為最可能的結果並不總是理想的。
最近深度學習採用的方法是使用一個滑動窗口輸出任意數量的可能值的概率分布序列。雖然它在一個領域受過訓練,但它可以很容易地轉移到新的領域。此處運用較多的模型是,multi-domain RNN dialog state tracking models和Neural Belief Tracker (NBT) 。
對話策略學習(Dialogue policy learning)。根據狀態跟蹤器的狀態表示,策略學習是生成下一個可用的系統操作。無論是監督學習還是強化學習都可以用來優化政策學習。監督學習是針對規則產生的行為進行的,在在線購物場景中,如果對話狀態是「推薦」,那麼觸發「推薦」操作,系統將從產品資料庫中檢索產品。強化學習方法的引入可以對對話策略進行進一步的訓練,以引導系統制定最終的策略。在實際實驗中,強化學習方法的效果超過了基於規則和監督的方法。
自然語言生成(Natural Language Generation,NLG)。它將選擇操作進行映射並生成回復。
一個好的生成器通常依賴於幾個因素:適當性、流暢性、可讀性和變化性。傳統的NLG方法通常是執行句子計劃。它將輸入語義符號映射到代表話語的中介形式,如樹狀或模板結構,然後通過表面實現將中間結構轉換為最終響應。深度學習比較成熟的方法是基於LSTM的encoder-decoder形式,將問題信息、語義槽值和對話行為類型結合起來生成正確的答案。同時利用了注意力機制來處理對解碼器當前解碼狀態的關鍵信息,根據不同的行為類型生成不同的回復。
端到端(end-to-end)方法
儘管傳統的面向任務的對話系統中有許多特定領域的手工製作,但它們很難適應新的領域,近年來,隨著端到端神經生成模型的發展,為面向任務的對話系統構建了端到端的可訓練框架。值得注意的是,當我們引入非面向任務的對話系統時,將討論關於神經生成模型的更多細節。與傳統的管道模型不同,端到端模型使用一個模塊,並與結構化的外部資料庫交互。
上圖的模型是一種基於網路的端到端可訓練任務導向型對話系統,將對話系統的學習作為學習從對話歷史到系統回復的映射問題,並應用encoder-decoder模型來訓練。然而,該系統是在監督的方式下進行訓練——不僅需要大量的訓練數據,而且由於缺乏對訓練數據對話控制的進一步探索,它也可能無法找到一個好的策略。
隨著強化學習研究的不斷深入,上圖的模型首先提出了一種端到端強化學習的方法,在對話管理中聯合訓練對話狀態跟蹤和對話策略學習,從而更有力地對系統的動作進行優化。
非任務導向系統
不同於任務導向型對話系統,它的目標是為用戶完成特定的任務,而非任務導向的對話系統(也稱為聊天機器人)專註於在開放的領域與人交談。一般來說,聊天機器人是通過生成方法或基於檢索的方法實現的。
生成模型能夠生成更合適的回復,而這些回復可能從來沒有出現在語料庫中,而基於檢索的模型則具有信息充裕和響應流暢的優勢。
1. 神經生成模型(Neural Generative Models)
深度學習在機器翻譯中的成功應用,即神經機器翻譯,激發了人們對神經生成對話研究的熱情。目前神經生成模型的熱門研究課題大概有如下幾個方面。
1.1 Sequence-to-Sequence Models
給定包含 個詞語的輸入序列(message)
和長度為T的目標序列(response)
模型最大化Y在X下的條件概率:
具體來說,Seq2Seq模型是在encoder-decoder結構中,下圖是這種結構的示意:
編碼器將X逐字讀入,並通過遞歸神經網路(RNN)將其表示為上下文向量c, 然後解碼器將c 作為輸入估計Y 的生成概率。
Encoder :
Encoder過程很簡單,直接使用RNN(一般用LSTM)進行語義向量生成:
其中f 是非線性函數,例如LSTM,GRU,
是上一隱節點輸出,是當前時刻的輸入。向量c 通常為RNN中的最後一個隱節點
(h, Hidden state),或者是多個隱節點的加權和。
Decoder :
模型的decoder過程是使用另一個RNN通過當前隱狀態來預測當前的輸出符號,這裡的和都與其前一個隱狀態和輸出有關,Seq2Seq的目標函數定義為:
1.2. 對話上下文(Dialogue Context)
考慮對話的上下文信息的是構建對話系統的關鍵所在,它可以使對話保持連貫和增進用戶體驗。使用層次化的RNN模型,捕捉個體語句的意義,然後將其整合為完整的對話。
同時,分別用字級別和句子級別的注意力方法擴展層次化的結構。
試驗證明:
層次化 RNNs的表現通常優於非層次化的RNNs;
在考慮上下文相關的信息後,神經網路趨向於產生更長的、更有意義和多樣性的回復。
在上圖中,作者通過代表整個對話歷史(包括當前的信息),用連續的表示或嵌入單詞和短語來解決上下文敏感回復生成的這一難題。
在上圖的結構中作者引入兩個層次的Attention機制,讓模型能夠自動的學到詞語與句子級別的重要度信息,從而更好的生成新一輪的對話。
作者在句子級別的信息中,是反向學習的,即認為下一句的信息中更能夠包含上一句的信息,所以從總體上來看,其對於對話的學習是逆向使用每一輪對話的內容的。
1.3 回復多樣性(Response Diversity)
在當前Seq2Seq對話系統中,一個具有挑戰性的問題是,它們傾向於產生無關緊要的或不明確的、普通的、幾乎沒有意義的回復,而這些回復常常涉及到一些諸如「I don"t know」,「I am OK」這樣的無意義回復。
解決這類問題的一個很有效的方法是找到並設置一個更好的目標函數。除此之外,解決此類問題的一個方法是增加模型的複雜度。下圖這篇論文《Building End-To-End Dialogue Systems
Using Generative Hierarchical Neural Network Models》使用了 latent variable 來解決無意義回復這個問題。
1.4 主題和個性化(Topic and Personality)
明確對話的內在屬性是提高對話多樣性和保證一致性的另一種方法。在不同的屬性中,主題和個性被廣泛地進行研究探討。
在下圖的模型中,作者注意到人們經常把他們的對話與主題相關的概念聯繫起來,並根據這些概念做出他們的回復。他們使用Twitter LDA模型來獲取輸入的主題,將主題信息和輸入表示輸入到一個聯合注意模塊中,並生成與主題相關的響應。
下圖的模型提出了一種兩階段的訓練方法,使用大規模數據對模型進行初始化,然後對模型進行微調,生成個性化響應。
1.5 外部知識庫(Outside Knowledge Base)
人類對話與對話系統之間的一個重要區別是它是否與現實相結合。結合外部知識庫(KB)是一種很有前途的方法,可以彌補背景知識之間的差距,即對話系統和人之間的差距。
記憶網路(Memory Network)是一種以知識庫處理問題的經典方法。因此,它非常直接的別用於在對話生成中。實際研究表明,所提出的模型能夠通過參考知識庫中的事實來生成對問題的自然和正確答案。
上圖是作者提出的完全數據驅動的帶有知識的對話模型。其中的 World Facts是一個集合,收集一些經過權威認證過的句子或者不準確的句子,作為知識庫。
當個定一個輸入S和歷史,需要在 Fact 集合裡面檢索相關的facts,這裡採用的IR引擎進行檢索,然後經過 Fact Encoder 進行 fact injection。
上圖的模型提出了一種全新的、完全由數據驅動的、基於知識的神經對話模型,目的是在沒有槽位的情況下產生更多的內容。作者歸納了廣泛使用的SEQ2SEQ方法,通過對會話歷史和外部「事實」的響應
1.6 評價
評價生成回復的質量是對話系統的一個重要方面。任務導向型的對話系統可以基於人工生成的監督信號進行評估,例如任務完成測試或用戶滿意度評分等,
然而,由於高回復的多樣性,自動評估非任務導向的對話系統所產生的響應的質量仍然是一個懸而未決的問題。目前的方法有以下幾種:
計算 BLEU 值,也就是直接計算 word overlap、ground truth和你生成的回復。由於一句話可能存在多種回復,因此從某些方面來看,BLEU 可能不太適用於對話評測。
計算 embedding的距離,這類方法分三種情況:直接相加求平均、先取絕對值再求平均和貪婪匹配。
衡量多樣性,主要取決於 distinct-ngram 的數量和 entropy 值的大小。
進行圖靈測試,用 retrieval 的 discriminator 來評價回復生成。
2. 基於檢索的方法
基於檢索的方法從候選回復中選擇回復。檢索方法的關鍵是消息-回復匹配,匹配演算法必須克服消息和回復之間的語義鴻溝。
2.1 單輪迴復匹配
檢索聊天機器人的早期研究主要集中在反應選擇單輪的談話,只有消息用於選擇一個合適的回復。
目前比較新的方法如下圖,利用深度卷積神經網路體系結構改進模型,學習消息和響應的表示,或直接學習兩個句子的相互作用表示,然後用多層感知器來計算匹配的分數。
2.2 多輪迴復匹配
近年來,基於檢索的多輪會話越來越受到人們的關注,在多輪迴答選擇中,將當前的消息和先前的話語作為輸入。
模型選擇一個自然的、與整個上下文相關的響應。重要的是要在之前的話語中找出重要的信息,並恰當地模仿話語的關係,以確保談話的連貫性。
多輪對話的難點在於不僅要考慮當前的問題,也要考慮前幾輪的對話情景。多輪對話的難點主要有兩點:
如何明確上下文的關鍵信息(關鍵詞,關鍵短語或關鍵句);
在上下文中如何模擬多輪對話間的關係。
現有檢索模型的缺陷:在上下文中容易丟失重要信息,因為它們首先將整個上下文表示為向量,然後將該上下文向量與響應sentence向量進行匹配。
下圖的方法通過RNN/LSTM的結構將上下文(所有之前的話語和當前消息的連接)和候選響應分別編碼到上下文向量和回復向量中,然後根據這兩個向量計算出匹配度分數。
目前關於檢索模型的閑聊還停留在單輪對話中,下面這篇論文提出了基於檢索的多輪對話閑聊。論文提出了一個基於檢索的多輪閑聊架構,進一步改進了話語關係和上下文信息的利用,通過將上下文中的語句與卷積神經網路的不同層級進行匹配,然後通過一個遞歸的神經網路在時間序列中堆積這些向量,以建立對話之間的關係。
2.3 混合的方法(Hybrid Methods)
將生成和檢索方法結合起來能對系統性能起到顯著的提升作用。基於檢索的系統通常給出精確但是較為生硬的答案,而基於生成的系統則傾向於給出流暢但卻是毫無意義的回答。
將生成和檢索方法結合起來能對系統性能起到顯著的提升作用。基於檢索的系統通常給出精確但是較為生硬的答案,而基於生成的系統則傾向於給出流暢但卻是毫無意義的回答。
在集成模型中,被抽取的候選對象和原始消息一起被輸入到基於RNN的回復生成器中。這種方法結合了檢索和生成模型的優點,這在性能上具備很大的優勢。
未來的發展
深度學習已成為對話系統的一項基本技術。研究人員將神經網路應用於傳統任務導向型對話系統的不同組成部分,包括自然語言理解、自然語言生成、對話狀態跟蹤。近年來,端到端的框架不僅在非面向任務的聊天對話系統中流行,而且在面向任務的對話系統中逐步流行起來。
深度學習能夠利用大量的數據,從而模糊了任務導向型對話系統和非任務導向型對話系統之間的界限。值得注意的是,目前的端到端模型仍然遠非完美。儘管取得了上述成就,但這些問題仍然具有挑戰性。接下來,我們將討論一些可能的研究方向。
快速適應。雖然端到端模型越來越引起研究者的重視,我們仍然需要在實際工程中依靠傳統的管道(pipeline)方法,特別是在一些新的領域,特定領域對話數據的收集和對話系統的構建是比較困難的。未來的趨勢是對話模型有能力從與人的交互中主動去學習。
深度理解。現階段基於神經網路的對話系統極大地依賴於大量標註好的數據,結構化的知識庫以及對話語料數據。在某種意義上產生的回復仍然缺乏多樣性,有時並沒有太多的意義,因此對話系統必須能夠更加有效地深度理解語言和真實世界。
隱私保護。目前廣泛應用的對話系統服務于越來越多的人。很有必要注意到的事實是我們使用的是同一個對話助手。通過互動、理解和推理的學習能力,對話助手可以無意中隱蔽地存儲一些較為敏感的信息。因此,在構建更好的對話機制時,保護用戶的隱私是非常重要的。
TAG:數據派THU |