機器之心發布
機器之心編輯部
近日,百度發布對話生成網絡 PLATO-2,宣布在開放域對話生成模型上迎來重要進展。PLATO-2 承襲 PLATO 隱變量進行回復多樣化生成特性,模型參數高達 16 億,涵蓋中英文版本,可就開放域話題深度暢聊。實驗結果顯示,PLATO-2 中英文對話效果已超越谷歌 Meena、微軟小冰和 Facebook Blender 等先進模型。
百度 NLP 於去年 10 月預公布了通用領域的對話生成預訓練模型 PLATO,近期在 ACL 2020 上展示。最近,百度又新發布了超大規模模型 PLATO-2。PLATO-2 承襲了 PLATO 隱變量進行回復多樣化生成的特性,模型參數規模上升到了 16 億。PLATO-2 包括中英文版本,能夠就開放域話題進行流暢深入的聊天。據公開數據,其效果超越了 Google 於今年 2 月份發布的 Meena (26 億參數)和 Facebook AI Research 於今年 4 月份發布的 Blender (27 億,最高 94 億參數)的效果。在中文上更是達到了全新高度。
論文名稱 PLATO-2:Towards Building an Open-Domain Chatbot via Curriculum Learning
論文地址:https://arxiv.org/abs/2006.16779
GitHub地址:https://github.com/PaddlePaddle/Knover
1. 引言
傳統對話系統需求大量的人工編碼,通常只能解決領域內的問題。隨著深度學習的普及和不斷發展,端到端的開放域對話系統效果也在穩步提升。基於大量語料和超大規模模型的預訓練開放域對話生成技術近些年取得了非常多的進展。如微軟發布的 DialoGPT,Google 發布的 Meena,Facebook 發布的 Blender 等,依託數億到數十億級級別參數的 Transformer 模型,以及數億到數十億的語料訓練模型,模型能模擬人產生和人類非常相近的對話。
對話中存在 「一對多」 問題,也就是同樣的對話語境下,可以有多種不同的回覆。這些不同的回覆,除了與上下文相關,也和背景知識相關。這些背景知識包括個人屬性(性別年齡,畫像等等)、生活常識、相關知識、價值觀和態度(如認同 / 不認同一個觀念)、對話發生的場景信息,對話人情緒狀態意圖等等 (圖 1)。然而這些背景知識往往非常難獲取,這就給對話系統訓練帶來非常大的噪音。一般的 Encoder-Decoder 神經網絡不管有多麼複雜,仍然是一個 「一對一」 的函數,如果直接使用,就很容易產生諸如 「哈哈」,「不知道」 之類的安全回復。
圖 1 對話系統難點:對話語料下面的豐富隱藏信息
在百度去年發布的 PLATO 模型,和微軟近期發布的 OPTIMUS 模型中,都提到了利用隱變量(Latent Space)來建模這種不可見的多樣性的方法。而百度 PLATO 模型更是獨特採用了離散隱變量的方式來建模,且採用了多樣化生成 + 合適度判斷的方式,其中合適度判斷用於回復篩選(Response Selection)。PLATO 在 Persona-Chat, Daily Dialogue 和 DSTC7-AVSD 三個不同類型的公開數據集上獲得了 SOTA 的效果。
2. PLATO-2 介紹
這次公布的 PLATO-2, 是在 PLATO 工作基礎上的進一步擴展。PLATO 使用了 12 層 Transformer 作為基礎,參數為 1.1 億。PLATO-2 通過擴展網絡,增加訓練數據集,將網絡擴展到 16 億參數。考慮到精細化的引入隱變量的網絡訓練,計算消耗很大,PLATO-2 採取了課程學習的方法,逐步優化參數,加快訓練效率。
2.1 PLATO-2 模型結構
和 DialoGPT 單向網絡,以及 Meena 和 Blender 使用的 Encoder-Decoder 結構不同,PLATO-2 使用了 Unified Network 結構,針對上文部分使用雙向 Attention,回復部分使用單向 Attention,兩者共享網絡參數,只是 Attention Mask 進行了靈活設計。這種設定經過各項任務的反覆驗證,發現在同等規模參數量的情況下具有最佳的性價比。同時,PLATO-2 採用了 GPT-2 的前置正則化層的方式,以更好適應大規模訓練的需求。
此外,PLATO-2 承襲了 PLATO 結構, 包括三個邏輯模塊,Generation、Recognition 和 Response Selection,如圖 2 右邊所示。其中 Recognition 網絡用於在訓練過程中識別隱變量, Generation 則能夠根據不同隱變量來生成回復(藍色部分)。Response Selection 承擔從不同隱變量生成的回覆中,選擇合適度最好的回覆,因此也可以認為是一種評估(Evaluation)模型(橙色部分)。
圖 2 PLATO-2 模型結構簡圖
2.2 PLATO-2 訓練方法
PLATO-2 採用了課程學習方法。因為帶隱變量的模型需要同時訓練三個不同模塊,其訓練成本很大,因此,第一步,PLATO-2 先訓練了不含隱變量的模型。該模型進行的是簡化的 「一對一」 建模,容易生成安全回復。第二步,在前一步模型基礎上,添加上隱變量,然後同時訓練 Generation + Recognition 和 Response Selection 兩個不同模型。其中,Response Selection 模型在合適度預測的基礎上,還添加了 Masked Language Model 作為輔助任務,以強化模型對語義的理解。
3. PLATO-2 效果
PLATO-2 包含中英文兩部分模型。其中,中文模型在 12 億中文開放域多輪對話數據集上進行訓練,而英文模型則在 7 億英文開放域多輪數據集上訓練。PLATO-2 訓練耗費了 64 張英偉達 V100 卡共 3 周的時間,依託了百度飛槳強大並行能力,包括 Fleet 並行庫和 Recompute 等擴展顯存的方式。單個 Batch 包含 52 萬 Token,訓練過程中約進行了 30 萬次梯度回傳。
為了全面對比 PLATO-2 和其他基線的效果,PLATO-2 的論文進行了靜態和動態評估。其中,靜態評估是利用現有對話上文,要求模型預測一句下文,人工評估對話的合適度。而動態評估中,由於中文的對比模型沒有開放 API 接口,中英文採用了不同的評估數據收集方式。英文動態評估採用了兩個模型進行相互對話(Self-Chat)的形式,通過人工來評估效果。中文則採用了人機對話的形式。中英文動態評估中,都是先給定一句起始話題(第一句對話),然後進行多輪交互,最後對這些多輪對話進行評估。
圖 3 PLATO-2 動態評估效果
圖 4 PLATO-2 靜態評估效果
從結果上看,PLATO-2 在動態(圖 3)或者靜態(圖 4)評估中,均明顯超越了 DialoGPT、Meena 和 Blender,在中文上和微軟小冰拉開了極大的差距。這意味著,PLATO-2 的對話智能達到了全新的領域。
此外,文章也放出了 PLATO-2 一些中文(圖 5)和英文(圖 6)對話的演示。從對話效果上看,PLATO-2 和之前的模型,包括 Meena 和 Blender 有非常明顯的區別。一方面 PLATO-2 在對話內容豐富度上提升明顯,另一方面,PLATO-2 能夠就一個話題深入聊天並擴展到相關話題。而之前的最佳模型 Blender,則非常頻繁地轉換話題,並且在每個話題上聊得相對較淺。
圖 5 PLATO-2 中文對話演示
圖 6 PLATO-2 英文對話演示和 Blender 使用相同對話種子對比
4. 總結
PLATO-2 基於全新的隱空間技術和 Transformer 模型,從內容豐富,連貫性上都達到了新的高度。期待 PLATO-2 能為智能對話開闢全新的領域。此外, PLATO-2 的英文模型和代碼即將陸續在 Github 開放,而中文模型也有望於不久的將來,開放接口提供相關服務。對智能對話感興趣的小夥伴一定不能錯過。