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

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

01 對話系統分類

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

02 端到端對話生成

1. 對話系統的新機遇

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

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

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

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

3. 對話語料的侷限性

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

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

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

1. 多樣性對話生成

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

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

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

② 相關工作

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

③ 問題

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

④ 解決方案

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

⑤ 模型結構

訓練: 上圖爲訓練階段的模型結構,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這一塊。

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

⑥ 實驗結論

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

⑦ 更多問題需要解決

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

2. 知識對話生成

① 知識引入

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

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

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

② 模型方案

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

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

③ 案例展示

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

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

① 自進化對話系統 ( SEEDS )

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

② 自動化的對話評價體系

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

③ SEEDS效果

這樣的一套評價流程我們又反過來用做reward來優化對話策略的控制,帶來的效果是多輪對話整體體驗顯著提升、邏輯衝突明顯降低。

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

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

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

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

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

③ PLATO模型結構和訓練流程

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

④ PLATO全貌

該圖爲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評估結論

評估方法使用了靜態和動態兩種評估方式。靜態評估指的是把多輪對話的語料從某個位置截斷,然後讓模型來生成一輪迴復,並人工比較生成回覆和原來回復。動態評估則是人或機器跟機器去對話很多輪。每個指標都採用三人盲評,從4個指標去評估,少數服從多數打分。上圖中的靜態結果,PLATO穩步超越其他方法,並且參數量小於其他模型。與百度內部的純檢索技術相比,生成效果也已顯著更高。

⑥ PLATO文章和代碼

⑦ PLATO-2 Case展示

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

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

PLATO-2的數學題能力

04 開放域對話系統的未來

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

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

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

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

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

作者介紹

王凡,百度主任架構師

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

本文來自 DataFunTalk

原文鏈接

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章