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