任務驅動的多輪對話究竟該如何實現?
雷鋒網按:本篇 “任務驅動多輪對話評測標準【人機對話評測系列之一】” 由三角獸 CEO Zhuoran Wang 提供。
三角獸科技 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 .
相關連結
(1)DIT++ 主頁:
https://dit.uvt.nl
(2)Dialog State Tracking Challenge(DSTC):
https://www.microsoft.com/en-us/research/event/dialog-state-tracking-challenge/
(3)DSTC 2 & 3:
http://camdial.org/~mh521/dstc
(4)DSTC 4:
http://www.colips.org/workshop/dstc4
(5)DSTC 5:
http://workshop.colips.org/dstc5/tasks.html