天天看點

檢索式對話系統在美團客服場景的探索與實踐

總第542篇

2022年 第059篇

檢索式對話系統在美團客服場景的探索與實踐

在傳統的客服、IM等場景中,坐席需要花費大量時間回答使用者的各種咨詢,通常面臨答案查詢時間長、問題重複、時效要求高等挑戰。因而,使用技術手段輔助坐席快速、準确、高效地回答使用者的各類問題非常有必要。

我們設計并疊代了一套基于檢索式對話系統的架構,以推薦回複的方式,基于對話上文為坐席提供候選回複,提高坐席效率進而提升使用者體驗,在衆多業務上均取得顯著效果。本文主要介紹了整體架構、名額體系、召回排序、應用示例等方面,希望為從事相關工作的同學帶來啟發或者幫助。

  • 1 背景與挑戰
  • 2 架構與名額
  • 3 召回子產品
  • 3.1 文本召回
  • 3.2 向量召回
  • 4 排序子產品
  • 4.1 對話預訓練
  • 4.2 負例采樣
  • 4.3 學會排序
  • 4.4 對比學習
  • 4.5 個性化模組化
  • 5 應用實踐
  • 5.1 離線實驗效果
  • 5.2 商家IM話術推薦
  • 5.3 線上坐席CHAT輸入聯想
  • 5.4 知識庫答案供給
  • 6 總結與展望

1 背景與挑戰

對話系統一直是人工智能研究的熱門領域之一,近年來随着深度學習技術的發展,人工智能在對話系統上出現了不少的突破性進展。但是,由于自然語言的複雜性,目前的智能對話系統還遠遠達不到可以直接替代人類的地步。是以在一些複雜的業務場景中,目前的智能對話系統如何更好的去輔助人類做到人機協同,提升溝通效率,也成為了當今研究的一個熱點以及實際落地方向。

作為一家連接配接使用者和商戶的生活服務電子商務平台,美團在平台服務的售前、售中、售後全鍊路的多個場景中,使用者向商家都存在有大量的問題咨詢情況,如線上坐席CHAT、商家IM等。是以我們希望利用對話系統,以推薦回複的方式,基于對話上文為客服提供候選回複,來幫助商家提升回答使用者問題的效率,同時更快地解決使用者問題,改善使用者咨詢體驗。一般來說,對話系統可以大緻分為三類:

  1. 任務型:一般為受限域,以完成特定領域的特定任務為目的,主流方法是基于有限狀态機(FSM)的可配置化TaskFlow,而基于強化學習、監督學習等基于資料驅動的對話管理方法在實際應用中尚不成熟,應用場景如售後退款等流程明确的智能機器人。
  2. 問答型:受限域或開放域,主要是回答特定領域的資訊咨詢或開放領域的知識性問題,主流方法包括圖譜問答(KBQA)、社群問答(CQA)、文檔問答(MRC)等單輪問答,也可能涉及多輪問答,應用場景如酒店、旅遊等領域的售前咨詢。
  3. 閑聊型:一般為開放域,無特定目的,在開放領域内讓對話有意義地進行下去即可,主流方法是基于檢索的召回排序二階段方法或基于生成的端到端模型,應用場景如聊天機器人。

其中,任務型和問答型系統具備較高的準确性,但是需要針對細分領域進行不同程度的适配與優化,在大範圍應用上需要較高的成本。本文主要關注基于檢索式方案的對話系統,其準确性略低,但是成本較小并且領域遷移性好,非常适合用于如話術推薦等人機協同等場景。

在後文中,我們主要以話術推薦應用為例,即根據對話上下文為坐席/商家提供候選回複,來介紹檢索式對話系統在美團客服場景的探索與實踐。以下内容會分為五個部分:第一部分介紹系統的整體架構與名額體系;第二和第三部分分别介紹召回和排序子產品的工作;第四部分展示一些具體的應用示例,最後一部分則是總結與展望。

2 架構與名額

檢索式對話系統的整體架構如下圖1所示,可以劃分為五層:

檢索式對話系統在美團客服場景的探索與實踐

圖1 檢索式對話系統架構圖

  1. 資料與平台層:離線對坐席/商家與使用者的曆史對話Session進行清洗、處理,建立自動化流程,日更新話術索引庫。同時,利用對話平台建構知識庫,既可以用在智能客服中,也可以用作話術推薦。
  2. 召回層:給定對話上文及其它限制條件,從話術索引庫和知識庫中召回結果,包括文本、向量、标簽、知識等多路召回。
  3. 排序層:針對召回子產品傳回的結果集合,進行排序打分,包括規則排序、文本相關性模型排序以及CTR預估排序。
  4. 政策層:針對排序子產品傳回的結果清單,進行重排序或者拒推,例如非活躍商戶拒推,推薦清單包含正确答案而商家長期無采納行為則降低推薦機率;多樣性答案選擇,盡量選擇語義及表達形式不同的答案,避免推薦過于相似的答案;個性化場景政策,針對場景特征定制政策。
  5. 應用層:主要用于人工輔助場景,包括線上回複咨詢時的話術推薦和輸入聯想,以及離線填答智能客服知識庫時的答案推薦供給。

同時,為了更合理地指導系統相關優化,我們設計了一套離線到線上的名額體系,以話術推薦為例,如下圖2所示,具體來說可分為三個部分:

檢索式對話系統在美團客服場景的探索與實踐

圖2 話術推薦名額體系

  1. 離線自動名額:主要計算的是Top-N推薦話術與坐席/商家下一句真實回複的語義相關性,我們采用了文本相關性的BLEU、ROUGE名額,以及排序相關性的Recall、MRR名額。
  2. 離線人工名額:上述離線自動名額計算比較簡單,無需人工參與,但存在一定的局限性。為此我們進一步進行了離線人工滿意度評估,通過人工打分來判斷系統推薦回複是否滿足目前對話回複上下文,并計算了離線人工名額與離線自動名額的相關性,結果表示離線人工名額與離線自動名額基本成正相關,且ROUGE名額相對來說更為客觀而且與人工名額相關程度更高。
  3. 線上業務名額:此部分名額是系統線上效果的重點觀測名額,直接真實反映話術推薦效果(在我們的多次AB試驗中,也證明了離線自動名額ROUGE與線上采納率名額呈正相關性)。

是以在後續離線試驗中,我們主要以文本相關性名額,尤其是ROUGE名額作為離線的核心觀測名額。

3 召回子產品

召回階段的主要目标是根據目前對話的上下文Context召回若幹條相關的回複Response,這裡的Context就相當于傳統檢索系統中的Query,Response就相當于Doc。但與傳統檢索系統不同的地方在于,話術推薦中的每條推薦回複,都對應一個曆史的對話上下文,而我們這裡召回的核心也在于,利用目前上下文去檢索一些相似的曆史對話上下文,然後用這些上下文對應的回複作為召回結果。是以,這裡的重點就在于如何利用目前上下文檢索相似的對話曆史上下文。

在召回階段,我們采用了基于本文&基于向量&基于知識的多路召回方案。其中,知識的來源主要包括商家結構化資訊(KBQA)以及商家個性化知識庫(QABOT),主要形式是上文最後一句的單輪問答。下面會重點介紹文本及向量召回。

針對上述對話多樣性、商戶個性化及時間遷移性等問題,在設計文本及向量召回索引時,我們劃分了兩類索引并引入日更新機制:

  1. 商戶/坐席曆史索引:商戶或坐席過去一個月的對話曆史日志所抽取得到的Context-Response對,話術符合商家/坐席的業務場景及說話習慣,精準個性化召回。
  2. 通用高頻話術索引:主要包括通用及高頻的Context-Response對,如問好、感謝等等場景,用于兜底,可大大提升覆寫率。
  3. 索引日更新機制:借助離線資料表生産平台和線上索引查詢平台,保證對話日志的回流和索引的日更新。

是以,在實際的話術推薦中,對商戶/坐席而言,推薦答案的來源是該商戶/坐席本身曆史話術或通用高頻話術,既部分緩解了個性化及時間漂移問題,也避免了因推薦不合格或違規話術引發客訴。

3.1 文本召回

對于文本召回,在對曆史對話建立索引時,最粗暴的方案是直接把曆史對話上下文直接拼接成一長串文本建立索引,然後線上利用BM25進行召回。這種做法主要存在兩個較大的缺陷:

  1. 沒有考慮到對話的順承特性,即對話的下一句回複通常與最近幾句對話曆史更為相關。
  2. 把所有對話曆史進行拼接導緻内容較為雜亂,不利于精确檢索。

針對這兩個問題,我們對對話曆史上下文索引的建立進行了優化。具體來說,我們将整個對話曆史劃分為:

  1. 短期對話上文:一般為上文最後一句包含完整語義的話,中文分詞後去停用詞建立反向索引。
  2. 長期對話上文:一般為上文除最後一輪外前N輪對話,中文分詞後去停用詞通過TF-IDF等方法挖掘Top-M關鍵詞入索引庫。
  3. 機器人對話上文:主要為進線标簽等,可以增加對話初期的背景資訊。

如下圖3所示,針對不同的對話上文采用不同的資訊抽取及模組化方式,核心思想在于對于短期上文保留盡量多的資訊,保證召回時的相關性,對于長期上文中的資訊進行篩選過濾,隻保留核心資訊,提升召回的精準性。

檢索式對話系統在美團客服場景的探索與實踐

圖3 文本召回對話上文模組化方式

此外,我們針對話術庫建構的主要工作集中于擴大資料規模和提升資料品質兩部分:

  1. 擴大資料規模:時間跨度上,我們對比了應用過去半個月/一個月/兩個月的對話曆史的理想上限效果,發現一個月相比半個月提升較大但兩個月相比一個月幾乎無提升,故而最終標明使用過去一個月的對話曆史日志;文本頻率上,早期僅選擇答案出現頻率大于1的問答對,後期添加所有問答對發現效果有較為明顯的提升。
  2. 提升資料品質:主要是清洗過濾噪音資料,包括不限于連結、卡片、髒文本等。這裡如果采取較為嚴格的過濾方案,線上效果反而下降,推測是召回排序方案本身具備去噪效果,而離線嚴格過濾反而會損失可用資料。

3.2 向量召回

近年來,随着深度學習的火熱發展,分布式語義表示(Distributed Representation)成為人們研究的一個熱點。分布式語義表示通過将文檔的語義壓縮到一個稠密向量空間,有效的緩解了資料稀疏性的問題,同時結合一系列向量檢索方案(如FAISS)還可以實作對文檔的高效檢索。

針對話術推薦場景,在文本召回的基礎上增加向量召回作為補充主要有以下兩點考慮:

  1. 增加短期上文的泛化性:文本召回僅僅是詞粒度的比對,引入向量表示可以大大增強表示和比對的泛化性。
  2. 增強長期上文的表示:文本中的長期上文僅使用關鍵詞進行表示,語義明顯失真,通過向量召回的方法可以更加有效地表示和利用長期上文。

具體來說,向量召回即給定對話上文(Context,Q),檢索得到答案集合(Response,A),一個最基本的問題就是召回方式的選擇(QQ vs QA),最終我們選了QQ的方式來進行檢索召回,即建構Context-Response Pair對,将Context表示為向量後檢索召回索引中相似的曆史Context,再使用這些曆史Context對應的曆史Response作為召回結果。

這樣選擇的核心原因在于:Context與Response之間并非單純的語義相似或相關關系,更多的是一種順承推理的關系,難以用基于相似度或距離的向量檢索方案來直接處理,通過引入曆史Context作為其中的"橋梁",可以讓模組化變得更加簡單。

舉一個簡單的例子,如果Context是“謝謝”,那麼向量檢索傳回的集合中大多都是此類表示感謝語義的句子,然而我們應該召回回複感謝的“不客氣”之類的句子。在實際實驗和業務中,我們也進行了一系列的對比,發現Context-Response(QA)召回方式效果遠差于Context-Context(QQ)方式。

3.2.1 表示模型

關于如何表征文檔,我們簡單介紹三類典型的模型架構:

  1. BoW:詞袋向量模型(Bag-of-Words Embedding)是文檔向量表示的一個基礎模型,在大規模無監督對話語料中通過 Word2vec[1]、Glove[2] 等算法計算出每個單詞的向量表示,文檔的向量表示可以通過文檔中所有詞語的向量進行組合來得到,比較簡單有效的方法是平均池化(Average Pooling)。
  2. BERT:大規模無監督預訓練顯著地提升了深度學習在自然語言處理領域的實用性和通用性,BERT[3]和MLM(Mask Language Model)作為典型的模型及任務,在對話領域内大規模資料預訓練後,可以獲得詞語的上下文相關表征向量,最終文檔的向量依然可由平均池化獲得。
  3. DualEncoder:雙塔模型[4]是大規模文本相似度計算或者說向量召回中最為經典的模型之一,以上述預訓練之後的BERT作為基礎模型來表征Context與Response(參數共享),最終文檔的表示是[CLS]位置的向量。

總結來看,BoW的局限之處在于對每個單詞僅有一種表示,忽視不同上下文情境下詞語的多義性;BERT緩解了BoW的這一問題,考慮了詞的上下文特征;DualEncoder在BERT的基礎上,不再使用平均池化的方式來表征文檔,而是直接在文檔級别進行訓練,更好地模組化了文檔内部的長程依賴關系,同時考慮了對話本身的特征。是以,我們最終選擇了雙塔模型,如下圖4所示:

檢索式對話系統在美團客服場景的探索與實踐

圖4 向量召回中的雙塔模型

3.2.2 資料采樣

雙塔模型的一個基本問題是如何構造高品質的正樣本對,在話術推薦的場景這個問題并不複雜,不過存在兩種選擇:

  1. Context-Response Pair:經由曆史對話日志挖掘得到的樣本對,及給定上文和其對應的回複。
  2. Context-Context Pair:借助商戶Context與Response的對應關系,同一Response對應的Context集合互為正例,通過這種關系僞造擷取Context及其對應Context。

我們選擇了方式一,這是因為對話中Context與Response盡管存在一定的多樣性,但是總體上來說相比搜尋系統中的Query-Document還是具備很強的對應關系,Response本身提供了足夠的監督資訊來區分不同的Context。

此外,負例采樣是向量召回中最重要的問題,一般來說典型的采樣方法有以下三種[19]:

  1. 預定義采樣:在資料準備階段預先根據某些規則或條件采樣負例,在模型訓練過程中單個正例對應的負例集合不變。局限于資源等問題,一般來說負例個數不會太多。
  2. Batch内采樣:模型訓練過程中,Batch内除目前正例及其對應樣例之外的其它樣例都可視作負例。相比于預定義采樣,Batch内随機采樣使得每輪訓練時同一正例對應不同的負例,并且可以設定較大的負例個數,可以更加簡單高效地利用資料。
  3. 難負例采樣:除了簡單負例之外,為了提升模型對難負例的識别效果以及對細節的學習能力,一般會結合場景特征挖掘部分難負例作為補充。

不管是學術界文章還是工業界實踐,都顯示Batch内簡單負例+難負例的組合效果最好,經驗比例大緻在100:1。是以,我們最終也基本參考了這種設定[5],如下圖5所示,其中關于難負例的采樣,我們嘗試了如下兩種方式:

檢索式對話系統在美團客服場景的探索與實踐

圖5 Batch内簡單負例 + 難負例

  1. 基于Context的BM25難負例挖掘(CBM):建立Context索引,通過BM25召回相似的Context,并在對應的Response集合中挑選難負例。
  2. 基于Response的BM25難負例挖掘(RBM):建立Response索引,通過BM25召回相似的Response,并在召回的Response集合中挑選難負例。

實驗結果表明,CBM會帶來一定提升而RBM則是負向效果,推測是RBM方法召回的樣例與真實回複的字面相似度較高,本質上是假負例而非難負例,導緻了模型效果的下降。

3.2.3 多樣性表征

因類目場景及商戶特征所導緻的多樣性問題利用上述建構索引的原則已經得到了緩解,這裡主要關注的是對話本身語義上的多樣性,即給定一段Context,可能存在多個語義點,存在多樣性的回複。具體來說,又可以分為兩方面:

  1. 多個Context對應一個Response:在Context包含多輪曆史對話的情形下尤其顯著。
  2. 一個Context對應多個Response:Context中包含多個主題或者說語義點,針對不同的語義點,存在不同的回複。即便是相似語義的回複,在表達形式上也會有所差異。

針對第一類多樣性,在Context召回相似Context的設定下并不存在明顯問題。但是在實際的實驗中,我們發現将同一個Response對應的Context集合做平均池化擷取均值向量,以此合并多條記錄到一條記錄并以該均值向量作為Context表示,可以有效提升召回結果集合的文本相關性名額,我們稱之為語義純化。

推測平均池化的方式去除了每個Context向量上附着的噪音,僅保留與對應Response最為相關的語義向量部分,故而提升了召回效果。

針對第二類多樣性,類似的問題或者思想在對話回複選擇、電商推薦、文字檢索中有過相關的工作:

  1. 弱互動[6]:對話回複選擇任務,一般來說,互動模型的效果遠好于雙塔模型,但是互動模型的推理速度較慢。本文通過設計多個Poly Codes或直接選取First-M、Last-M個Context Hidden States将Context表征為多個向量,進而引入弱互動性質,相比雙塔模型可以有效提升效果,相比互動模型可以大幅提升推理速度,不過其主要應用是在粗排子產品,而非向量召回子產品。
  2. 多興趣[7]:電商場景的推薦任務,本文将推薦系統視作一個序列化推薦任務,即根據使用者點選Item曆史推測下一個使用者可能感興趣的Item。作者認為單個向量難以表征使用者曆史的多興趣,通過動态路由(Dynamic Routing)與自注意力(Self-Attentive)從曆史中抽取K個向量表示不同的興趣點,不同的興趣點向量獨立召回不同的Items,然後設計聚合子產品對召回的Items進行重新分組和排序,聚合時除了相似度分數還可以考慮引入Diversity等更多的性質。
  3. 多向量[8]:稠密文檔檢索,作者認為簡單的雙塔模型可能造成文檔表征嚴重的資訊損失,因而利用疊代聚類(Iterative Clustering)的方法将文檔表示為K個向量,即類簇中心點。在建立索引時保留文檔的K個vector,檢索時召回K * N個結果并經過重排序保留N個結果。

可以看出,多樣性(多向量表征)的核心問題在于如何表征擷取K個向量,結合話術推薦的場景,給定一個Context,可能存在多個合适的Response,根據Context不同的複雜程度,可能存在不同數目的Response。我們希望将Context表征為多個向量,理想情況下每個向量表征了一種可能的語義點,但是我們并不希望為每個Context生成固定數量的向量,不同的Context視其難易程度應該對應不同數目的向量。是以,我們針對對話本身的結構特征和輪次資訊,提出了一種簡單的對話特定的多向量生成方法:

如上式,和分别代表SHOP和USER說的一句話,是生成向量的位置。具體來說,我們在USER說完所有連續的話的位置,擷取一個向量(以USER語義為準)。整體的模型架構如下圖6所示,我們稱之為語義發散。

檢索式對話系統在美團客服場景的探索與實踐

圖6 引入對話多樣性的多向量表征模型

具體來說,Context和Response輸入BERT編碼器後,擷取一個Context Vector Set即,以及一個Response Vector即。在離線訓練時,我們采取Scaled Dot Attention的方式來擷取Context最終表征向量,而後與Response Vector計算Score,如下所示:

線上上推理時,對Context Vector Set中的每個Vector進行并行檢索,而後通過重排和聚合擷取最終結果。

4 排序子產品

排序子產品是在上一步召回子產品的基礎上,結合目前的對話上下文對每個召回的答案進行打分排序。在召回階段,為了能夠更高效率的進行檢索,我們通常采用的是雙塔架構模型,這種模型Context與Response資訊互動的程度低,效果相對也較差。而在排序階段,召回的候選集通常已經控制到了幾十條,可以利用互動式架構模型,來更好的學習Context與Response之間的相關性,進而提升話術推薦的準确性。

典型的互動模型如下圖7所示,一般采用BERT作為編碼器,通過将Context與Response進行拼接當做模型輸入,最後模型輸出0-1之間的打分作為排序結果[9]。本場景對應了學術上一個經典任務,即對話回複選擇(Conversational Response Selection),我們後續重點介紹預訓練、負采樣、模組化方式、對比學習、特征融入等方面的工作。

檢索式對話系統在美團客服場景的探索與實踐

圖7 排序子產品中的互動模型

4.1 對話預訓練

目前,預訓練語言模型(如BERT、GPT等)已經廣泛應用于許多NLP任務。衆多文章證明了,哪怕不使用額外的資料,僅在領域相關的資料繼續預訓練(Domain-Adaptive Pretraining)依然可以帶來性能效果的提升,例如Masked Language Model(MLM)、Sentence Order Prediction(SOP)等通用預訓練任務。并且也可以進行任務特定的預訓練(Task-Specific Pretraining),使得預訓練模型提前學習到相關任務的資訊與模式。同時,預訓練任務大都是自監督任務,也可以在多任務學習(Multi-Task Learning)的架構下用作主任務的輔助性任務進行聯合訓練。

針對檢索式對話系統,尤其是對話回複選擇這一任務,可以從下列兩個角度出發設計預訓練任務:

(1)對話層級:模組化不同層級(Token-Level/Sentence-Level/Session-Level)的結構。

  • Token-Level的任務大多是通用NLP任務。最簡單的Language Model(LM)任務,基于上文預測下一個單詞。BERT的Masked Language Model(MLM)任務,根據句子中其餘的詞來預測被Mask的詞。XLNet的Permutation Language Model(PLM )任務,将句子中的Token随機排列後用自回歸的方法訓練預測末尾的Tokens。
  • Sentence-Level的任務衆多,可以有效表征對話中的句間關系,通過特殊設計後也可以模組化對話的一緻性等性質。BERT中的Next Sentence Prediction(NSP)預測句子對是否是同一文檔的上下句關系。Next Sentence Generation(NSG)[10]任務在給定上文時生成對應的回複。Sentence Reordering Task(SRT)将對話中句子打亂順序後預測正确的順序。Incoherence Detection(ID)随機替換對話中的一句話并預測哪句話被替換了。Consistency Discrimination(CD)是面向說話人角色的一緻性判别,模組化目标為來自同一說話人的句對比來自不同說話人的句對相似度分數更高,使模型更多地去捕捉兩個話語之間在主題、說話個性和風格之間的相似性,而不是話語之間地連貫性和語義相關性。在本場景中,我們實驗了NSG任務,希望生成式任務可以對檢索式任務有所增益。
  • Session-Level的任務較少,Next Session Prediction(NSP)[11]預測兩個片段是否是相鄰的兩個輪次,計算對話中兩段Session之間的比對程度,相當于是Next Sentence Prediction的對話改進版。

(2)對話性質:模組化流暢性(Fluency)、一緻性(Coherence)、可讀性(Readability)、多樣性(Diversity)、特異性(Specificity)等性質。

以一緻性和特異性為例,文章[12]借助N元逆文檔頻率(n-NIDF,n-gram Normalized Inverse Document Frequency)為每個正例進行打分,而後通過均方差損失函數(MSE,Mean-Square Error)進行學習模組化。

在本場景中,我們并未使用額外的語料,僅僅在BERT基礎上繼續進行預訓練,主要實驗了MLM、NSG、NSP任務分别模組化Token、Sentence、Session層級的性質,均有一定提升。

4.2 負例采樣

一般來說,在搜尋推薦場景中,正樣本為點選樣本,負樣本為曝光未點選樣本。但是對話的場景有所不同,以商家IM中的話術推薦為例,正樣本的構造并不困難,因為不管線上是否有點選行為,通過對話日志關聯,總是可以擷取到真實的回複。而負樣本卻不能單純地設定為曝光未點選,根據推薦清單的資料來源可以把可能的負樣本劃分為下列三類,如下圖8所示:

檢索式對話系統在美團客服場景的探索與實踐

圖8 話術推薦可采樣負例集合

  1. 曝光清單(View,False or Hard Negatives):曝光未點選,上一版精排模型的排序Top-3結果集合,存在精排模型偏置。
  2. 召回清單(Retrieval,Hard or Common Negatives):召回子產品傳回的樣例集合,線上精排模型的輸入全集,存在召回模型偏置。
  3. 随機話術(Random, Easy Negatives):該商戶過去一個月發送過的句子集合,以及商戶所屬二級類目發送的高頻句子集合。

實驗表明将曝光未點選樣例作為負例的效果極差,推測是因對話多樣性導緻其中包含過多假負例。僅從Retrieval集合采樣與Retrieval + Random聯合采樣的效果相差不大,不過後者更加穩定,對召回集合分布漂移問題具備更強的魯棒性。

4.3 學會排序

針對排序的任務的模組化一般有以下兩種思想:

  1. 二進制絕對論[13]:非黑即白,候選回複要麼是相關的要麼就是不相關的,主要工作在于如何構造難負例。作者使用DialogueGPT類預訓練生成模型來僞造假負例,通過對話流變形(Flow Distortion)和上文擾動(Context Destruction)的方式擷取修改過的對話,輸入到模型生成對應的回複,最後選擇困惑度分數(Perplexity Score)最高的回複以避免假負例問題。常見的模組化方式為Pointwise。
  2. 多元相對論[14]:次序關系,注重回複品質的多樣性,主要工作在于如何構造資料模組化更細粒度的好壞關系。作者使用生成(Generation)或者檢索(Retrieval)的方式來構造所謂的灰階資料(Grayscale),并希望模型學習“Ground Truth Response > Greyscale Response > Random Sampled Response”的漸進關系,最終損失函數同時模組化“Ground Truth > Random”、“Ground Truth > Retrieval > Random”、“Ground Truth >  Generation > Random”三類次序關系。常見的模組化方式為Pairwise。

結合我們目前的場景,這兩類方法的典型對比如下圖9所示,差別在于将召回集合視作難負例還是灰階資料。

檢索式對話系統在美團客服場景的探索與實踐

圖9 排序任務兩種模組化方式(Pointwise vs Pairwise)

上述的基線模型就是Pointwise的模組化方式,針對二進制組學習一個0-1之間的分數,其損失函數為交叉熵函數。而Pairwise模組化方式,則針對三元組進行分類,對具體的打分不關心,隻需要更相關的樣例得分更高即可。一般來說有兩種類型的損失函數,其一是比較著名的RankNet[15]模型,公式如下,記為Logistic形式,其中分别代表兩個Response的得分,當時,;當時,。

其二為合頁損失,記為Hinge形式,其中m為門檻值邊界,表示有錯誤答案排到了正确答案的前面。

實驗結果表明,在Pairwise設定下Logistic形式的損失效果優于Hinge形式,并且GT > Retrieval > Random增強有效。同時,Pointwise和Pairwise模組化方式無絕對的高低上下之分,效果好壞取決于場景和資料特性。事實上線上坐席CHAT場景中Pairwise更好,商家IM場景中Pointwise更好,聯合模組化(Pointwise+Pairwise or Pointwise->Pairwise)效果略有提升。

4.4 對比學習

在分析排序錯誤的過程中,我們發現存在Context或Response少量擾動導緻最終分數變化較大的情形,典型的例子如短Response添加或删除句尾符号導緻預測标簽變化。而對比學習的指導原則是通過自動構造相似執行個體和不相似執行個體學習一個表示模型,使得相似的執行個體在投影空間中比較接近,而不相似的執行個體在投影空間中距離比較遠。是以,為了緩解上述問題,我們希望借助對比學習的思想使得模型的輸出結果更為穩定一緻,具體來說,輸出的向量表示盡可能接近,輸出的機率分布盡可能一緻。

針對向量表示,我們對Context[16]和Response[17]分别進行了資料增強,或者說添加了不改變語義的擾動,希望增強之後樣例與原始樣例在表示空間上盡可能接近,并且遠離對應的負例,如下圖10所示:

檢索式對話系統在美團客服場景的探索與實踐

圖10 對話中的對比學習

具體來說:

(1)Context端資料增強:基本原則是不顯式改變Context的最後一句話,因為最後一句話的語義最為重要。

  • Context為單句,不進行顯式改變,添加Dropout。
  • Context包含商家或使用者連續說話情形,進行Sentence Re-ordering操作(角色資訊很重要,不會調換不同角色說的話的位置)。
  • 其它多輪情形,随機選擇一句,進行Sentence Token Shuffling操作(針對中文,我們利用Jieba分詞後再打亂重組,避免字級别打亂重組噪音過多)。

(2)Response端資料增強:基本原則是盡量不改變語義,不引入過多噪音。

  • 句子長度小于5,随機進行Dropout或者Operate punctuations(添加删減句尾标點符号)操作。
  • 句子長度大于5,随機選擇Random Deletion或Random Swaping,每個位置20%機率進行替換或删除。

此外,關于如何設定對比負例也有兩種方式:

  1. Batch角度:Batch内其它樣本都作為對比負例,目的是優化向量分布,改善Bert産生的向量各向異性和分布不均勻。
  2. Pair角度:僅僅将同Pair内的負例作為對比負例,目的是拉遠正例和負例的向量。

實驗結果表明,Context增強方式下對比負例為Batch次元更好,而Response增強方式下對比負例為Pair次元更好。

除了向量次元之外,針對機率分布,我們采取了R-Drop[18]方法來限制同一資料兩次Dropout下輸出的分數是一緻的。因為我們的輸出結果是二分類機率,是以除了KL散度之外,還可以使用MSE函數計算損失。實驗結果均有一定提升而KL散度效果更好。

4.5 個性化模組化

上文的工作主要都集中在文本語義相關性上,但是沒有考慮不同商戶/坐席等的個性化偏好問題。學術上正常的做法是利用一個說話人模型将每個角色編碼為一個向量,而後将該向量輸入到生成模型中以限制和産生個性化回複[20]。

盡管我們可以效仿該方案為每個商戶學習一個向量以影響精排模型的排序效果,但是,在我們的場景中(以商家IM為例),日活躍商家數為數十萬并且每天都可能有新商戶出現,出于效果和性能的考慮該方案并不合适。

是以,我們采取了一種非常簡單但是極為有效的模組化方案,該方案基于一個明顯的直覺,即在語義相關合理的回複候選集合中商戶/坐席更偏好自己曾經說過的話。具體來說,排序子產品的輸入(候選回複集合)除了文本問答對之外,還存在着衆多的非文本特征,如該候選回複的來源,我們希望通過這些特征的模組化來展現不同次元的個性化。以商家IM話術推薦為例,我們主要考慮三種類型的特征:

  1. 商家個性化特征:對于精排模型輸入集合的樣例,關注答案是否來源于商戶曆史,即商家是否說過這句話。
  2. 商品個性化特征:在咨詢過程中,除了純文字資訊之外,還存在商品、團購等卡片資訊,這類資訊為“多少錢”、“适用人群”等問題提供了限制和限制。
  3. 時間個性化特征:部分問題如“營業時間”、“經營項目”存在時效性和周期性。針對時效性問題,同樣的問題下答案時間越近越好;針對周期性問題,上一周期的同時段的答案最好。

業界通用的特征模組化方式是Wide & Deep模型,我們因為可用特征較少,是以采取了一種簡化的聯合模組化的方式。

具體來說,我們采取了一種簡單的類雙塔的形式來分别模組化文本特征和非文本個性化特征,如下圖11所示:

檢索式對話系統在美團客服場景的探索與實踐

圖11 個性化特征模組化

這是一種無互動的模組化方式,本質上來說最終的打分相當于文本相關性打分加非文本特征打分,并且由于非文本特征的次元都很小(2-5),是以實際上線時可以不改變基線模型結構,僅需要通過非文本特征分數微調即可。實際實驗中,商家個性化特征影響範圍最廣,效果最好;時間個性化特征也有一定效果;商品個性化影響範圍較小,但是在涉及到相關類型資訊時有一定提升。

5 應用實踐

5.1 離線實驗效果

為精準反映模型疊代的離線效果,我們針對召回及精排模型分别構造了一批Benchmark。召回子產品主要考慮Top-6召回結果的BLEU、ROUGE-2名額,結果如下表所示:

檢索式對話系統在美團客服場景的探索與實踐

表1 召回子產品名額

可以看到,基于BM25的短期上文召回效果優于基于長期上文的詞袋向量模型,而BERT考慮了詞的上下文特征,提升巨大;雙塔模型則模組化了對話本身的特征,效果進一步提升。在雙塔模型基礎上,引入難負例會帶來一定提升,而引入對話多樣性表征則帶來明顯提升。

精排模型主要考慮Top-1排序結果的BLEU、ROUGE2、RECALL名額,結果如下表所示:

檢索式對話系統在美團客服場景的探索與實踐

表2 精排模型名額

可以看到,引入Pairwise學習并不能帶來完全的正向收益,對話預訓練則帶來了穩定提升,對比學習增強大大提升了所有名額。非文本特征融入在文本相關性名額上有一定提升,并且顯著提升了排序相關性名額,說明該方法非常有效處理了在語言表達形式類似情況下商家個性化偏好問題。

5.2 商家IM話術推薦

商家IM是商家與使用者在交易流程中的線上即時通訊工具,在擷取所需商品和服務過程中,使用者有主動表述問題咨詢資訊的訴求,并通過IM向商家發起提問。以到綜業務為例,大部分商家由于沒有配備專門客服等原因,回複能力不足,回複欲望較低,效率不足,導緻回複率較低,回複不及時,夜間無回複,容易造成客資流失。針對這一問題,我們建立面向商家的智能助手,商家線上時提供話術推薦輔助人工能力,降低客服輸入成本,提升回複率,最終提升使用者服務體驗,如下圖12所示:

檢索式對話系統在美團客服場景的探索與實踐

圖12 商家IM話術推薦産品示例

5.3 線上坐席CHAT輸入聯想

線上坐席為平台客服,主要解決使用者購買産品或服務後的咨詢問題。在這些場景中,存在着以下問題:聊天過程中經常回複相似甚至相同的話術,需要重複輸入,效率低下;新人坐席由于業務熟悉程度還不夠,對于一些使用者的問題不知道該如何回複。為了緩解這些問題,我們話術推薦及輸入聯想功能來提高對話效率,其中輸入聯想相比話術推薦主要是多了客服已輸入字首的限制,如下圖13所示:

檢索式對話系統在美團客服場景的探索與實踐

圖13 線上坐席CHAT輸入聯想産品示例

5.4 知識庫答案供給

商家IM中,除了商家線上時提供話術推薦輔助人工能力之外,我們也在商家離線時提供智能客服自動回複能力,解決夜間無人值守的問題。其中首要的步驟就是幫助商家建立自定義知識庫,在意圖體系建構完成之後,除了存在預設答案的通用意圖之外,部分特定意圖仍需要商家手動填寫答案。

在此過程中,我們根據意圖中的問法為商家提供了推薦答案,減輕填寫成本,提升填答效率,以提升答案覆寫率,如下圖14所示:

檢索式對話系統在美團客服場景的探索與實踐

圖14 商家知識庫答案供給示例

6 總結與展望

檢索式對話系統是一個複雜的系統,包括離線資料流程、線上召回排序、個性場景政策等多個算法子產品,其整體架構早已成熟,不過針對其中細分子產品的優化仍然是研究和實踐的重點。

  1. 檢索與生成結合:盡管生成式模型不适合作為主要解決方案,但是可以作為召回的補充來源或者是排序的打分器,并且在特定場景可能端到端模型更為适合。
  2. 多模态互動:目前主要的互動模式是基于文本的,未來可以探索在業務場景和模型層面都支援語言、圖檔等的多模态互動。
  3. 全自動托管:目前的模式仍需要人工客服每輪進行協同點選幹預,希望在特定細分場景建立全自動托管對話機器人,解決閑聊、問答、任務等類型問題,完成咨詢流程。

7 作者簡介

8 參考文獻

  • [1] Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
  • [2] Pennington, Jeffrey, Richard Socher, and Christopher D. Manning. "Glove: Global vectors for word representation." Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014.
  • [3] Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).
  • [4] Reimers, Nils, and I. Sentence-BERT Gurevych. "Sentence Embeddings using Siamese BERT-Networks. arXiv 2019." arXiv preprint arXiv:1908.10084 (1908).
  • [5] Liu, Yiding, et al. "Pre-trained language model for web-scale retrieval in baidu search." Proceedings of the 27th ACM SIGKDD Conference on Knowledge Discovery & Data Mining. 2021.
  • [6] Humeau, Samuel, et al. "Poly-encoders: Transformer architectures and pre-training strategies for fast and accurate multi-sentence scoring." arXiv preprint arXiv:1905.01969 (2019).
  • [7] Cen, Yukuo, et al. "Controllable multi-interest framework for recommendation." Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020.
  • [8] Tang, Hongyin, et al. "Improving document representations by generating pseudo query embeddings for dense retrieval." arXiv preprint arXiv:2105.03599 (2021).
  • [9] Whang, Taesun, et al. "An effective domain adaptive post-training method for bert in response selection." arXiv preprint arXiv:1908.04812 (2019).
  • [10] Mehri, Shikib, et al. "Pretraining methods for dialog context representation learning." arXiv preprint arXiv:1906.00414 (2019).
  • [11] Xu, Ruijian, et al. "Learning an effective context-response matching model with self-supervised tasks for retrieval-based dialogues." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 35. No. 16. 2021.
  • [12] Li, Junlong, et al. "Task-specific objectives of pre-trained language models for dialogue adaptation." arXiv preprint arXiv:2009.04984 (2020).
  • [13] Qiu, Yao, et al. "Challenging Instances are Worth Learning: Generating Valuable Negative Samples for Response Selection Training." arXiv preprint arXiv:2109.06538 (2021).
  • [14] Lin, Zibo, et al. "The world is not binary: Learning to rank with grayscale data for dialogue response selection." arXiv preprint arXiv:2004.02421 (2020).
  • [15] Burges, Chris, et al. "Learning to rank using gradient descent." Proceedings of the 22nd international conference on Machine learning. 2005.
  • [16] Zhang, Wentao, Shuang Xu, and Haoran Huang. "Two-Level Supervised Contrastive Learning for Response Selection in Multi-Turn Dialogue." arXiv preprint arXiv:2203.00793 (2022).
  • [17] Li, Yuntao, et al. "Small Changes Make Big Differences: Improving Multi-turn Response Selection in Dialogue Systems via Fine-Grained Contrastive Learning." arXiv preprint arXiv:2111.10154 (2021).
  • [18] Wu, Lijun, et al. "R-drop: Regularized dropout for neural networks." Advances in Neural Information Processing Systems 34 (2021): 10890-10905.
  • [19] Karpukhin, Vladimir, et al. "Dense Passage Retrieval for Open-Domain Question Answering." Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020.
  • [20] Li, Jiwei, et al. "A Persona-Based Neural Conversation Model." Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2016.

繼續閱讀