天天看點

任務驅動的多輪對話究竟該如何實作?

三角獸科技 ceo zhuoran wang 博士曾參與 dstc 2013 的評測,期間他提出的一種領域無關的對話狀态跟蹤算法曾獲 sigdial 2013 國際會議最佳論文提名,該系統在 dstc 2014(即 dstc 2&3)中被用做官方 baseline 系統。

人工智能語義領域目前在國内高速發展,資本的支援引發了新一輪創業大潮,泡沫也随之而來。很多公司 demo 示範的 “黑科技” 和對 ai 終極态的吹捧,給行業發展帶來很大傷害。如何評測語義領域相關技術是大家共同關注的。基于多年理論和相關技術實踐的經驗,針對語義領域的技術,我們将會發表一系列詳盡解讀和評測标準文章。

人機對話,是人工智能領域的一個子方向,通俗的講就是讓人可以通過人類的語言(即自然語言)與計算機進行互動。作為人工智能的終極難題之一,一個完整的人機對話系統涉及到的技術極為廣泛,例如計算機科學中的語音技術,自然語言處理,機器學習,規劃與推理,知識工程,甚至語言學和認知科學中的許多理論在人機對話中都有所應用。籠統的講,人機對話可以分為以下四個子問題:開放域聊天、任務驅動的多輪對話、問答和推薦。

人機對話概述

我們通過下面的例子來說明這四類問題的不同展現。

任務驅動的多輪對話究竟該如何實作?

圖 1: 人機對話示例

開放域聊天:顧名思義,就是不局限話題的聊天,即在使用者的 query 沒用明确的資訊或服務擷取需求(如 social dialogue)時系統做出的回應。

任務驅動的多輪對話究竟該如何實作?

圖 1 中 1-2 行

為開放域聊天的典型示例

開放域聊天在現有的人機對話系統中,主要起到拉近距離,建立信任關系,情感陪伴,順滑對話過程(例如在任務類對話無法滿足使用者需求時)和提高使用者粘性的作用。

任務驅動的多輪對話:使用者帶着明确的目的而來,希望得到滿足特定限制條件的資訊或服務,例如:訂餐,訂票,尋找音樂、電影或某種商品,等等。因為使用者的需求可以比較複雜,可能需要分多輪進行陳述,使用者也可能在對話過程中不斷修改或完善自己的需求。此外,當使用者的陳述的需求不夠具體或明确的時候,機器也可以通過詢問、澄清或确認來幫助使用者找到滿意的結果。

是以,任務驅動的多輪對話不是一個簡單的自然語言了解加資訊檢索的過程,而是一個決策過程,需要機器在對話過程中不斷根據目前的狀态決策下一步應該采取的最優動作(如:提供結果,詢問特定限制條件,澄清或确認需求,等等)進而最有效的輔助使用者完成資訊或服務擷取的任務。在學術文獻中所說的 spoken dialogue systems(sds)一般特指任務驅動的多輪對話。

任務驅動的多輪對話究竟該如何實作?

圖 1 中的 3-6 行

是一個音樂領域的任務驅動的多輪對話的例子

問答:更側重于一問一答,即直接根據使用者的問題給出精準的答案。問答更接近一個資訊檢索的過程,雖然也可能涉及簡單的上下文處理,但通常是通過指代消解和 query 補全來完成的。問答系統和任務驅動的多輪對話最根本的差別在于系統是否需要維護一個使用者目标狀态的表示和是否需要一個決策過程來完成任務。

任務驅動的多輪對話究竟該如何實作?

圖 1 中 8-9 行,是一個問答的例子

推薦:前面的開放域聊天,任務驅動的多輪對話和問答系統本質上都是被動的響應使用者的 query,而推薦系統則是根據目前的使用者 query 和曆史的使用者畫像主動推薦使用者可能感興趣的資訊或者服務,如圖 1 中第 7 行的例子。

任務驅動的多輪對話究竟該如何實作?

因為上述的四類系統各自要解決的問題不同,實作技術迥異,用一套系統實作所有功能是不現實的。通常要将上述功能整合在一個應用中,我們還需要一個中控決策子產品。之是以叫中控決策,是因為這個子產品不僅負責需求和問題的分類,還内包括任務之間的澄清、确認和跨領域的引導,是以最理想的技術實作也應該通過一個決策過程來完成[1]。

商業應用的人機對話系統根據應用的場景不同既可以是同時綜合上述四類問題的複雜系統,也可以單純解決其中一類問題。例如大家熟知的蘋果 siri、微軟 cortana、百度度秘等語音助手類産品就是集合上述四類問題綜合系統(但是 siri 和 cortana 的聊天功能并不能算開放域,而是人工為高頻的 query 編輯了對應的話術,當使用者的聊天 query 不在預先配置的範圍内時,系統則回複 “我聽不懂” 之類的固定答案。而度秘的開放域聊天則是應用了更先進的基于海量資料的檢索式聊天技術。相關技術的讨論超出了本文範疇,我們會在後續的文章中詳解。)目前的智能客服類系統則多以解決問答和推薦類問題為主;微軟推出的 “小冰”,包括後繼推出的同類型産品日文版 rinna、英文版 zo 和 ruuh,主打的就是開放域聊天;而許多訂票,訂酒店類的對話系統則是任務驅動的多輪對話的典型應用。

問答和推薦是比較經典的問題,各自的技術和評估體系業界也相對熟悉。是以這篇文章先從任務驅動的多輪對話講起。

任務驅動的多輪對話

首先我們來科普一下任務驅動的多輪對話系統。圖 2 為學術文獻中任務驅動的多輪對話系統的一個經典框圖。

任務驅動的多輪對話究竟該如何實作?

圖 2: 任務驅動的多輪對話系統的一個經典框圖

自然語言了解:将自然語言的 query 識别成結構化的語義表示。在對話系統中,這個結構化的語義表示通常被稱作 dialogue act 由 communicative function 和 slot-value pairs 組成,其中 communicative function 表示 query 的類型(如:陳述需求,詢問屬性,否定,選擇疑問,等等)而每個 slot-value pair 則表達一個限制條件(constraint),也可了解為使用者目标的一個組成單元。

例如 “我要西二旗附近的川菜” 對應的 dialogue act 可以表示為 inform(foodtype = 川菜,location = 西二旗)。這裡 “inform” 就是 communicative function,表示陳述需求,“foodtype = 川菜” 和 “location = 西二旗” 是限制條件(slot-value pairs) 。常用的 communicative function 定義可以參考劍橋大學的對話系統中使用的集合[2],而語言學家 harry bunt 等人則總結出了一套 iso-24617-2 标準包含 56 個 communicative function 的定義,以及它的擴充集 dit++ 包含 88 種定義。但由于 iso-24617-2 和 dit++ 體系過于複雜,通常的任務驅動類對話系統隻用到其中很小一個子集就足夠滿足需求了,不過感興趣的讀者可以參考 dit++ 網站(1)。

由于對話系統更關注口語處理,而且通常是處理經過了語音識别後的口語,是以在這個領域,我們通常說 spoken language understanding(slu),以突出與廣義的自然語言了解的不同,并蘊含了對非嚴謹文法和語音識别錯誤魯棒的問題。

對話狀态跟蹤:坦率的講這個翻譯有點兒詭異,英文中這個概念叫 dialogue state tracking(dst),看起來就是順眼得多。概括的說,對話狀态跟蹤就是根據多輪的對話來确定使用者目前的目标(user goal)到底是什麼的過程。為了更好的了解這個過程,我們先來看看什麼是對話狀态。一個對話狀态中,最主要的資訊是使用者的目的,即 user goal。使用者目的的表示形式是一組 slot-value pairs 的組合。

任務驅動的多輪對話究竟該如何實作?

圖 1 中 3-6 行

機率分布,稱作置信狀态(belief state 或者 belief)。是以,對話狀态跟蹤有時也稱作置信狀态跟蹤(belief state tracking)。

為了友善後面的講解,這裡再介紹兩個概念,使用者的目的在一個置信狀态中的表示可以分為兩部分:首先每個 slot 上都可以有多個可能的 value,每個 value 對應一個置信機率,這就形成了每個 slot 上的邊緣置信狀态(marginal belief);然後這些可能的 slot-value pairs 的組合的機率分布就形成的聯合置信狀态(joint be 仍以圖 1 中 3-6 行的對話為例,當對話進行到第 3 行時,使用者的目的是 “occasion = 跑步”,到第 5 行時,這個目的就變成了 “occasion = 跑步,language = 英文”。對話狀态中還可以記錄完成對話任務所需的其他額外資訊,例如使用者目前詢問的屬性(requested slots),使用者的互動方式(communication method),和使用者或系統的曆史對話動作(dialogue history)等等。

此外,大家應該已經注意到無論 asr 或者 slu 都是典型的分類問題,既然是分類就會有誤差,于是這給任務驅動的對話系統引入了一個在不确定性環境下決策的問題(planning under uncertainty)。雖然最終的決策是由下面要介紹的對話政策完成的,但是對話狀态需要為後面的決策提供依據,也就是如何刻畫這個不确定性的問題。要解決這個問題,首先我們希望 asr 或 slu(或兩者)在輸出分類結果的同時輸出一個置信度打分,最好還能給出多個候選結果(n-best list)以更好的保證召回。然後對話狀态跟蹤子產品在上述置信度和 n-best list 的基礎上,不僅需要維護一個對話狀态,而是估計所有可能的對話狀态的  belief),也就是使用者完整目的的機率分布。通常對話系統的決策過程需要參考這兩部分資訊才能找到最優的對話政策。

對話政策:即 policy,是根據上面介紹的置信狀态來決策的過程。對話政策的輸出是一個系統動作(system action)。和使用者的 dialogue act 類似,系統動作也是一個由 communicative function 和 slot-value pairs 組成的語義表示,表明系統要執行的動作的類型和操作參數。“每次決策的目标不是目前動作的對與錯,而是目前動作的選擇會使未來收益的預期(expected long-term reward)最大化”。

自然語言生成:natural language generation(nlg)的任務是将對話政策輸出的語義表示轉化成自然語言的句子,回報給使用者。

有了上面的基礎知識,我們就可以進入正題了:如何評估一個任務驅動的多輪對話系統?下面我們就分對話狀态跟蹤和對話政策兩部分詳細介紹。

等一下,為什麼不講 slu 和 nlg?先說 slu,其本質就是一個結構化分類的問題,雖然所用到的模型可能千差萬别,繁簡不一,但是評估标準比較明确,無非是準确率、召回率、f-score 等,是以這裡就不詳細論述了。至于 nlg,據我所知目前的商業應用的對話系統中的 nlg 部分主要是靠模闆解決的,是以也沒什麼可評估的。不是說 nlg 問題本身簡單,而是現有對話系統的能力還遠沒達到要靠優化 nlg 來提升使用者體驗的程度,前面一系列的問題還都沒解決到極緻,模闆話術死闆這事兒根本不是瓶頸所在。當然,學術界對 nlg 問題早有很多年的研究積累,感興趣的讀者可以參考我前前前雇主赫瑞瓦特大學互動實驗室 oliver lemon,helen hastie 和 verena rieser,霍爾大學 nina dethlefs,還有劍橋大學對話組 tsung-hsien wen 的工作。

對話狀态跟蹤的評估方法:從 dialog state tracking challenge 談起

雖然對話狀态跟蹤本質上也是一個分類問題,但作為輔助對話政策決策的一個關鍵步驟,dst 維護的是一個機率分布,那麼這裡就引入了兩個問題:(1)怎樣衡量一個機率分布的優劣;(2)在哪一輪評估合适。下面我們就結合 2013 年 dialog state tracking challenge(dstc)(2) 的評估結果來分析一下這些問題。

dstc 2013 是國際上第一屆對話狀态跟蹤任務的公開評測,由微軟研究院,本田研究院和卡内基 · 梅隴大學聯合組織。評測資料來自匹斯堡公車路線電話自動查詢系統 3 年間的真實使用者 log。評測提供 5 組訓練集和 4 組測試集,分别用于測試以下四種情況:

(1)有與測試集來自完全相同的 asr、slu 和對話政策的訓練資料; (2)有與測試集來自完全相同的 asr 和 slu 的訓練資料,但對話政策不同; (3)隻有少量與測試集來自完全相同的 asr、slu 和對話政策的訓練資料; (4)産生測試資料的 asr、slu 和對話政策均與産生訓練樣本的系統不同。

除了兩組訓練集隻有 asr 的标注外,其它訓練集均提供了人工标注的 asr、slu 和 dst 結果。此次評測共有 11 個團隊參與,送出了 27 個系統。因為是第一次評測,主辦方提出了 11 種評測名額和 3 種評測時機(schedule)作為參考,詳細說明如下:

hypothesis accuracy: 置信狀态中首位假設(top hypothesis)的準确率。此标準用以衡量首位假設的品質。 mean reciprocal rank: 1/r 的平均值,其中 r 是第一條正确假設在置信狀态中的排序。此标準用以衡量置信狀态中排序的品質。 l2-norm: 置信狀态的機率向量和真實狀态的 0/1 向量之間的 l2 距離。此标準用以衡量置信狀态中機率值的品質。 average probability: 真實狀态在置信狀态中的機率得分的平均值。此标準用以衡量置信狀态對真實狀态的機率估計的品質。 roc performance: 如下一系列名額來刻畫置信狀态中首位假設的可區分性 equal error rate: 錯誤接受率(false accepts,fas) 和錯誤拒絕率(false rejects,frs)的相交點(fa=fr)。 correct accept 5/10/20: 當至多有 5%/10%/20% 的 fas 時的正确接受率(correct accepts,cas)。

上述 roc 曲線相關名額采取了兩種 roc 計算方式。第一種方式計算 ca 的比例時分母是所有狀态的總數。這種方式綜合考慮了準确率和可區分度。第二種方式計算 ca 的比例時分母是所有正确分類的狀态數。這種計算方式單純考慮可區分度而排出準确率的因素。

任務驅動的多輪對話究竟該如何實作?

圖 3:dstc 2013 送出的系統根據上述 11 種評估名額

排序結果的不同程度[3]  圓圈的半徑越小表示結果越相似

上述評估标準從不同角度衡量了置信狀态的品質,但從 dstc 2013 送出的系統結果分析可以看出一些标準之間有很強的相關性,如圖 3 所示。是以在後續的 dstc 2014 評測中選取了上述 11 中名額的一個子集作為主要評估名額。

dstc 2013 還提出了三種評測的時機,分别為:

schedule 1: 每輪對話都做評估; schedule 2: 對于一個概念(slot-value pair),隻有在這個概念被提及時才評估;  schedule 3: 在每個對話結束時評估。

可以看出上述三種評估時機中,schedule 2 更能展現在真實應用中的價值。而 schedule 1 是有偏執的,因為當一個概念被提及後,如果使用者或系統沒有對其修改的操作,多數情況下其置信狀态的估計不會改變,這個結果會一直保持多個對話輪次,這樣無論這個估計的品質優劣,都會被計算多次,對評估名額的均值産生影響。schedule 3 的問題在于忽略了置信狀态品質在對話過程中的影響,即一個概念如果在對話過程中被多次提及或澄清過,那麼在對話過程中這個概念對應的置信機率的變化被忽略了。其實 schedule 2 也有一定的局限性,如果概念之間有沖突或互相影響,即當使用者或系統提及一個概念時會潛在的影響其他在目前輪未被提及的概念的置信機率時,schedule 2 就無法衡量這個影響造成的狀态變化。

次年,劍橋大學組織了兩次 dstc 評測(dstc 2 & 3 (3) ),分别提出了兩項新的挑戰。在 dstc2 中,對話的場景選為在劍橋找餐廳的問題。與 dstc 2013 不同,此次評測假定使用者的目标在對話過程中是可以改變的;随後在 dstc 3 中,對話場景從找餐廳擴充到找餐廳或酒店。但 dstc 3 除了極少量供調試用的種子資料外并不提供額外的訓練資料,參評團隊需要隻用 dstc 2 的訓練資料訓練模型,并遷移至 dstc3 的測試集上。這兩次評測的主要評估名額均為基于 schedule 2 的 accuracy,l2 norm 和 roc ca 5。

之後的兩年中,新加坡的 i2r a*star 研究所組織了 dstc 4 (4) 和 dstc 5 (5) 的評測 。主要評測目标是對在旅遊場景下人和人對話中的對話狀态模組化。其中,dstc 5 在 dstc 4 的基礎上提出通過機器翻譯實作跨語言對話模組化的挑戰。由于這兩次評測的資料來自人工标注,并沒有引入 asr 和 slu,是以選用的評估名額是基于 schedule1 和 schedule 2 的 accuracy ,外加參評系統輸出的 slot-value pairs 的準确率、召回率和 f-score。

現有的對話狀态跟蹤的評測标準有一定的局限性。主要問題在于,上述評估機制完全基于結構化的語義和對話狀态表示。而在真實的商業應用對話系統中,為了更大程度的滿足使用者的需求,往往會采用結構化表示和非結構表示相結合的方法。例如,在第四代小米電視的對話系統中,三角獸科技就提供了模糊語義了解技術,在使用者搜尋視訊的目的無法完全結構化表示時能夠更精準的滿足使用者的需求。但是這種非結構化的表示則不适于用上述的評測标準進行評估,而應通過評估整體的對話效果來評測。

任務驅動的多輪對話究竟該如何實作?

2017 小米 4a 電視釋出會中對三角獸科技表示感謝

對話政策的評估

首先,我們再次說明,因為對話政策是一個決策過程,無法評估單輪決策結果的優劣。是以對話政策的評估通常是通過評估整體對話系統的效果來實作的。

一個任務驅動的多輪對話系統的核心目的是最有效的幫助使用者完成資訊或服務擷取的任務。那麼,評估一個任務驅動的對話系統的好壞最直接的兩個名額就是任務完成率和平均對話輪數。其中,任務完成率越高越好,而在同等對話完成率的基礎上,平均對話輪數越少越好。理想的情況下,統計上述名額需要有真人參與對話。(雖然早期的對話系統研究中也有通過對話模拟器進行自動評估的先例[4],但是對話模拟器自身的品質引入了另一個次元的問題。)獲得上述的統計結果,我們既可以離線标注真實使用者與對話系統互動的 log[5],也可以預先(随機)産生使用者目的,再讓真人實驗員按照指定的目的進行對話[6]。後者,可以通過 amazon mechanical turk 類的衆測平台完成[6]。此外,如果進行衆測類實驗,還應注意兩個問題:(1)通常我們除了需要自動統計客觀的任務完成率(通過比對預先指定的使用者目的和機器輸出的結果),還應要求測試使用者提供主觀感覺到的任務完成情況。因為根據以往的研究經驗,這兩個結果的絕對值會有較大出入[6];(2)造成主客觀任務完成率差異的主要原因是測試使用者因為各種原因在陳述需求時并未能準确完整的表達預定義的目的。是以,我們還需要一個檢測機制來檢驗使用者陳述的需求和系統輸出結果的比對程度[6]。

這裡值得一提的是,據我所知唯一一次端到端對話系統的公開評測是 spoken dialog challenge 2010,其選用的主要評估名額就是任務完成率和平均對話輪數。

總結

評測一個任務驅動的多輪對話系統,主要涉及評測自然語言了解、對話狀态跟蹤和對話政策三個部分。自然語言了解是一個典型的分類問題,可以通過準确率、召回率和 f-score 等名額進行評測。對話狀态跟蹤,作為輔助對話政策的一個中間環節,業界已總結出一系列的評測标準,詳情請參考曆屆 dstc 公開評測。而對話政策的品質通常需要通過對話系統的整體效果來展現,其主要評測名額是任務完成率和平均對話輪數。

參考文獻

[1]  z wang, h chen, g wang, h tian, h wu & h wang (2014) policy learning for domain selection in an extensible multi-domain spoken dialogue system. in proceedings of conference on empirical methods on natural language processing (emnlp 2014) .

[2]  b thomson & s young (2010) bayesian update of dialogue state: a pomdp framework for spoken dialogue systems. computer speech & language 24 (4) , 562-588 .

[3]  j williams, a raux, d ramachandran & a black (2013) the dialog state tracking challenge. in proceedings of the sigdial 2013 conference .

[4]  k scheffler & s young (2001) corpus-based dialogue simulation for automatic strategy learning and evaluation. in proceedings of naacl workshop on adaptation in dialogue systems .

[5]  a black, s burger, a conkie, h hastie, s keizer, o lemon, n merigaud, g parent, g schubiner, b thomson, j williams, k yu, s young, & m eskenazi (2011) spoken dialog challenge 2010 : comparison of live and control test results. in proceedings of the sigdial 2011 conference .

[6]  f jurcıcek, s keizer, m gašic, f mairesse, b thomson, k yu & s young (2011) real user evaluation of spoken dialogue systems using amazon mechanical turk. in proceedings of interspeech .

本文作者:ai研習社

繼續閱讀