任務(wù)驅(qū)動(dòng)型人機(jī)對(duì)話系統(tǒng)設(shè)計(jì)
編輯導(dǎo)讀:Apple Siri、天貓精靈等智能對(duì)話產(chǎn)品如今越來越多出現(xiàn)在大眾視野,也獲得了人們的喜愛,其對(duì)話系統(tǒng)也引起了人們的注意。本文將圍繞任務(wù)驅(qū)動(dòng)型人機(jī)對(duì)話系統(tǒng),對(duì)其設(shè)計(jì)展開六方面的分析,希望對(duì)你有幫助。
近年來,隨著NLP技術(shù)的進(jìn)一步發(fā)展,越來越多的智能對(duì)話產(chǎn)品走進(jìn)大眾的視野。如Apple Siri、亞馬遜Echo、Google Home、天貓精靈等,在便捷我們生活的同時(shí),對(duì)話系統(tǒng)也開始逐漸引起人們的注意。
本文筆者將會(huì)結(jié)合工作實(shí)踐,對(duì)目前主流的對(duì)話系統(tǒng)進(jìn)行相關(guān)介紹,包括對(duì)話系統(tǒng)構(gòu)成、設(shè)計(jì)原理、應(yīng)用實(shí)踐及其重難點(diǎn)問題。
一、對(duì)話機(jī)器人類型及應(yīng)用
對(duì)話機(jī)器人目前從應(yīng)用場景和功能功能來看,主要可以分為三種類型:問答機(jī)器人、任務(wù)機(jī)器人、閑聊機(jī)器人。
問答機(jī)器人:問答機(jī)器人主要依托于強(qiáng)大的知識(shí)庫,可對(duì)用戶提出的問題給出特定回復(fù)。對(duì)回復(fù)內(nèi)容的準(zhǔn)確性要求高,但僅限于一問一答的單輪對(duì)話交互,對(duì)上下文信息不作處理,目前多用于客服領(lǐng)域。
任務(wù)機(jī)器人:機(jī)器人通過多輪對(duì)話交互滿足用戶某一特定任務(wù)需求。對(duì)任務(wù)完成度要求高,其中機(jī)器人主要通過對(duì)話狀態(tài)追蹤、問槽、澄清等理解用戶意圖,然后進(jìn)行回復(fù)或調(diào)用API等形式完成用戶任務(wù)需求,如訂票、訂餐等任務(wù)。
閑聊機(jī)器人:機(jī)器人與用戶互動(dòng)比較開放,用戶沒有明確目的,機(jī)器人回復(fù)也沒有標(biāo)準(zhǔn)答案。對(duì)回復(fù)內(nèi)容的準(zhǔn)確度不做要求,主要以趣味性和個(gè)性化的回復(fù)滿足用戶情感需求。
而對(duì)綜合類型對(duì)話機(jī)器人而言,往往是以上對(duì)話類型的組合,可以同時(shí)滿足用戶問答、任務(wù)或閑聊等多種需求,如上文提到的天貓精靈,百度小度等智能音箱產(chǎn)品。
下面筆者將著重就任務(wù)機(jī)器人核心對(duì)話系統(tǒng)的設(shè)計(jì)做詳細(xì)闡述。
二、任務(wù)機(jī)器人對(duì)話系統(tǒng)實(shí)現(xiàn)方式
任務(wù)型對(duì)話系統(tǒng)目前主要有兩種實(shí)現(xiàn)技術(shù),一種是基于流水線(pipeline)的實(shí)現(xiàn)方式,另一種是基于端到端(end-to-end)的實(shí)現(xiàn)方式。
2.1 流水線(pipeline)
上圖是基于流水線(pipeline)實(shí)現(xiàn)的對(duì)話系統(tǒng)的經(jīng)典結(jié)構(gòu)圖,又稱規(guī)則對(duì)話系統(tǒng)。
整個(gè)系統(tǒng)有四大核心模塊,分別由NLU、DST、DPL和NLG依次串聯(lián)構(gòu)成的一條流水線,各模塊可獨(dú)立設(shè)計(jì),模塊間協(xié)作完成任務(wù)型對(duì)話。
- 自然語言理解(NLU):主要對(duì)人機(jī)交互過程中產(chǎn)生的對(duì)話進(jìn)行語義理解;
- 對(duì)話狀態(tài)跟蹤器(DST):管理每一輪對(duì)話狀態(tài),包括歷史狀態(tài)記錄及當(dāng)前狀態(tài)輸出;
- 對(duì)話策略(DPL):基于當(dāng)前對(duì)話狀態(tài)執(zhí)行的下一步系統(tǒng)回應(yīng)策略;
- 自然語言生成(NLG):將對(duì)話策略輸出的語義轉(zhuǎn)化成自然語言。
2.2 端到端(end-to-end)
端到端(end-to-end)的對(duì)話系統(tǒng),主要是結(jié)合深度學(xué)習(xí)技術(shù)。采用數(shù)據(jù)模型驅(qū)動(dòng),通過海量數(shù)據(jù)訓(xùn)練,挖掘出從用戶自然語言輸入到系統(tǒng)自然語言輸出的整體映射關(guān)系,而忽略中間過程的一種方法。
就目前工業(yè)界整體應(yīng)用而言,雖然端到端(end-to-end)的方法靈活性和可拓展性較高,但其對(duì)數(shù)據(jù)的質(zhì)量和數(shù)量要求也很高,同時(shí)還存在不可控性和不可解釋性等問題,因此工業(yè)界的對(duì)話系統(tǒng)目前大多采用的還是基于規(guī)則的流水線(pipeline)實(shí)現(xiàn)方式。
下面筆者結(jié)合自己工作實(shí)踐,著重將為大家分析下基于規(guī)則的對(duì)話系統(tǒng)是如何設(shè)計(jì)與運(yùn)作的。
三、基于規(guī)則的對(duì)話系統(tǒng)設(shè)計(jì)
上圖為基于規(guī)則的對(duì)話系統(tǒng)架構(gòu),主要由語音識(shí)別(ASR)、自然語言理解(NLU)、對(duì)話管理(DM)、自然語言生成(NLG)、語言合成(TTS)五大模塊構(gòu)成。各模塊間相互協(xié)同,共同完成對(duì)話任務(wù)。
其中ASR和TTS主要在語音機(jī)器人中有所運(yùn)用,目前國內(nèi)這塊的技術(shù)已較為純熟,一般可直接采用阿里云、科大訊飛等供應(yīng)商的服務(wù),下面將重點(diǎn)針對(duì)NLU、DM、NLG三個(gè)核心模塊做詳細(xì)解析。
3.1 自然語言理解模塊(NLU)
自然語言理解(NLU)模塊主要是通過意圖識(shí)別和槽識(shí)別(信息抽?。﹣砝斫鈱?duì)話中用戶語句的語義。
意圖識(shí)別(Intent Prediction):目的是理解用戶所表達(dá)的意圖,核心其實(shí)是處理一個(gè)分類問題,將用戶的話分類到事先預(yù)定義好的意圖類別中去。目前主要基于深度學(xué)習(xí)的方法,使用CNN(卷積神經(jīng)網(wǎng)絡(luò))對(duì)query進(jìn)行特征提取和意圖分類,類似的方法同樣適用于領(lǐng)域的分類。
槽填充(Slot Filling):提取對(duì)話中關(guān)鍵信息,本質(zhì)是將句子中的詞打上語義標(biāo)簽(如上圖Slots日期、地點(diǎn)),具體方法有CRF(條件隨機(jī)場)、Deep Brief Network(深度信念網(wǎng)絡(luò))以及RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))等。
NLU的結(jié)果(intent和slot)會(huì)作為用戶狀態(tài)輸入到對(duì)話管理模塊,應(yīng)用于對(duì)話狀態(tài)的更新和維護(hù)。
3.2 對(duì)話管理模塊(DM)
對(duì)話系統(tǒng)中對(duì)話管理(DM)模塊由對(duì)話狀態(tài)跟蹤器(DST)和對(duì)話策略(DPL)構(gòu)成,此模塊就相當(dāng)于任務(wù)型機(jī)器人的大腦,是很重要的決策模塊。
常見的DM實(shí)現(xiàn)方式有多種:基于規(guī)則的有限狀態(tài)機(jī),基于統(tǒng)計(jì)的方法,基于神經(jīng)網(wǎng)絡(luò)的方法。
幾種方法各有利弊,但基于通用性、可控性和數(shù)據(jù)成本等考量,目前工業(yè)應(yīng)用還是以有限狀態(tài)機(jī)為主流,根據(jù)多維狀態(tài)的組合輸出對(duì)應(yīng)策略,規(guī)則簡單也比較適用于冷啟動(dòng)。
對(duì)話狀態(tài)追蹤(DST):每一輪對(duì)話中估計(jì)用戶的目標(biāo),常用的狀態(tài)結(jié)構(gòu)是槽填充(slot filling)或語義框架(semantic frame)。參照上圖,對(duì)每一輪對(duì)話進(jìn)行狀態(tài)的記錄和更新,主要通過記錄歷史狀態(tài)、用戶狀態(tài)(槽位&意圖等信息)和系統(tǒng)狀態(tài)(初始信息&配置信息),來更新當(dāng)前對(duì)話狀態(tài)。
對(duì)話策略學(xué)習(xí)(DPL):根據(jù)當(dāng)前對(duì)話的狀態(tài),產(chǎn)生系統(tǒng)下一步執(zhí)行動(dòng)作(回答、澄清、動(dòng)作執(zhí)行等),對(duì)話策略的設(shè)計(jì)也與任務(wù)場景強(qiáng)相關(guān)??梢允褂帽O(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的方法,不過目前工業(yè)上多采用規(guī)則的方法,事先定義好state對(duì)應(yīng)的action。
3.3 自然語言生成模塊(NLG)
自然語言生成主要是將策略模塊生成的抽象系統(tǒng)動(dòng)作轉(zhuǎn)化為自然語言形式的淺層表達(dá),輸出到用戶端。目前有三種方法:基于話術(shù)模版、基于知識(shí)庫檢索、基于深度模型。模版與知識(shí)庫主要是基于規(guī)則的策略,深度模型可以用如LSTM,seq2seq等網(wǎng)絡(luò)生成自然語言。
基于規(guī)則的方法雖簡單易用,但適應(yīng)不了更開放的場景,當(dāng)場景復(fù)雜動(dòng)作較多時(shí),策略規(guī)則的制定也會(huì)耗費(fèi)大量的精力。一旦規(guī)則確定,回復(fù)基本固定,靈活性較差,多樣性不足,造成體驗(yàn)感不高。
而好的NLG需具備4個(gè)特性:恰當(dāng)、流暢、易讀、靈活,即回復(fù)的自然語言不僅要精確表達(dá)出策略動(dòng)作的語義,還要具備一定的“類人性”,讓人機(jī)對(duì)話盡可能靠近人與人之間的對(duì)話,這也是后續(xù)NLG模塊需要持續(xù)探索與改良的核心關(guān)鍵點(diǎn)。
四、應(yīng)用案例
我們以58一個(gè)二手車回訪真實(shí)場景的人機(jī)語音交互對(duì)話為例,闡述下對(duì)話系統(tǒng)各模塊間是如何協(xié)同運(yùn)作的。
我們從第四輪對(duì)話開始切入:當(dāng)機(jī)器人第一次執(zhí)行問槽策略時(shí),槽位名稱”需求了解“,執(zhí)行話術(shù)“請問新車和二手車是否都在您的考慮范圍內(nèi)?”
4.1 語言理解
此刻當(dāng)用戶回復(fù)”只考慮二手車“時(shí),用戶的話會(huì)做前處理經(jīng)ASR轉(zhuǎn)譯成文本,后將文本輸入到語言理解(NLU)模塊。
- 意圖識(shí)別:NLU模塊一般會(huì)優(yōu)先匹配預(yù)設(shè)QA,若無QA能匹配上,則進(jìn)入深度意圖模型進(jìn)行意圖識(shí)別,此刻識(shí)別意圖為”提供信息“。
- 槽識(shí)別:同時(shí)進(jìn)行NLU模塊的另一任務(wù)”槽識(shí)別“,我們也稱這一過程為填槽(Slot Filling),本輪“需求了解”的槽值(Slot Value)識(shí)別為“二手車”。
4.2 對(duì)話管理
- 對(duì)話狀態(tài):然后NLU模塊的意圖和槽位信息作為用戶狀態(tài)輸入DM狀態(tài)模塊,狀態(tài)模塊結(jié)合系統(tǒng)狀態(tài)、用戶狀態(tài)、歷史狀態(tài),更新當(dāng)前狀態(tài):當(dāng)前匹配QA:“None”;當(dāng)前意圖:“提供信息”;當(dāng)前槽位名稱&槽值:“需求了解”&“二手車”;是否還有需要詢問的槽位;
- 對(duì)話策略:根據(jù)當(dāng)前對(duì)話狀態(tài),設(shè)計(jì)好的策略中系統(tǒng)應(yīng)執(zhí)行的下步策略:繼續(xù)詢問“車型了解”槽位,更精準(zhǔn)定位用戶需求。
4.3 自然語言生成
隨后在自然語言合成模塊(NLG)根據(jù)設(shè)定好的策略規(guī)則確定輸出話術(shù),機(jī)器人執(zhí)行問槽回復(fù)“那您最近在關(guān)注哪款車呢?我們可以將最新的降價(jià)信息推送給您?!?/p>
至此,對(duì)話系統(tǒng)從用戶輸入到機(jī)器人輸出,完成了一輪完整的對(duì)話流程。后續(xù)就是進(jìn)行重復(fù)的對(duì)話流程循環(huán),由此對(duì)話持續(xù)一輪一輪進(jìn)行下去,直到機(jī)器人任務(wù)主動(dòng)或被動(dòng)結(jié)束。
五、任務(wù)型對(duì)話機(jī)器人難點(diǎn)問題
要想任務(wù)型對(duì)話機(jī)器人在應(yīng)用中真正表現(xiàn)出色,體驗(yàn)感好,各個(gè)模塊也都有自己需解決的重難點(diǎn)問題。
如意圖模塊,如何降低ASR誤差帶來的影響,解決語言的多樣性和歧義性問題,槽位模塊中如何提高抽取模型的復(fù)用性,解決實(shí)體消歧問題。整體上看自然語言處理(NLP)領(lǐng)域,還存在上下文理解、語義推理、場景可移植性等亟需研究突破的問題。
以上基于規(guī)則的任務(wù)對(duì)話系統(tǒng),雖然簡單易用,但其缺點(diǎn)也是顯而易見的:對(duì)話管理模塊中狀態(tài)策略的定義與規(guī)則都高度依賴于人工設(shè)計(jì),復(fù)雜的場景下狀態(tài)和策略維度多起來的時(shí)候,就會(huì)耗費(fèi)大量的設(shè)計(jì)與維護(hù)成本。同時(shí)用戶的反饋數(shù)據(jù)難以傳給模型再學(xué)習(xí),各模塊間的依賴和影響也比較高。
如何在簡單任務(wù)下,提高DM模塊的可復(fù)用性,降低機(jī)器人生產(chǎn)和更新成本,是快速商業(yè)化落地的關(guān)鍵點(diǎn)。目前業(yè)內(nèi)很多公司已自行開發(fā)機(jī)器人工廠,將機(jī)器人生產(chǎn)的各環(huán)節(jié)模塊化、抽樣化、流程化、提升其通用性和兼容性,在盡可能多的任務(wù)場景下,實(shí)現(xiàn)機(jī)器人快速復(fù)制、設(shè)計(jì)、生產(chǎn)、上線的能力。
六、結(jié)語
對(duì)話機(jī)器人的能力成長依賴于NLP領(lǐng)域的技術(shù)進(jìn)步,目前更多的應(yīng)用落地還只是在特定場景下的簡單任務(wù)。由此,對(duì)話機(jī)器人未來的發(fā)展也必定會(huì)傾向于更大的知識(shí)體系 ,更強(qiáng)的自然語言理解能力、邏輯推理能力及情緒交互能力,實(shí)現(xiàn)Bot進(jìn)一步的智能化和人性化。
以上內(nèi)容基于筆者結(jié)合學(xué)習(xí)和工作實(shí)踐的思考,若有理解不到位之處,還望大家指正,更希望通過這篇文章能與各位多多交流。
本文由 @岑為 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自?Unsplash,基于 CC0 協(xié)議
- 目前還沒評(píng)論,等你發(fā)揮!