探祕:螞蟻金服“未卜先知”的客服系統是如何煉成的?

當手機取代了錢包,全民消費開啟移動支付和在線生活時,中國的商業生態和消費習慣已經被深刻改變。

人們開始越來越習慣不帶錢包的生活,此時的支付寶甚至已經比現金更常用了。

與支付寶這個產品端一同忙碌起來的還有螞蟻金服的服務端,95188 服務熱線就是其中之一。

然而當我們談起客服電話,想到的仍然是傳統的按鍵菜單(「普通話服務請按1,for English service please press 2」)和在機械而漫長的語音播報裡等待的焦躁。「在過去的統計裡,只要用戶沒轉接人工,就算作『問題被自助解決了』,其實在我們看來那不叫『解決』,叫『損耗』。」

螞蟻金服的產品運營專家弈客說。秉承著這樣的理念,團隊開發了 MISA(Machine Intelligence Service Assistant),一個能夠通過識別用戶的語音中包含的業務需求來直接進行回應的客服系統,他們稱之為「37攝氏度的自助語音交互」。

近日機器之心有幸探訪螞蟻金服,採訪了 MISA 團隊中的三位核心成員:人工智能部資深算法專家深空(張家興 )、客戶服務及權益保障事業部產品運營專家弈客(於浩淼 ) 以及人工智能部算法專家

千瞳(崔恆斌 ),聊了聊如何利用深度學習算法構建能夠「未卜先知」的客服系統。以下內容根據採訪實錄整理,機器之心對內容作了不改變原意的調整。

一、MISA 的「成長故事」與「近照」

1.開發 MISA 系統的初衷是什麼?

弈客:95188 支付寶服務熱線是一個典型的 IVR 場景(Interactive Voice Response,互動式語音應答),作為一個語音渠道,它的業務目標很簡單,就是「定位用戶的問題,匹配相應解答方案」。一開始,它就是一個傳統的按鍵菜單,後來隨著螞蟻金服業務線的日益增長,按鍵菜單無法滿足業務需求,同時語音識別技術也進入了一個基本可以投入應用的階段,所以從 16 年初開始,我們和算法工程師一起,嘗試找新的解決方法。

最初的想法是讓用戶描述自己的問題與場景,然後將描述與我們的業務與知識進行一次匹配。後來,我們發現單次匹配也很難做到特別精準,因為用戶很難在單次描述裡給出全部所需要素,所以就嘗試以多輪交互的形式,用一個對話系統來幫助用戶補全其描述中缺失的部分。

再後來,我們發現與其讓用戶完全清楚地描述自己的問題,不如我們率先發問。我們做了大量的市場調研,發現如今市面上的客服系統也基本上以「描述與匹配」模式為主,涉及多輪交互的本身就很少,在多輪基礎上發展方向也沒有那麼明確。因此我們就回到了螞蟻自身。我們就想,能不能基於用戶在提問時所積累的行為特徵,以「猜問題」的形式讓系統率先發起對話,降低用戶的使用難度。相比於「你有什麼問題?」,「你是不是想問 XXX 問題?」就要容易回答得多,即使用戶回答「不是」,我們的問題也會為他接下來的描述提供一個示例。

探秘:螞蟻金服“未卜先知”的客服系統是如何煉成的?

如今的95188 語音服務流程

2.現在MISA 的系統由哪些部分組成?分別完成什麼任務?

深空:MISA 的主要模塊有猜問題、問題識別、反問交互三個。「猜問題」是螞蟻金服在客服領域的首創,是一個利用用戶可能與本次致電相關的信息,基於深度學習算法框架構建的問題識別模型。「問題識別」是根據用戶的描述定位他可能遇到的問題。「反問交互」是在用戶給出的信息不全時,利用「要素拆解和補全」的方式幫助問題識別模塊圈定範圍,降低問題識別的難度,以反問的形式與用戶進行交互。

3.除了用戶轉為文本的語音輸入外,MISA 的系統還會接收哪些輸入?如何分類?

深空:我們將輸入分為因子、軌跡、文本三類。因子是由業務方定義的、具有明確含義的特徵,例如:過去24小時是否有還款行為、過去24小時是否發生過轉賬行為等。因子大約有數百個。軌跡是用戶最近的 120 個「行為」組成的時間序列,其中一個行為指對遠程服務器發生一次請求。行為的種類超過一萬種。文本是用戶的描述以文本形式表達;在「猜問題」環節,文本指用戶的歷史描述,在正常的「問題識別」環節,文本即把本次電話裡用戶對問題的語音描述轉換成文本。文本是一個長度各不相同,甚至可能空缺的輸入。

4.作為一個以識別為主要目的的系統,MISA 會將用戶的問題匹配到多少種類型裡?如何給出應答?

弈客:需要匹配的問題類型的具體數字隨著業務上線與下線會有浮動,規模大約在「數千」這個量級。

大框架上,應答可以分為三類。第一類,如果用戶的問題很簡單,能用一兩句話說清楚,我們就以播報的形式輸出。比如之前餘額寶一個業務的產品方案進行了調整,從不限轉入金額到每天最多隻能轉入兩萬。這時候當用戶轉入出錯前來諮詢,我們就會以播報形式把業務調整通知給用戶。第二類,如果方案需要用戶在某一個產品頁面進行操作與交互,我們就會把相應頁面在用戶的 app 里拉起來。用戶掛掉電話打開 app,就能看到解決方案頁面的推送,點開就可以完成操作了。最後一類,我們判斷相對複雜的問題,就轉接人工小二處理。

5.一位用戶平均需要與系統進行多少輪對話能夠定位到自己的問題呢?

弈客:一開始系統能力還沒有那麼強的時候,我們把最多對話輪數設置為 4 輪,如果 4 輪對話之後用戶的問題仍然沒有得到解決,就轉交人工客服。通過不斷的優化,現在用戶的平均對話輪數不超過兩輪,大概在 1.8-1.9 左右。

二、客服系統是怎樣煉成的:模型選擇、評估與優化

6.在處理自然語言文本時,用到了哪些深度學習模型?

千瞳:我們首先用自己預訓練的詞向量對文本進行表示,然後分別用到了卷積神經網絡(CNN)和以 LSTM 為基本單位的循環神經網絡(RNN)對文本進行處理。

卷積神經網絡中,模型對由詞向量組成的文本做一維單層卷積與池化,形成一個向量,RNN 則把文本視為一個序列,處理後也得到一個向量,最後,將兩個向量相加,得到一個代表本段文本的新向量,然後與代表因子和軌跡的向量加在一起,進行分類。

7.

為什麼同時採用 CNN 和 RNN?

千瞳:兩種模型提取特徵的能力不同。CNN 的能力在於提取關鍵詞。RNN更善於捕捉序列關係。

8.分類模型與問題識別模塊的關係是?

千瞳:問題識別模型是由多個子模型+融合模型的形式組織的。分類模型只是其中一種子模型,除此之外,還有搜索、意圖樹等多個結構化子模型。不同模型的輸出格式也各不相同,分類模型返回不同類別的可能性打分,而意圖樹可能只返回某一個最可能的類別。在子模型各自進行問題識別後,我們會通過一個GBDT的模型,對前四個模型的結果進行融合。在融合模型階段,我們取每一個模型的 top1輸出,根據標註數據來選擇輸出可能性最高的那個模型的結果。

探秘:螞蟻金服“未卜先知”的客服系統是如何煉成的?

9.反問交互是如何實現的?

弈客:如今一百通電話裡,有三十通會率先通過猜問題的形式對用戶進行發問。如果沒有猜中,就要思考如何在較短的輪數內摸清用戶的需求。用戶的大多數問題都能夠以「業務、框架、類型」三要素方式進行拆分。例如「花唄不能還款」,「花唄」就是涉及的業務,問題的核心動詞「還款」就是框架,「失敗」是導致用戶提問的訴求類型。有超過一千個用戶問題都可以被拆解成三要素的形式,其中包括一百多類業務、不到一百類框架和不超過十種問題類型。

三要素拆分方式的方式能夠幫助快速縮小識別範圍。用戶在描述中,可能不能一次把三要素都描述清楚,但是如果給出了某部分要素,比如用戶說「我要還款」,就給出了框架「還款」和類型「如何」,這時我們就可以就缺失的「業務」要素進行反問,比如,「您是要進行花唄還款、借唄還款還是信用卡還款?」

探秘:螞蟻金服“未卜先知”的客服系統是如何煉成的?

千瞳:從技術的角度上來講,我們在構建了語義要素庫之後,是可以實現 zero-shot 的問題識別的。即,不需要見到特定的要素組合的訓練樣本,只要在其他訓練樣本中見過單獨的要素在其他場景下出現,一樣可以識別這個要素組合,對應到相應問題。

另外,我們也構建了多任務學習的框架。三要素識別任務的目標是非常類似的,都可以看做是多分類問題。多任務學習讓不同任務間的數據可以共享。雖然每一個單獨的任務都有足夠的數據,但是不同任務間目標會讓特徵提取各有側重,提高模型效果。相比單模型,識別準確率可以提升7個百分點。

10.如何評估匹配的精確程度?這些評估是否會反過來影響模型的優化?

千瞳:匹配的評估指標有多個層級,第一個是CTR(Click Through Rate),比如在「猜問題」階段,用戶會確認系統猜的是不是他的問題。第二個是分流的準確率,如果分配到人工還有小二派單準確率,最後是問題解決率。

至於用戶的評估如何影響模型優化,一言以蔽之,用戶的反饋就是模型的訓練數據,系統自己能形成一個閉環迭代體系。 MISA 的大部分模型一週迭代兩次。


分享到:


相關文章: