天天看點

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

百度 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

47

PLATO-2中文對話效果示範

1. 引言

傳統對話系統需求大量的人工編碼,通常隻能解決領域内的問題。随着深度學習的普及和不斷發展,端到端的開放域對話系統效果也在穩步提升。基于大量語料和超大規模模型的預訓練開放域對話生成技術近些年取得了非常多的進展。如微軟釋出的 DialoGPT,Google 釋出的 Meena,Facebook 釋出的 Blender 等,依托數億到數十億級級别參數的 Transformer 模型,以及數億到數十億的語料訓練模型,模型能模拟人産生和人類非常相近的對話。

對話中存在 “一對多” 問題,也就是同樣的對話語境下,可以有多種不同的回複。這些不同的回複,除了與上下文相關,也和背景知識相關。這些背景知識包括個人屬性(性别年齡,畫像等等)、生活常識、相關知識、價值觀和态度(如認同 / 不認同一個觀念)、對話發生的場景資訊,對話人情緒狀态意圖等等 (圖 1)。然而這些背景知識往往非常難擷取,這就給對話系統訓練帶來非常大的噪音。一般的 Encoder-Decoder 神經網絡不管有多麼複雜,仍然是一個 “一對一” 的函數,如果直接使用,就很容易産生諸如 “哈哈”,“不知道” 之類的安全回複。

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

圖 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)模型(橙色部分)。

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

圖 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)的形式,通過人工來評估效果。中文則采用了人機對話的形式。中英文動态評估中,都是先給定一句起始話題(第一句對話),然後進行多輪互動,最後對這些多輪對話進行評估。

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2
對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

圖 3 PLATO-2 動态評估效果

對話智能新高度:百度釋出超大規模開放域對話生成網絡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,則非常頻繁地轉換話題,并且在每個話題上聊得相對較淺。

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

圖 5 PLATO-2 中文對話示範

對話智能新高度:百度釋出超大規模開放域對話生成網絡PLATO-2

圖 6 PLATO-2 英文對話示範和 Blender 使用相同對話種子對比

4. 總結

PLATO-2 基于全新的隐空間技術和 Transformer 模型,從内容豐富,連貫性上都達到了新的高度。期待 PLATO-2 能為智能對話開辟全新的領域。此外, PLATO-2 的英文模型和代碼即将陸續在 Github 開放,而中文模型也有望于不久的将來,開放接口提供相關服務。對智能對話感興趣的小夥伴一定不能錯過。本文為機器之心釋出,轉載請聯系本公衆号獲得授權。

繼續閱讀