科技改變生活 · 科技引領未來
編輯導語:隨著科技的進步和普及,AI 產品逐漸走進了大眾的視野,從手機語音助手到各類智能音箱,AI 技術不僅方便了我們的生活,還逐漸改變了我們的習慣。本文作者在做了20+個AI多輪對話項目后,為我們總結了這篇文章。
在AI走進大眾視野的這幾年,我們或多或少的都會接觸到一些AI的產品,你去咨詢天貓客服,一開始肯定是個機器人接待你的;你接到一個電話問你是否需要買保險、辦信用卡或貸款,可能對方就是一個機器人;當然最常見的就是智能音箱。
以天貓精靈為例:
看起來很不錯的樣子,但是如果用戶接著說“幫我換成新褲子的《沒有理想的人不悲傷》”。
不好意思,這時天貓精靈是不會響應你的。因為天貓精靈在上一輪回復完用戶的話之后,就結束了對話。想要再次跟她對話,必須喊“天貓精靈”再次喚醒后,才能繼續對話。
以上這種每次只能進行一輪對話的模式,我們稱之為“單輪對話”。其實目前大多數機器人都是單輪對話的模式。比如說閑聊:
這里可能你又會問了,這不是連續的對話嗎,怎么會是單輪呢?
是的,因為這些對話,每一輪之間都是相互獨立,上下文之間沒有關聯關系,我們暫時稱之為單輪對話。與單輪對話相對的概念是多輪對話。
舉例:
是的,這就是多輪對話,也是本文主要討論的內容。如果說NLP是AI界皇冠上的明珠,那么多輪對話就是NLP界皇冠上的明珠。由此可見多輪的話的江湖地位。
由上面例子,跟單輪對話的對比,引出了對多輪對話的定義。
定義:根據上下文內容,進行連續的,以達到解決某一類特定任務為目的的對話。
這里有3點:
多輪對話跟機器人的關系圖:
通常來說,一個全能型的對話機器人是由很多個類型的機器人組成的,比如說閑聊機器人、任務機器人、問答機器人。而一個任務機器人內又可以包含多個多輪。
那怎么來實現多輪對話呢?市面上各大廠家的做法是開發一個用于構建多輪對話的平臺。有了這樣的平臺,你就可以構建出你想要的對話流程。
多輪比較擅長處理的兩類經典任務:
如果把多輪對話比作一輛汽車的話,那多輪對話平臺就是一個組裝車間,底層的各類AI工具,就相當于汽車的零部件,因此我們可以在對輪對話平臺內,用各種的工具,來組裝出你想要的對話邏輯。
這里你可能想說,這個哪里智能了,不就是我們實現定義好的流程嗎?是的,它確實并沒有你想象中的那么智能,沒有你想象中的那樣通過大量的數據就能自己學習出一個流程,也沒你想象中的那樣機器可以自己生成新的答復話術。
但是它確實能解決很多工業上的問題,特別是一些比較固定的流程,比如說:
這些固化的流程完全可以用機器人來完成,大大減少人力成本。相比于人,機器人可以一天24小時,同一時間多線路給多個人撥打電話。
1)進入多輪對話任務的條件
比如識別到有訂票的意圖,則進入到訂機票的多輪對話任務中;也可以通過關鍵字、指令等方式進入到多輪對話任務中。
2)機器人的應答話術
即用戶的每一個動作(query),機器人應該用什么話術去應答。
目前任務類型的對話通常話術都是預設的,基本不會是生成式的。因為任務性對話容錯率很低,寧可答不上,也不能答錯。生成式的應答話術,更多是在閑聊機器人中,因為閑聊容錯率相對比較高。
3)流程流轉條件的設置(if)
4)滿足條件執行動作的設置(then)
條件設置和動作設置是整個流程的核心思想,整個對話流程都是按:如果條件是什么…那么執行什么動作…的格式設置。
5)退出多輪對話任務的條件
最后,這個對話肯定是不能永遠繼續下去的,需要設置結束對話的條件,比如說常見的有以下幾種情況:
按另外一個維度,可以把多輪對話分為流程和解析工具。
1)流程–就是設定的流轉規則,如是什么,那就做什么
(如下圖,如果是肯定回復那就跳轉到A節點,如果是否定回復就跳轉到B節點)這一塊跟AI沒有什么關系。
2)解析工具–理解用戶說的話是什么
(如上圖,如果用戶說“我是他媽媽”,機器人怎么知道這是屬于否定回復,這就是解析工具要做的事情),也是整個多輪對話的核心。
解析工具主要分類兩大類:信息收集、文本分類。
1)信息收集
收集信息的方式主要有兩種:對話里收集、對話外收集。
2)文本分類
對話中的文本分類,通常又分為兩大類:有較完整的句子結構類文本、超短文本。
除了是否有句子結構外,兩類型的文本分類解析工具的應用場景也不一樣。有句子結構類文本解析工具,是全局的應用。比如說“我要轉人工服務”,可以做出一個意圖,不管在流程的哪個節點,用戶表達了這樣的意圖,都可以識別。
超短文本類解析工具,是局部應用的,是強依賴上線文的。比如說用戶單獨說一句“不是的”,如果沒有上下文,是沒有意義的。
機器問“請問您是深戶嗎”,用戶可以回復“不是的”;
機器問“請問您是深圳高校學生嗎”,用戶可以回答“不是的”;
因此同樣“不是的”,在不同的地方表達的意思是不一樣的,只有聯系上文,才能確定明確的含義。
解析工具直接決定了多輪對話平臺能力的上限,而決定解析工具能力又可以分為兩層:基礎技術層、產品層。
1)例子1
問在哪里出發后,我們往往會調用一個地址解析器來解用戶接下來說的話,用戶回復“深圳明天會下雨嗎”,這時會抽到地址【深圳】,那機器人就理解為出發地是【深圳】了。
解析器確實沒有問題,解出了地址【深圳】,但是解出的地址是不是符合上文需要填充的槽位,這時機器人就無能為力了,因為解析器只管解析,不管業務。
2)例子2
問是幾月份,我們往往會在這個時候調用一個時間解析器來解用戶接著說的話,用戶只回復“8”,這時時間解析器解不出結果,因為時間解析器只能解“8月”、“8號”等等這個帶單位的時間。純說一個數字,機器人就懵掉了。
從上面兩個例子就可以看出,解析工具跟實際應用場景的隔閡,導致了運用起來不夠靈活,主要矛盾點體現在:
舉例:
還是以上面例子為例,首先來了解幾個概念:
ok,了解了上面的概念之后,我們再回過來看這個例子。
用戶說了:深圳明天會下雨嗎?
會有兩個解析工具解到結果,假設地址解析工具得到的信心分是90分,意圖解析工具解到的【查天氣】意圖的信心分也是90,但是由于地址解析工具屬于主流程,優先級高于查天氣意圖,因此機器人最后選擇的是前者。因此機器人的動作是把【深圳】當作了出發地填入槽位。
因此,從這里可以看到有兩個問題:
這里先理清一對概念:
舉例:
機器人的話術已經被事先死死的設定了,問完問題1,就問問題2。沒有根據用戶的話做出一些反饋,就會顯得很生硬。
假設能這樣:
這樣不但能對用戶的回答做出響應,還根據用戶前面說的話來調整問題2的問法。這就是非生成式回答無法達到的效果,這也是機器人比較死板的原因。
舉例:
還記得她嗎,在采訪中她說“我已經用了洪荒之力了”。如果你只看文字,你能理解她里面所表達的是滿意的情緒嗎?
正常人與人的對話,一般會根據語調、文字、表情、動作等維度,組合起來理解對話所表達的內容。但是目前大多數的多輪對話平臺都是只以【文字】單一維度來做解析處理,即使很多平臺都亮出了自己在ASR環節的情緒理解有多么強大,但真正跟多輪平臺運用起來是隔離開的,訓練數據只是轉譯成文本的形式訓練,而不是直接拿語音去訓練。
不同語氣的“呵呵”,表達的意思是不一樣,有的是開心,有的是諷刺。如果丟失了語調的維度,那解析的結果肯定是會失真的。
在以用戶體驗為王的時代,如果你操作一個軟件或APP,你還要看它的說明書,甚至看了說明書還不會操作,那你肯定會瘋掉。
沒錯,多輪對話操作平臺就是一個看了說明說還不會用平臺,通常需要經常專業的培訓才會使用,因此是有很高的使用門檻的,而且邏輯能力不好人,還真做不來。
除了操作門檻高,后續的優化也不靈活。不是說像我們想象中的那么簡單,加點數據,標注下就能解決的。比如說機器人詢問:你是馬先生嗎?
你一開始想到的用戶可能的回答是兩類:肯定回復(是的、我是)、否定回復(不是、打錯了)。但是上線后,你會發現還有很多類型的回復:中性回復【怎么啦、你說】、式有關系人【我是他老婆、我是他兒子】、反問【你是誰呀、是機器人吧你】
每增加一個分類,就要重新在流程圖里增加分支,從新設定規則等等,并非直接加點數據重新訓練就能解決問題了。
前面大篇幅討論了,目前多輪對話平臺的核心是解析工具,因此我覺得未來的優化方向也是在解析工具上面,比如說:
目前的做法是對話流程、對話分支是由人工搭建的,這種方式對數據的利用率是非常低的。只是根據對話記錄,人為整理出對話流程,而對話之間的上下文關系是不參與到模型訓練的。機器人不會隨著人機對話量的增加而變得更加聰明。
未來的優化方向一定是最大化的利用數據,比如說通過給機器輸入大量的對話記錄,機器能夠學習出對話之間的邏輯關系,然后自己能學習出一個對話流程。
最后,用一句話總結下目前的多輪對話平臺:在解決固定化流程的問題上,確實能降低人力成本,但是對話比較死板,要想做到向人與人之間的自然交流,還有很長的路要走。
AI人,一起加油吧!
本文由 @Jimmy 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。