【NLP】一文速览 | 对话生成预训练模型
作者?|?惠惠惠惠惠惠然?
整理?|?NewBeeNLP
大規模預訓練言模型在生成式對話領域近年來有非常多的工作,如百度PLATO系列(PLATO[1]/PLATO-2[2]/PLATO-XL[3]),微軟DialoGPT[4],谷歌Meena[5],FaceBook Blender[6]等等,得益于大規模參數和精細的模型設計,這些對話生成預訓練模型(Dialogue PTMs, 本文以下簡稱D-PTMS)在開放域對話獲得了非常好的表現。
區別于傳統的生成式PTM例如GPT和BART,D-PTMs更針對于對話場景。明顯的區別就是在于GPT等模型的訓練數據來自于百科、新聞、小說,而D-PTMs使用的是對話數據進行訓練。這篇文章主要針對這些經典模型梳理對話生成預訓練模型的設計方法和基本概念。
一、對話生成預訓練模型的結構設計
目前的對話生成PTM的結構大體分為三種:
基于Transformer-encoder-decoder 的結構 「Transformer-ED」 例如Google Meena以及FaceBook Blender;
Transformer的Decoder結構 「Transformer-Dec」 比如微軟DialoGPT,清華智源CDial-GPT[7];
Transformer-Encoder基礎上改進的UniLM-based結構,代表性的是Baidu的PLATO系列,其論文中被稱為 「Unified-transformer」。
1.1 Transformer-ED
經典的Transformer結構將Encoder和Decoder進行獨立,預訓練時encoder將對話歷史進行編碼,然后將編碼后的結果傳給decoder以生成回復。需要注意的是encoder部分的mask是雙向語言模型建模,decoder部分是單向語言模型建模。
這樣的結構設計主要會帶來兩種問題,首先,解碼器堆疊在編碼器輸出上。使得微調過程在更新編碼器參數時效率較低;其次有部分工作UNILMv2[8]指出在Transformer-ED架構中的顯式編碼器可能是冗余的,編碼步驟可以直接合并到解碼器中,從而允許更直接地更新參數。
1.2 Transformer-Dec
以Transformer-Dec為基本結構的模型具有代表性的是GPT系列模型,以其為結構的D-PTMs使用同樣的結構,將對話歷史使用單向語言模型進行編碼,然后預測回答。由于GPT作為生成模型的效果非常好,以這樣的思路將該結構應用在對話數據上是很直觀的想法。
但由于單向語言模型的設計導致編碼過程中對context的編碼也是單向的,而在NLU過程中,雙向語言模型一般效果更好。所以后來就產生了以PLATO為代表,集NLU和NLG為一體的unified-transformer結構。
1.3 Unified-transformer
Unified-transformer的結構靈感來自UniLM[9],一種統一NLU和NLG兩個任務的模型:用雙向語言模型編碼context,單向語言模型編碼target。這種掩碼方式就可以解決Transformer-Dec結構的模型在理解對話context時不能使用雙向語言模型的問題。按照不同的預訓練任務,該結構的模型又可以分為上圖Transformer-MLM和Transformer-AR兩種類別。
1.4 不同結構的模型對比
有工作Open-Domain Dialogue Generation Based on Pre-trained Language Models[10]將以上四種結構的模型在相同的數據集上進行實驗,論文中將以上的四種模型按順序稱為Trans-ED, Trans-Dec, Trans-MLM, Trans-AR。
實驗中主要使用三種數據集:Twitter[11], Ubuntu[12], Reddit[13] 為了評估模型在不同大小數據集上的實驗效果,作者比較了用全部數據集訓練和使用100k數據集訓練的不同效果。并且使用自動評估和人工評估兩種方法評估。
表格中上方數據為全部數據的訓練結果,下方數據是100k數據的訓練結果
自動評測標準下,大數據集下Trans-AR和Trans-Dec的最終結果較好,而小數據集下Trans-AR的實驗效果一般。作者分析可能是Trans-AR使用了BERT這樣的MLM-PTM初始化導致的pretrain-finetune不一致所以產生效果下降。
人工標準下,Trans-Dec和Trans-AR有時會重復產生輸入的句子,而Trans-MLM不會。此外Trans-Dec的生成結果更具有多樣性,作者認為可能是source端的單向attention不會從雙向對模型進行約束。
而無論在人工和自動的評測結果下,Trans-ED的結果都不理想。
二、decode 方法的選擇
decode方法大致分為Search和Sampling的兩大類
2.1 Greedy-Search
每一步選擇預測得分最高的token,這種方法明顯的問題是模型會因為當前步較低的得分而忽略掉后面高分的選擇。比如說路徑"The dog has",這條路徑會因為"dog"0.4的分數而忽略掉"has"0.9的分數 這樣的局部最優算法容易生成通用無意義的答案,以及前后重復的結果。
2.2 Beam-Search
beam search的核心思想是在每一步深度擴展的時候,通過設置beam size剪掉一些質量比較差的節點,保留一些質量比較高的節點。比如說下圖中設置beam size=2,這時在第一步推理時保留"dog"和"nice"兩個分數較高的選擇。在第二步推理時,這種搜索方式就會找到比greedy search的結果"The nice woman "分數0.4更高的"The dog has"0.9。雖然beam search通常可以找到比greedy search分數更高的sequence,但仍有可能存在潛在方案被丟棄的問題。
2.3 Top-k Sampling
從概率值前top-k中進行隨機采樣。GPT-2就是采用這樣的decode方式,這種方法的生成結果多樣性較好,隨機性較強,生成的結果大多通順。但也容易存在采樣到低概率單詞的情況,可能導致生成質量不佳。
2.4 Top-p Sampling
設置一定的概率閾值,選擇概率大于該閾值的結果作為候選,在其中進行隨機采樣。整體來說top-p的采樣方式比top-k不容易采取到低概率的token,所以生成的結果會更加通順。
在選用search或sampling方法decode得到了一系列可能的回復之后,一般還會再加入回復選擇策略,例如RCE Rank以及MMI Rank。
「RCE Rank」
訓練context與response相關性判斷模型,根據相關性得分來對候選response進行選擇排序,防止隨機采樣引入的不合理answer.
「MMI Rank (maximum mutual information rank)」
MMI Rank最早在微軟的DialoGPT中被使用,它是一個基于GPT2的生成模型:采用預訓練的backward模型(context 和response逆序拼貼)來預測給定response的context。計算Dialogue Model生成的所有候選response相對于context的loss,選擇loss最小的作為最終的結果。DialoGPT的作者認為,最大化反饋模型概率懲罰了那些"溫和"的回復,這是由于頻繁的和重復的回復可以與許多可能context關聯,因此得到的概率都比較低。
三、評估標準
D-PTMs的評估標準有自動評估指標和人工評估兩個大類。其中自動評估指標可作為模型快速迭代參考,不需要人工參與,但自動指標與真實效果存在一定的gap。人工指標主觀性較強,且需要人工團隊。
3.1 自動評估指標
「評估word-overlap的指標」:
衡量word-overlap實際上是機器翻譯任務中的常用指標,核心思想是比較候選譯文和參考譯文里的 n-gram 的重合程度,重合程度越高就認為譯文質量越高。常用的指標如BLEU-ngram,以及基于它的系列改進ROUGE、NIST、METEOR
「評估文本生成多樣性的指標」
常用指標是Distinct-ngram,?
Count(unique ngram)表示回復中不重復的ngram數量,Count(word)表示回復中ngram詞語的總數量。值越大表示生成的多樣性越高。
「基于語言模型的評估」
例如perplexity,perplexity是語言模型中的指標,用于評價語言模型的好壞,即估算一句話出現的概率,看一句話是否通順。google Meena的論文中表示ppl分數與其構建的人工評估體系得分SSA有明顯的負相關,與人工評估的gap比較小。
3.2 人工評估指標
目前幾家公司都為自己的對話生成預訓練模型設計了人工評估的體系。
「Google Meena - SSA」
Sensibleness:回復合理,復符合邏輯,保持一致性;
Specficity:回復內容具體,不能是萬能答復;
Average:兩者平均;
「ACUTE(Facebook Blender)」
ACUTE-Eval:兩個chatbot同時與同一個人聊,判斷哪個聊得更好;
Self-Chat ACUTE-Eval:兩個chatbot自己與自己聊,人工判斷哪個聊得更好;
「Chinese evaluation(Baidu Plato)」
Coherence:回復內容的上下文相關性;
Informativeness:回復內容是否包含信息量;
Engagingness:回復內容的新穎性;
Humanness:回復內容是否人性化,跟人類回復的相似性;
「DialoGPT(Microsoft)」
relevance: 回復內容的上下文相關性;
informativeness: 回復內容是否包含信息量;
human-likeness: 回復內容是否人性化,跟人類回復的相似性;
四、數據集
4.1 預訓練數據集
為了減少通用預訓練模型與對話場景下的預訓練模型的偏差,首先會在如下的大型數據集上進行繼續訓練。(DialoGPT和Meena的實驗表示在預訓練模型上繼續訓練比從頭開始訓練的要效果更好)。這樣大規模的對話數據并不好獲得,所以一般是從Reddit,Weibo這樣的論壇數據的帖子評論等去解析獲得“樹狀”的對話數據。且由于這樣的論壇數據噪聲很大,在使用前需要設計一些過濾條件進行清洗。
「EN」
Reddit comments - DialoGPT, PLATO,Blender
Social Media Conversation - Meena
Twitter - PLATO
「ZH」
Chinese Social Media -PLATO
WDC-Dialogue dataset - EVA[14]
LCCC conversations - CDial-GPT
4.2 個性化對話生成數據集
預訓練數據量雖然很大,但是不是直接的雙向對話數據,是一種群體討論(group discussion),雖然包含很多有用的內容,但是即使在過濾之后,仍然有很多噪音. 相比一下,更小,更干凈,更集中的任務可以提高具體的能力。
「ConAI2」 dataset 個性化和與吸引能力 - Blender
14K對話,基于PersonaChat,模擬場景初次見面了解對方性格。
「Empathetic Dialogues」 同理心 - Blender
150K對話,一個說話人在說自己的情況,另一個人適時表達同情
「Wizard of Wikipedia」 知識 - Blender
250 主題下的194k對話,深度談論某一個主題并給出專業化的回復。
「Blended Skill Talk」 技能混合 - Blender
將以上三個模型產生的回復做出選擇,選出最合適的一個
「Daily Dialog」 - PLATO
從英文學習者的對話網站上進行爬取,并標注了情感和意圖
「DSTC7-AVSD」 - PLATO、DialoGPT
端到端對話建模任務,其中的目標是通過注入基于外部知識的信息來產生獲得比閑聊更好的對話回復。
「Persona-Chat」 - PLATO
提供了手動注釋的對話,也提供了相應的人物角色配置(背景知識),其中兩個參與者自然地聊天,并試圖了解對方。
以上是我在初步了解對話生成預訓練模型時的知識梳理。歡迎交流!如有問題敬請斧正!
本文參考資料
[1]
PLATO: https://aclanthology.org/2020.acl-main.9/
[2]PLATO-2: https://arxiv.org/abs/2006.16779
[3]PLATO-XL: https://arxiv.org/pdf/2109.09519.pdf
[4]DialoGPT: https://arxiv.org/pdf/1911.00536.pdf
[5]Meena: https://arxiv.org/pdf/2001.09977.pdf
[6]FaceBook Blender: https://arxiv.org/pdf/2004.13637.pdf
[7]CDial-GPT: https://arxiv.org/pdf/2008.03946.pdf
[8]UNILMv2: http://proceedings.mlr.press/v119/bao20a/bao20a.pdf
[9]UniLM: https://arxiv.org/pdf/1905.03197.pdf
[10]Open-Domain Dialogue Generation Based on Pre-trained Language Models: https://arxiv.org/pdf/2010.12780.pdf
[11]Twitter: https://github.com/Marsan-Ma-zz/chat
[12]Ubuntu: https://github.com/rkadlec/ubuntu-ranking-dataset
[13]Reddit: https://github.com/nouhadziri/THRED
[14]EVA: https://arxiv.org/pdf/2108.01547.pdf
-?END?-
本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【NLP】一文速览 | 对话生成预训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现多个下拉框同一批option,选中其
- 下一篇: tomcat 配置https安全认证协议