Categories
程式開發

開放域對話系統:現狀和未來


導讀: 本次分享的主題為開放域對話系統:現狀和未來。 將系統地介紹開放域對話系統最前沿的技術,包括知識對話生成、基於強化學習的可控對話、大規模預訓練對話模型等等,以及展開對開放域對話系統未來發展的討論。

01 對話系統分類

開放域對話系統:現狀和未來 1

對話系統大致可分為兩大類,一類為任務型對話系統,主要為了完成某個領域的某項特定任務,比如百度的UNIT、客服系統等都屬於任務型對話系統,一般採取傳統的模塊化的技術方案;第二類是閒聊系統,一般無目的、無領域約束。 隨著技術的發展,開放域對話系統也被提出了越來越高的要求,即能夠在開放域內進行有意義的對話,而不是完全的閒聊。 而不管是開放域的對話,還是任務型對話,通過端到端的模型建模已經越來越成為主流方案。

02 端到端對話生成

1. 對話系統的新機遇

開放域對話系統:現狀和未來 2

端到端的對話生成一般會有編碼器和解碼器,編碼器輸入上文信息,解碼器會解碼出回复( Response ),訓練數據可以是人類對話語料,通過通過最小化預測的結果在真實標籤上的似然( Minimize Negative Log Likelihood ) 來進行訓練。

2. 端到端對話生成的挑戰

開放域對話系統:現狀和未來 3

在目前的端到端對話模型中,經常出現很多badcase:包括出現上下文邏輯衝突;背景有關的一些信息,比如年齡其實不可控;安全回复居多,對話過程顯得很無聊。

開放域對話系統:現狀和未來 4

模型訓練時用到的訓練數據都是人類的對話語料,往往充斥著已知和未知的背景信息,使得對話成為一個”一對多”的問題,比如圖中問年齡和聊天氣,回答包括不同的人針對同樣的問題產生的不同的回复。 但是神經網絡無論多複雜,它始終是一個一一映射的函數。 最大似然只能學到所有語料的共通點,所有背景,獨特語境都可能被模型認為是噪音,這樣會讓模型去學習那些最簡單出現頻率高的句子,比如”是的”之類的回复,我們稱之為安全回复。

3. 對話語料的局限性

開放域對話系統:現狀和未來 5

我們看到的對話語料只是冰山的一角,實際上對話語料中潛藏著很多個人屬性、生活常識、知識背景、價值觀/態度、對話場景、情緒裝填、意圖等信息,這些潛藏的信息沒有出現在語料,建模它們是十分困難的。

03 百度NLP:做有知識、可控的對話生成方案

接下來會圍繞多樣性對話生成、知識對話生成、自動化評價和對話流控制、大規模和超大規模隱空間對話生成模型4個模塊展開。

1. 多樣性對話生成

① 多映射機制的端到端生成模型

開放域對話系統:現狀和未來 6

剛才提到了一對多的問題。 那我們如何利用神經網絡來擬合可能來自於不同背景的語料,而且能夠把這些信息都捕捉下來? 直接端到端的建模肯定是有問題的,因為我們剛才說了神經網絡是一對一的映射。

開放域對話系統:現狀和未來 7

所以我們設想一種方案是每一句回复可能來自於一個獨特的映射機制( Mapping mechanism ),這裡用M1個到M4表示。 如果給定某種映射機制,就可確定最終的回复,消除了回復過程中的不確定性。

② 相關工作

開放域對話系統:現狀和未來 8

這樣的類似工作也有很多,不過都存在一些弊端。 比如CVAE用了連續的高斯空間,對於對話多樣性捕捉能力非常差;而MHAM和MARM沒有對先驗和後驗的分佈差異進行有效的建模。

③ 問題

開放域對話系統:現狀和未來 9

那什麼是先驗和後驗的分佈差異呢? 例如,一句上文可能對應4種不同的回复,假設回复都是合理的。 在推斷時,我們有5%的概率選擇第一個,5%的概率選擇第二個,5%的概率選擇第三個,30%的概率選擇第四個,按照概率採樣,採到任何一個都是合理的。 但是當我們訓練時,比如這裡,我們拿到的是M2的映射產生的回复,這時訓練必須精確的選M2,在推斷和訓練時對映射機制的選擇是存在差異的,這會導致優化的過程亂掉。

④ 解決方案

開放域對話系統:現狀和未來 10

我們的創新點有兩個,一是用了離散的映射機制,二是分離了先驗和後驗的推斷。

⑤ 模型結構

開放域對話系統:現狀和未來 11

訓練: 上圖為訓練階段的模型結構,Post為對話的上文,Response為最終的回复,我們把Post和Response分別編碼為兩個向量x和y。 我們在中間加了一層多映射機制,就是圖中的Map-1到Map-K。 這K個映射機制有不同的參數,我們通過Gumbel-Softmax來選擇映射機制M。 這個採樣過程我們使用了Response,我們稱為後驗選擇。 然後我們把選擇的mapping mechism用來生成我們的回复。 在訓練過程中,我們除了用NLLLoss ( negative log likelihood loss ) 外,還用了一個matching loss,這個loss的目標是為了輔助整個後驗選擇網絡的訓練,特別是Response encoder這一塊。

開放域對話系統:現狀和未來 12

預測: 在推斷時模型結構有部分差異,因為在推斷時是沒有Response的,這時我們就任意選擇一個Map來生成回复。

⑥ 實驗結論

開放域對話系統:現狀和未來 13

開放域對話系統:現狀和未來 14

如果我們對中間的產生的隱狀態mķ進行可視化會發現其實不同Map會有區分非常明顯。 每一個Map都有自己獨特的功能,學到了語義空間上的多樣性。

⑦ 更多問題需要解決

開放域對話系統:現狀和未來 15

上述模型雖然解決了一部分多樣性問題,但還是存在上下文重複,邏輯衝突不一致的問題。

2. 知識對話生成

① 知識引入

開放域對話系統:現狀和未來 16

通過知識引入有助於對話”去模糊”、“可控制”。

開放域對話系統:現狀和未來 17

在基於知識的對話系統中,假設我們有一個Knowledge Base,裡面有很多條知識,但是我們只會選擇其中的部分知識來用,所以常規做法是引入attention來進行知識的選擇。

開放域對話系統:現狀和未來 18

但是這類方法存在一些問題,如圖所示,給了3個知識K1個,K2和K3。 針對機器人的問題進行回复時,我們發現K1個和K3是相關的,K2是不相關的,因此,選擇K1個和K3都是沒有問題的。 但是如果針對當前這條特定的回复可以看到它明確地只用了K3這條知識。 所以這裡再一次的,inference和training存在一個gap,而之前的工作是沒有考慮這個差異的。

② 模型方案

開放域對話系統:現狀和未來 19

訓練: 為了解決這個問題,這是我們的模型方案。 輸入對話上文X和回复Y分別被編碼為x和y,Knowledge也編碼成對應的表示( k1個 ,…,kñ )。 灰色和黃色都是對知識的選擇權重,也就是attention,灰色框叫做Prior Selection,它只基於輸入的x來做選擇。 橙色框的叫Posterior Selection,它同時基於回復和上文做選擇。 我們引入了幾個loss,除了NLLloss之外,我們還引入了KLDivloss,是因為我們想把Prior Selection和Posterior Selection之間的距離拉近,除此之外,我們還引入了一個BOWLoss,這是為了加速整個模型的收斂。

開放域對話系統:現狀和未來 20

預測: 在推導過程就沒有回复的輸入和Posterior選擇了,這時僅基於Prior選擇權重進行採樣。

③ 案例展示

開放域對話系統:現狀和未來 21

改進之後模型效果更好,句子也更加通暢。

3. 自動化評價和對話流控制

① 自進化對話系統( SEEDS )

開放域對話系統:現狀和未來 22

前面都是監督學習範疇,但監督學習只能考慮當前一輪的回复,所以當不同Agent在進行交流時我們會發現很多問題,這些問題的原因是因為在數據中沒有見過這些信息。 因此,我們能否考慮利用長遠的反饋信息來提升對話的控制? 我們基於剛剛講到的多樣化生成理論,它包含兩部分。 一部分是Diversified Generation,它是根據特定知識或隱空間生成回复的過程;另一部分是Dialogue “Controller”,也就是怎麼去選擇知識或者隱空間而不是僅僅依賴於Prior? 在這個工作裡,我們通過強化學習來提升選擇知識或者隱變量的能力。 但是,一個比較難的問題是Rewards是從哪來?

② 自動化的對話評價體系

開放域對話系統:現狀和未來 23

上面這個問題,可以歸結為:如何對一段對話進行自動化評估? 我們從連貫性、信息量、邏輯等角度用一系列模型去評價這些對話,我們為此建立了一系列模型。 這些模型是根據dialog和無監督語料訓練出來的,從圖中的表格可看出,模型的指標即表​​裡的Compound Reward高於之前一些自動化的指標。

③ SEEDS效果

開放域對話系統:現狀和未來 24

这样的一套评价流程我们又反过来用做reward来优化对话策略的控制,带来的效果是多轮对话整体体验显著提升、逻辑冲突明显降低。

4. 大規模和超大規模隱空間對話生成模型

① 自然語言處理模型的近期趨勢

開放域對話系統:現狀和未來 25

近些年來我們看到NLP出現了一種趨勢,像BERT這類的預訓練模型參數不斷的增大,但這不是單純炫耀算力的過程,參數增大給理解和生成帶來了明顯的效果,尤其為生成類任務帶來了質變。

② 使用隱空間的對話模型PLATO

開放域對話系統:現狀和未來 26

我們去年底發布的隱空間PLATO,該模型的特點是基於前面提到的隱空間的機制,來使得Transformer模型生成的對話豐富度要更豐富。

③ PLATO模型結構和訓練流程

開放域對話系統:現狀和未來 27

它是怎麼實現的? PLATO模型總共由三個模塊組成,Generation ( 利用隱變量控制生成)、Recognition ( 隱變量識別) 和Prior ( 隱變量推導)。 而我們6月份提出的PLATO2的一個相對PLATO的改進則是沒有使用Prior模塊,因為實驗發現用一個Retrieval模塊來代替Prior模塊效果會更好。 PLATO2有兩個訓練階段:一個叫Coarse-Grained Generation,即先訓練一個基礎版網絡,沒有用隱變量。 之後基於這個網絡我們再進一步訓練,叫做Fine-Grained Generation,引入隱變量等信息。 訓練時用到了三個Loss,前面講過,此處不再贅述。

④ PLATO全貌

開放域對話系統:現狀和未來 28

該圖為PLATO模型全貌,我們發布了兩個版本,分別為3億參數24層的模型和16億參數32層的模型。 語料用的是深度清洗後的中文語料12億,英文語料7億,token數據基本在千億級。 網絡整體骨架參考了GPT-2並行了改進優化,使用了Pre-normalizaion, Context用了雙向attention,Response用了單向attention,既不同於GPT-2的純單向,也不同於Alexa 的encoder- decoder結構,更像UniLM結構,藍色是Generation,橙色是Evaluation。

⑤ PLATO評估結論

開放域對話系統:現狀和未來 29

评估方法使用了静态和动态两种评估方式。静态评估指的是把多轮对话的语料从某个位置截断,然后让模型来生成一轮回复,并人工比较生成回复和原来回复。动态评估则是人或机器跟机器去对话很多轮。每个指标都采用三人盲评,从4个指标去评估,少数服从多数打分。上图中的静态结果,PLATO稳步超越其他方法,并且参数量小于其他模型。与百度内部的纯检索技术相比,生成效果也已显著更高。

⑥ PLATO文章和代碼

開放域對話系統:現狀和未來 30

⑦ PLATO-2 Case展示

開放域對話系統:現狀和未來 31

PLATO-2有非常好的常識理解和話題引導能力

開放域對話系統:現狀和未來 32

PLATO-2的古詩歌詞能力,在沒有乾預的前提下

開放域對話系統:現狀和未來 33

PLATO-2的數學題能力

04 開放域對話系統的未來

開放域對話系統:現狀和未來 34

我們說,儘管近期對話生成取得了非常多進展,但對話系統通過圖靈測試還為時尚早,這裡指的圖靈測試,不是機器對話然後人去判斷是否是專家還是機器產出的對話,而是專家直接去有目的地對話機器然後挑毛病。 所有的系統目前還經不起這樣的測試。

這裡我想說的一個觀點,當我們談論對話,我們可能在談論AGI,正因為對話底下潛藏的各種背景知識,信息和邏輯,仍然遠超目前所有模型的能力。

我認為,未來解決對話問題的要素可以從以下方面入手:

  • 語料& 知識, 這是訓練任何模型的基礎
  • 記憶& Few-shot Learning, 人類是能夠在對話中不斷學習的,一個好的對話系統需要具有這種能力
  • 虛擬環境& Self-Play, 當前很多語料不能提供足夠背景知識的前提下,虛擬環境能很好地提供這一點

今天的分享就到這裡,謝謝大家。

作者介紹

王凡,百度主任架構師

王凡,2012年加入百度,現任百度自然語言處理部主任架構師,負責在線學習、前瞻對話等技術方向工作,將強化學習技術廣泛落地到百度搜索、信息流、地圖等核心業務。 帶隊兩次獲得NuerIPS強化學習賽事國際冠軍,在ACL、IJCAI、KDD等國際會議發表多篇論文。 曾獲百度最高獎,百度驕傲最佳個人。

本文來自DataFunTalk

原文鏈接

開放域對話系統:現狀和未來