對話系統:

 

美團對話理解技術及實踐

 

閱讀數:73892019 年 6 月 4 日 08:00算法

 

智能客服是一種使用天然語言與用戶交互的人工智能系統,經過分析用戶意圖,以人性化的方式與用戶溝通,向用戶提供客戶服務。網絡

本議題首先介紹美團智能客服的對話交互框架,而後就咱們在其中意圖挖掘、意圖理解、情緒識別、對話管理等核心模塊中用到的機器學習算法進行詳細的介紹。session

美團對話理解技術及實踐

美團點評的使命是 " 幫你們吃得更好,生活更好 " 。美團線上服務的 APP 涵蓋了生活服務方方面面,包括餐飲、外賣、打車、酒店業務等。2018 年整年美團的總交易金額達 5156.4 億元人民幣,同比增長 44.3%;2018 年美團單日外賣交易筆數超過 2100 萬筆。美團的各個 APP 上具備大量的客服信息類的數據,這也爲工程師提供了很好的練兵場。架構

1、智能客服對話框架

美團對話理解技術及實踐

當用戶進入到客服界面時每每是帶着一個問題來的,那麼咱們須要作的就是對這個問題進行理解,而後根據理解結果去請求相應服務,去解決用戶的問題。這裏面主要分爲兩大塊,一方面是離線訓練和知識庫整理部分,另外一部分是在線處理部分。框架

在在線部分,首先須要對問題進行基礎特徵的提取,好比:分詞、語義標籤抽取、情緒分析、NER 識別等;進而進入下面一層 - 意圖理解層,主要有問題領域分類、意圖識別和屬性抽取;意圖理解以後就進入到了對話管理這個階段,對話管理模塊主要包括兩個部分,狀態追蹤 ( DST ) 和對話決策,DST 根據上下文狀態明確當前用戶的領域和意圖,而對話決策模塊則根據用戶當前意圖決定後續動做;再之下是業務服務層,包括各業務的數據服務接口以及業務數據呈現樣式等。dom

2、意圖理解

美團對話理解技術及實踐

美團圍繞着生活服務有着許許多多場景和業務,針對客服服務而言,用戶多是從單一的業務窗口進入到客服中,這時咱們是知道該客服服務屬於哪一個領域;用戶也有多是從美團的綜合門戶入口進入到客服中,在這種狀況下咱們沒法判斷用戶須要進行哪一個業務領域方面的諮詢。機器學習

除此以外,在場景方面,主要涉及單輪 QA 和多輪 Task,針對一些簡單的問題,單輪的 QA 就能夠解決,舉個例子:ide

U: 美團送餐時間函數

S: 用戶您好,可否配送是以商家營業時間爲準的。如您所選的商家正在營業,便表明能夠提供點餐及配送服務。學習

而大量複雜的業務經過單輪的 QA 是沒法完成的,這時候就須要多輪對話,舉個例子:

如何成爲美團商家?

美團對話理解技術及實踐

像這種就須要多輪的任務 Task 才能解決。

美團對話理解技術及實踐

因爲美團涵蓋衆多的業務領域,因此當用戶提出一個問題時,咱們首先要將這個問題進行領域分類,把它分到某個業務領域去,而後用業務知識去解決這個問題;領域明確後就是意圖分類,根據問題的不一樣類別,好比問答類的、閒聊類的等,採用的方式也會有所差別。接下來將對這兩個方面作詳細介紹。

2.1 領域分類

美團對話理解技術及實踐

針對領域分類任務,如上圖所示,咱們首先會從不一樣的業務中收集大量的業務數據,做爲基礎的訓練數據,雖然這些數據來自不一樣的業務,可是依然存在一些問題,主要有如下兩方面:

  • 標籤不許:用戶有可能會在某個業務對話中提問其它領域的問題;
  • 領域重疊:某些問題可能會在多個領域中出現。

因此,原始數據不能直接拿來做爲訓練數據,必需要通過人工篩選和標註方可以使用。 爲了節約人力成本和提升迭代速度,咱們採用了主動學習框架,模型的迭代主要分爲以下幾步:

  1. 蒐集業務數據,爲每條業務數據打上相應的業務標籤
  2. 對數據進行模型訓練
  3. 將上步訓練好的模型對樣本進行預測
  4. 標註人員對預測樣本進行標註,選出錯誤和難分開的樣本
  5. 返回第 2 步,對標註好的數據從新進行訓練

美團對話理解技術及實踐

咱們同時也在不一樣的模型上測試領域分類效果,實踐中的各模型效果如上圖所示。 從結果中咱們能夠看出,BERT 的效果是很是高的,可是呢咱們也會考慮模型在實際運行中的效率問題。 對於一個 15 個字左右的 query 來講,用 TextCNN 模型在 10ms 之內就能夠解決,若是用 BERT 模型的話可能須要 70ms 左右,這個時間仍是比較長的,當前實際上線的時候咱們採用的是 TextCNN 模型。 這是 2014 年 Yoon Kim 提出的一種方法。

美團對話理解技術及實踐

2.2 意圖分類

針對意圖分類,主要包括問答型意圖理解和任務型意圖理解兩個方面。

美團對話理解技術及實踐

這兩類問題有着各自的特色,針對問答類,咱們採用檢索和類似度排序的策略,下圖是問答類的設計架構。

美團對話理解技術及實踐

針對任務型的意圖理解,咱們採用規則和模型結合的方式,一種是經過規則的方式,好比上下文無關文法,另外一種是採用模型訓練的方式。

上下文無關文法

美團對話理解技術及實踐

上圖就是其中一個例子,在工業界這種方式仍是很是通用的,對於問題冷啓動,高頻出現的問題和常規的問題,採用規則的方式可以很好的解決。

多任務學習模型

美團對話理解技術及實踐

模型部分咱們把意圖分類和屬性抽取聯合建模,做爲一個多任務學習 ( Multi-task Learning ) 任務,如上圖所示 ( 算法詳見 Zhang, Xiaodong 2016IJCAI ) 。雙向 LSTM 處理後,一方面會經過 softmax 分類輸出意圖多分類的結果 ( 右邊的 y^u );另外經過 CRF 層,標記每個詞的槽位標籤。具體來講,對於 " 幫我找一家明天中午適合 10 人聚餐的川菜館 ",模型應該能識別出來它是屬於訂餐意圖,同時又可以抽取出時間 " 明天中午 " 、人數 " 10 " 和口味菜系 " 川菜 " 等屬性信息。

2.3 對話狀態追蹤 ( DST )

美團對話理解技術及實踐

DST 解決的仍是一個意圖的問題,根據當前上下文的環境或者狀態來明確當前用戶的確切意圖。

美團對話理解技術及實踐

上圖是咱們當前的框架,這個 session context 爲上下文信息,NLU 模塊的輸出信息多是多個意圖,咱們須要根據其餘的一些信息,好比,訂單信息、門戶信息,入口信息等,結合 session context 去明確它是屬於哪一個領域。

若是這個領域不能明確怎麼辦?咱們的作法是會跟用戶進行一輪的澄清,反問用戶一次,來解決這個問題,也就是框架最左邊的 " domain 不明確進行澄清 " 邏輯。

領域一旦明確後,下一步會進入到意圖這一塊,咱們要明確它當前是什麼意圖,固然接收到的 query 也面臨多意圖判斷的問題,一樣咱們也能夠去作澄清,澄清包括利用上下文信息斷定,或者增長一輪與用戶的交互來澄清,若是明確則繼續下面的流程,這是咱們總體的架構。

舉個栗子:

若是接收到一個信息是 " 牛肉湯撒了 ",首選咱們要判斷它是屬於哪一個領域的,它是屬於外賣商家這個領域,接着判斷其意圖,對意圖進行澄清後得知意圖是 " 如何申請餐損 ",而後走餐損的流程。

美團對話理解技術及實踐

3、知識發現

3.1 人在迴路

客服的目的是爲了解決用戶的問題,AI 在現有的 work flow 中節省人力,可是機器解決不了的事情仍是要交給人來解決。因此在下圖中,咱們必定要加一條轉人工的服務。另外咱們利用無監督學習從日誌中挖掘出的知識點也須要人工 " 業務運營 " 來 check 。在整個環路里監督學習從知識庫中學習到的語義表示能力又能夠提供給無監督學習使用,這個在下面會進一步提到。

美團對話理解技術及實踐

3.2 無監督學習在知識發現中應用

美團對話理解技術及實踐

無監督機器學習主要涉及兩個問題,一個是句子的語義表示,另外一個就是如何作知識聚類。

在語義表示問題上,咱們作了大量的試驗,在迭代的過程當中,咱們用到了 DSSM 模型、seq2seq 模型和 BERT 模型來作意圖的類似度計算,在這個過程當中咱們發現不一樣的模型有各自的特色,它可能抓住不一樣維度的特徵,在離線模型中咱們用多個模型的拼接的方式來表示其語義向量。

美團對話理解技術及實踐

在知識點聚類這個問題上,咱們採用用了最通用的 K-means 模型來作的。

美團對話理解技術及實踐

上面講到的是意圖和說法的挖掘,在實際業務中咱們有大量的 Task 的問題。下圖呈現的是一個 " 如何申請餐損 " 的 Task 樹。

美團對話理解技術及實踐

當用戶的問題觸發 Task 後,Task 機器人根據和用戶的交流來獲取槽信息,調用不一樣 API 接口來獲取槽信息,進而回複用戶。上圖 " 如何申請餐損 " Task 須要明確的槽包括 " 配送方式 " 、" 餐損緣由 " 、 " 申請狀態 「,其中 " 配送方式 " 和 " 餐損緣由 " 是經過與用戶的交互來明確,」 申請狀態 " 則是經過請求後臺服務來明確。

在這個環節中咱們須要作的就是輔助運營人員構建 Task 類的知識。

咱們根據用戶的日誌數據提取相應意圖,而後根據意圖共現,回覆共現去挖掘,當一個用戶問了一個問題以後還會提問哪些問題,當用戶收到反饋以後還會反問哪些問題。根據這些去構建 Task 子樹,離線構建好以後交給運營的同窗,運營同窗審覈經過以後就能夠上線了。

4、情緒識別

4.1 背景介紹

客服熱線是咱們公司對外服務的重要交流通道,在售前、售中和售後的各個環節中發揮着重要做用,爲用戶提供意見處理、資料管理、技術支持等多項服務。然而目前客服熱線在運營過程當中還存在一些痛點,如客服人工坐席的服務水平參差致使客戶的體驗存在差別,另外個別客戶還存在動機複雜等問題。所以如何利用技術提高客服熱線的服務水平、檢測熱線中可能的風險是目前須要解決的一個問題。 本項目對客服熱線中的語音數據進行挖掘與分析,經過量化用戶的情緒能量值,實現對用戶情緒狀態 ( 是否激動、情感傾向等 ) 的追蹤,而且在客戶情緒超過設定閾值時提供預警信息,以便相關人員和應急措施的及時介入,從而爲相關業務部門提供運營數據支撐和智力支持,最終提高客服熱線的服務質量和服務效率。

4.2 特徵提取

美團對話理解技術及實踐

FTT:短時傅里葉變換

每幀語音都對應於一個頻譜 ( 經過短時 FFT 計算 ),頻譜表示頻率與能量的關係。

梅爾濾波:實驗觀測發現人耳就像一個濾波器組同樣,它只關注某些特定的頻率份量 ( 人的聽覺對頻率是有選擇性的 ) 。也就說,它只讓某些頻率的信號經過,而壓根就直接無視它不想感知的某些頻率信號。

4.3 模型選擇

特徵處理完成以後就是採用哪一種模型來進行訓練。

美團對話理解技術及實踐

在迭代中咱們採用過傳統的機器學習模型,好比 LR、SVM 模型,神經網絡模型,和一些預訓練好的模型,在這個裏面咱們遇到的一個挑戰就是,一個情緒是否是激動的標籤是針對整個通話記錄標註的,可是用戶在通話的過程當中,不是一直的激動,而是在某個通話階段情緒激動,而一個標籤沒法體現出究竟是那一部分激動,是全程激動,仍是部分激動,仍是全程平靜的,其實這個裏面就涉及到一個弱標籤的學習,以下圖所示。

美團對話理解技術及實踐

這是 19 年提出的一個算法,在實際應用中效果不錯,感興趣的同窗能夠根據信息去查找。

在實際的效果上,各個模型的表現以下:

MFCC + LSTM < MFCC + CNN < VGGish + ferture level attention < VGGish + decision level attention

5、展望

  • 多輪上下文建模,意圖理解
  • 讓用戶作選擇題,作意圖預判,意圖推薦
  • 語音與文本多模態,弱標記學習,情緒風險識別
  • 對話歷史的話題抽取及切割,話術推薦,坐席助理

以上是當前咱們正在開展及探索的智能客服理解部分的內容,從 ToC 的用戶側,以及 ToB 的坐席助理側兩方面來優化整個客服閉環。

做者介紹:

江會星博士,美團點評搜索與 NLP 部 NLP 中心的研究員,智能客服團隊負責人,主要負責美團智能客服業務及對話平臺的建設。曾在阿里達摩院語音實驗室從事智能語音對話交互方向研究,主要負責主導的產品有斑馬智行語音交互系統、YunOS 語音助理等。

團隊介紹:

美團點評搜索與 NLP 部 NLP 中心秉承 " 讓機器理解人類語言,讓機器與人天然對話,用數據打造知識大腦 " 的信條,致力於建設世界一流的天然語言處理核心技術和服務能力,打造智能客服對話平臺,打造天然語言處理平臺及知識圖譜 ( 美團大腦 ),助力美團業務場景智能化轉型,提高美團科技水平和品牌影響力。

當前咱們在 NLP 多個方向,包括但不限於意圖理解,對話交互,意圖推薦,風險識別,知識圖譜等崗位招聘算法及工程崗位,Base 北京、上海兩地。歡迎加入咱們團隊,簡歷請投遞至郵箱:

jianghuixing@meituan.com 

本文來自 DataFun 社區

原文連接:

https://mp.weixin.qq.com/s/UH7r3oh4M4_qkqtIE1dGPw

 


 

Deep Reinforcement Learning for Dialogue Generation

本文將會分享一篇深度加強學習在bot中應用的文章,加強學習在很早的時候就應用於bot中來解決一些實際問題,最近幾年開始流行深度加強學習,本文做者將其引入到最新的bot問題中。paper的題目是Deep Reinforcement Learning for Dialogue Generation,做者是Jiwei Li,最先於2016年6月10日發在arxiv上。

如今學術界中bot領域流行的解決方案是seq2seq,本文針對這種方案拋出兩個問題:

一、用MLE做爲目標函數會致使容易生成相似於「呵呵呵」的reply,grammatical、safe可是沒有養分,沒有實際意義的話。

二、用MLE做爲目標函數容易引發對話的死循環,以下圖:

解決這樣的問題須要bot框架具有如下的能力:

一、整合開發者自定義的回報函數,來達到目標。

二、生成一個reply以後,能夠定量地描述這個reply對後續階段的影響。

因此,本文提出用seq2seq+加強學習的思路來解決這個問題。

說到加強學習,就不得不提加強學習的四元素:

  • Action

這裏的action是指生成的reply,action空間是無限大的,由於能夠reply能夠是任意長度的文本序列。

  • State

這裏的state是指[pi,qi],即上一輪兩我的的對話表示。

  • Policy

policy是指給定state以後各個action的機率分佈。能夠表示爲:pRL(pi+1|pi, qi)

  • Reward

reward表示每一個action得到的回報,本文自定義了三種reward。

一、Ease of Answering

這個reward指標主要是說生成的reply必定是容易被回答的。本文用下面的公式來計算容易的程度:

其實就是給定這個reply以後,生成的下一個reply是dull的機率大小。這裏所謂的dull就是指一些「呵呵呵」的reply,好比「I don’t know what you are talking about」等沒有什麼養分的話,做者手動給出了這樣的一個dull列表。

二、Information Flow

生成的reply儘可能和以前的不要重複

這裏的h是bot的reply表示,i和i+1表示該bot的先後兩輪。這個式子表示同一個bot兩輪的對話越像reward越小。

三、Semantic Coherence

這個指標是用來衡量生成reply是否grammatical和coherent。若是隻有前兩個指標,頗有可能會獲得更高的reward,可是生成的句子並不連貫或者說不成一個天然句子。

這裏採用互信息來確保生成的reply具備連貫性

互信息與多元對數似然比檢驗以及皮爾森校驗有着密切的聯繫 [3]  ——

  • 楊立娜. 基於相位相關理論的最大互信息圖像配準[D].西安電子科技大學,2010.
互信息(Mutual Information)是 信息論裏一種有用的信息度量,它能夠當作是一個 隨機變量中包含的關於另外一個隨機變量的信息量,或者說是一個隨機變量因爲已知另外一個隨機變量而減小的不願定性  [1]  。
 
 

什麼是點互信息

機器學習相關文獻裏面,常常會用到PMI(Pointwise Mutual Information)這個指標來衡量兩個事物之間的相關性(好比兩個詞)。其原理很簡單,公式以下:

在機率論中,咱們知道,若是x跟y不相關,則p(x,y)=p(x)p(y)。兩者相關性越大,則p(x,y)就相比於p(x)p(y)越大。用後面的式子可能更好理解,在y出現的狀況下x出現的條件機率p(x|y)除以x自己出現的機率p(x),天然就表示x跟y的相關程度。

這裏的log來自於信息論的理論,能夠簡單理解爲,當對p(x)取log以後就將一個機率轉換爲了信息量(要再乘以-1將其變爲正數),以2爲底時能夠簡單理解爲用多少個bits能夠表示這個變量。

至此,概念介紹完了,後面是例子和相關背景,不感興趣的話就能夠不用看了。

例子

舉個天然語言處理中的例子來講,咱們想衡量like這個詞的極性(正向情感仍是負向情感)。咱們能夠預先挑選一些正向情感的詞,好比good。而後咱們算like跟good的PMI,即:

PMI(like,good)=logp(like,good)p(like)p(good)

其中p(like)是like在語料庫中出現的機率(出現次數除以總詞數N),p(like,good)表示like跟good在一句話中同時出現的機率(like跟good同時出現的次數除以N2)。

PMI(like,good)越大表示like的正向情感傾向就越明顯。

互信息(Mutual Information)

點互信息PMI其實就是從信息論裏面的互信息這個概念裏面衍生出來的。

互信息即:

其衡量的是兩個隨機變量之間的相關性,即一個隨機變量中包含的關於另外一個隨機變量的信息量。所謂的隨機變量,即隨機試驗結果的量的表示,能夠簡單理解爲按照一個機率分佈進行取值的變量,好比隨機抽查的一我的的身高就是一個隨機變量。

能夠看出,互信息其實就是對X和Y的全部可能的取值狀況的點互信息PMI的加權和。所以,點互信息這個名字仍是很形象的。

舉個栗子

The following table shows counts of pairs of words getting the most and the least PMI scores in the first 50 millions of words in Wikipedia (dump of October 2015) filtering by 1,000 or more co-occurrences. The frequency of each count can be obtained by dividing its value by 50,000,952. (Note: natural log is used to calculate the PMI values in this example, instead of log base 2)

 
   

最終的reward由這三部分加權求和計算獲得。

加強學習的幾個要素介紹完以後,接下來就是如何仿真的問題,本文采用兩個bot相互對話的方式進行。

step 1 監督學習。將數據中的每輪對話當作target,將以前的兩句對話當作source進行seq2seq訓練獲得模型,這一步的結果做爲第二步的初值。

step 2 加強學習。由於seq2seq會容易生成dull reply,若是直接用seq2seq的結果將會致使加強學習這部分產生的reply也不是很是的diversity,從而沒法產生高質量的reply。因此,這裏用MMI(Maximum Mutual Information,這裏與以前Jiwei Li的兩篇paper作法一致)來生成更加diversity的reply,而後將生成最大互信息reply的問題轉換爲一個加強學習問題,這裏的互信息score做爲reward的一部分(r3)。用第一步訓練好的模型來初始化policy模型,給定輸入[pi,qi],生成一個候選列表做爲action集合,集合中的每一個reply都計算出其MMI score,這個score做爲reward反向傳播回seq2seq模型中,進行訓練。整個仿真過程以下圖:

兩個bot在對話,初始的時候給定一個input message,而後bot1根據input生成5個候選reply,依次往下進行,由於每個input都會產生5個reply,隨着turn的增長,reply會指數增加,這裏在每輪對話中,經過sample來選擇出5個做爲本輪的reply。

接下來就是評價的部分,自動評價指標一共兩個:

一、對話輪數。

很明顯,加強學習生成的對話輪數更多。

二、diversity。


加強學習生成的詞、詞組更加豐富和多樣。

下圖給出了一個MMI seq2seq與RL方法的對比結果:

RL不只僅在回答上一個提問,並且經常可以提出一個新的問題,讓對話繼續下去,因此對話輪數就會增多。緣由是,RL在選擇最優action的時候回考慮長遠的reward,而不只僅是當前的reward。

本文是一篇探索性的文章,將seq2seq與RL整合在一塊兒解決bot的問題是一個不錯的思路,頗有啓發性,尤爲是用RL能夠將問題考慮地更加長遠,得到更大的reward。用兩個bot相互對話來產生大量的訓練數據也很是有用,在實際工程應用背景下數據的缺少是一個很嚴重的問題若是有必定質量的bot能夠不斷地模擬真實用戶來產生數據,將deep learning真正用在bot中解決實際問題就指日可待了。

RL解決bot問題的文章在以前出現過一些,但都是人工給出一些feature來進行加強學習,隨着deepmind用seq2seq+RL的思路成功地解決video games的問題,這種seq2seq的思想與RL的結合就成爲了一種趨勢,朝着data driven的方向更進一步。

一點思考,歡迎交流。

相關文章
相關標籤/搜索