📓
Study
  • README
  • Application
    • Contest
      • 竞赛trick
  • Basic Know
    • 半监督学习
    • 贝叶斯
      • 朴素贝叶斯分类器
    • 对抗训练
    • 概率图模型
      • CRF
      • HMM
      • 概率图模型
    • 关联分析
    • 归纳偏置
      • [什么是 Inductive bias(归纳偏置)?](BasicKnow/归纳偏置/什么是 Inductive bias(归纳偏置)?.md)
    • 聚类
    • 决策树
    • 绿色深度学习
    • 树模型&集成学习
      • 提升树
      • Ada Boost
      • [集成学习]
    • 特征工程
      • 数据分桶
      • 特征工程概述
      • 特征选择
      • LDA
      • PCA
    • 线性模型
      • 感知机
      • 最大熵模型
      • SVM
        • SVM支持向量机
      • 逻辑回归
      • 线性回归
    • 优化算法
      • 拉格朗日对偶性
      • 牛顿法
        • 牛顿法&拟牛顿法
      • 梯度下降法
        • 梯度下降算法
      • 优化算法
    • 预处理
      • [1-1]正则表达式
      • [1-2]文本预处理
      • [1-3]词性
      • [1-4]语法分析
      • [1-6]文本分类
      • [1-7]网络爬取
      • 【备用】正则表达式
      • 7.re模块
      • 词典匹配
      • 分词
      • 子表达式
      • Todo
    • 主题模型
      • LDA
    • Deep Learning
      • 反向传播
      • 梯度消失&梯度爆炸
      • Batch Size
      • 1.DLbasis
      • 小概念
      • MLstrategy
      • CNN
      • RNN及其应用
      • 关于深度学习实践
      • 神经网络概述
      • Batch Normalization
      • Program CNN
      • Program D Lbasis
      • Program DN Nimprove
      • Program Neural Style Transfer
      • Summer DL
    • EM算法
    • GAN
      • Gans In Action Master
    • GNN
      • 搜广推之GNN
      • Representation Learning
        • Anomalydetection
        • Conclusion
        • Others
        • Papernotes
        • Recommadation
    • k近邻法
      • K近邻
    • Language Model
      • 语言模型解码采样策略
      • [1-1][语言模型]从N-gram模型讲起
      • [1-2][语言模型]NNLM(神经网络语言模型)
      • [1-3][语言模型]基于RNN的语言模型
      • [1-4][语言模型]用N-gram来做完形填空
      • [1-5][语言模型]用KenLM来做完形填空
    • Loss Function
      • 常用损失函数
      • Focal Loss
      • softmax+交叉熵
    • Machine Learning
      • [基础]概念
      • 待整合
      • 交叉验证
      • 无监督学习
      • 优缺点
      • ML Yearning
      • SVD
    • Statistics Math
      • 程序员的数学基础课
      • 数学基础
      • 统计&高数
      • 统计题目
      • 线性代数
      • 组合数学
      • Discrete Choice Model
      • Nested Choice Model
  • Course Note
    • 基于TensorFlow的机器学习速成课程
      • [Key ML Terminology](CourseNote/基于TensorFlow的机器学习速成课程/Key ML Terminology.md)
    • 集训营
      • 任务说明
      • 算法实践1.1模型构建
      • 算法实践1.2模型构建之集成模型
      • 算法实践2.1数据预处理
    • 李宏毅机器学习
      • 10DNN训练Tips
        • Chapter 18
      • 16无监督学习
        • Chapter 25
    • 贪心NLP
      • 贪心NLP笔记
    • Cs 224 N 2019
      • [A Simple But Tough To Beat Baseline For Sentence Embeddings](CourseNote/cs224n2019/A Simple but Tough-to-beat Baseline for Sentence Embeddings.md)
      • [Lecture 01 Introduction And Word Vectors](CourseNote/cs224n2019/Lecture 01 Introduction and Word Vectors.md)
      • [Lecture 02 Word Vectors 2 And Word Senses](CourseNote/cs224n2019/Lecture 02 Word Vectors 2 and Word Senses.md)
      • [Lecture 03 Word Window Classification Neural Networks And Matrix Calculus](CourseNote/cs224n2019/Lecture 03 Word Window Classification, Neural Networks, and Matrix Calculus.md)
      • [Lecture 04 Backpropagation And Computation Graphs](CourseNote/cs224n2019/Lecture 04 Backpropagation and Computation Graphs.md)
      • [Lecture 05 Linguistic Structure Dependency Parsing](CourseNote/cs224n2019/Lecture 05 Linguistic Structure Dependency Parsing.md)
      • [Lecture 06 The Probability Of A Sentence Recurrent Neural Networks And Language Models](CourseNote/cs224n2019/Lecture 06 The probability of a sentence Recurrent Neural Networks and Language Models.md)
      • Stanford NLP
    • Deep Learning Book Goodfellow
      • Books
        • Deep Learning Book Chapter Summaries Master
      • 提纲
      • C 5
      • C 6
      • [Part I Applied Math And Machine Learning Basics](CourseNote/Deep-Learning-Book-Goodfellow/Part I - Applied Math and Machine Learning basics.md)
    • Lihang
    • NLP实战高手课
      • 极客时间_NLP实战高手课
    • 工具&资料
    • 机器学习、深度学习面试知识点汇总
    • 七月kaggle课程
    • 算法工程师
    • 贪心科技机器学习必修知识点特训营
    • 唐宇迪机器学习
    • 语言及工具
    • AI技术内参
    • Suggestions
  • Data Related
    • 数据质量
      • 置信学习
    • 自然语言处理中的数据增广_车万翔
      • 自然语言处理中的数据增广
    • Mixup
    • 数据不均衡问题
    • 数据增强的方法
  • Knowledge Graph
    • Information Extraction
      • 联合抽取
        • PRGC
      • Code
        • BERT微调
      • NER
        • 阅读理解做NER
          • MRC
        • FLAT
        • Global Pointer
        • 命名实体识别NER
    • Keyword Extraction
      • 关键词抽取
    • 小米在知识表示学习的探索与实践
    • KG
  • Multi Task
    • EXT 5
      • Ex T 5
  • NLG
    • Dailogue
      • 比赛
        • 对话评估比赛
          • [simpread-DSTC10 开放领域对话评估比赛冠军方法总结](NLG/Dailogue/比赛/对话评估比赛/simpread-DSTC10 开放领域对话评估比赛冠军方法总结.md)
      • 任务型对话
        • DST
          • DST概述
        • NLG
          • NLG概述
        • NLU
          • NLU概述
        • 任务型对话概述
        • simpread-任务型对话系统预训练最新研究进展
      • 问答型对话
        • 检索式问答
          • 基于预训练模型的检索式对话系统
          • 检索式文本问答
        • 业界分享
          • 低资源场景下的知识图谱表示学习和问答_阿里_李杨
          • QQ浏览器搜索智能问答
        • 问答型对话系统概述
      • 闲聊型对话
        • 闲聊型对话系统概述
      • 业界分享
        • 人工智能与心理咨询
        • 腾讯多轮对话机器人
        • 微软小冰
        • 小布助手闲聊生成式算法
        • 美团智能客服实践_江会星
        • 去哪儿智能客服探索和实践
        • 实时语音对话场景下的算法实践_阿里_陈克寒
        • 智能语音交互中的无效query识别_小米_崔世起
        • UNIT智能对话
      • 主动对话
      • EVA
        • EVA分享
        • EVA模型
      • PLATO
      • RASA
    • Machine Translation
      • 业界分享
        • 爱奇艺台词翻译分享
      • Paper
        • Deep Encoder Shallow Decoder
    • RAGRelated
    • Text 2 SQL
      • M SQL
        • [M SQL 2](NLG/Text2SQL/M-SQL/M-SQL (2).md)
      • [Text2SQL Baseline解析](NLG/Text2SQL/Text2SQL Baseline解析.md)
      • Text 2 SQL
    • Text Summarization
      • [文本摘要][paper]CTRLSUM
      • 文本摘要
  • Pre Training
    • 业界分享
      • 超大语言模型与语言理解_黄民烈
        • 超大语言模型与语言理解
      • 大模型的加速算法_腾讯微信
        • 大模型的加速算法
      • 孟子轻量化预训练模型
      • 悟道文汇文图生成模型
      • 悟道文澜图文多模态大模型
      • 语义驱动可视化内容创造_微软
        • 语义驱动可视化内容创造
    • Base
      • Attention
      • Mask
        • NLP中的Mask
      • Position Encoding
        • 位置编码
    • BERT
      • ALBERT
      • Bert
        • Venv
          • Lib
            • Site Packages
              • idna-3.2.dist-info
                • LICENSE
              • Markdown-3.3.4.dist-info
                • LICENSE
              • Tensorflow
                • Include
                  • External
                    • Libjpeg Turbo
                      • LICENSE
                  • Unsupported
                    • Eigen
                      • CXX 11
                        • Src
                          • Tensor
              • Werkzeug
                • Debug
                  • Shared
                    • ICON LICENSE
        • CONTRIBUTING
        • Multilingual
      • Ro BER Ta
      • BERT
      • BERT面试问答
      • BERT源码解析
      • NSP BERT
    • BERT Flow
    • BERT Zip
      • Distilling The Knowledge In A Neural Network
      • TINYBERT
      • 模型压缩
    • CPM
    • CPT
      • 兼顾理解和生成的中文预训练模型CPT
    • ELECTRA
    • EL Mo
    • ERNIE系列语言模型
    • GPT
    • MBART
    • NEZHA
    • NLG Sum
      • [simpread-预训练时代下的文本生成|模型 & 技巧](Pre-training/NLGSum/simpread-预训练时代下的文本生成|模型 & 技巧.md)
    • Prompt
      • 预训练模型的提示学习方法_刘知远
        • 预训练模型的提示学习方法
    • T 5
      • Unified SKG
      • T 5
    • Transformer
    • Uni LM
    • XL Net
    • 预训练语言模型
    • BERT变种
  • Recsys
    • 多任务Multi-task&推荐
    • 推荐介绍
    • 推荐系统之召回与精排
      • 代码
        • Python
          • Recall
            • Deep Match Master
              • Docs
                • Source
                  • Examples
                  • FAQ
                  • Features
                  • History
                  • Model Methods
                  • Quick Start
    • 业界分享
      • 腾讯基于知识图谱长视频推荐
    • 召回
    • Sparrow Rec Sys
    • 深度学习推荐系统实战
    • 推荐模型
    • Deep FM
  • Search
    • 搜索
    • 业界分享
      • 爱奇艺搜索排序算法实践
      • 语义搜索技术和应用
    • 查询关键字理解
    • 搜索排序
    • BM 25
    • KDD21-淘宝搜索中语义向量检索技术
    • query理解
    • TFIDF
  • Self Supervised Learning
    • Contrastive Learning
      • 业界分享
        • 对比学习在微博内容表示的应用_张俊林
      • Paper
      • R Drop
      • Sim CSE
    • 自监督学习
  • Text Classification
    • [多标签分类(Multi-label Classification)](TextClassification/多标签分类(Multi-label Classification)/多标签分类(Multi-label Classification).md)
    • Fast Text
    • Text CNN
    • 文本分类
  • Text Matching
    • 文本匹配和多轮检索
    • CNN SIM
    • Word Embedding
      • Skip Gram
      • Glove
      • Word 2 Vec
    • 文本匹配概述
  • Tool
    • 埋点
    • 向量检索(Faiss等)
    • Bigdata
      • 大数据基础task1_创建虚拟机+熟悉linux
      • 任务链接
      • Mr
      • Task1参考答案
      • Task2参考答案
      • Task3参考答案
      • Task4参考答案
      • Task5参考答案
    • Docker
    • Elasticsearch
    • Keras
    • Numpy
    • Python
      • 可视化
        • Interactivegraphics
        • Matplotlib
        • Tkinter
        • Turtle
      • 数据类型
        • Datatype
      • python爬虫
        • Python Scraping Master
          • phantomjs-2.1.1-windows
        • Regularexp
        • Scrapying
        • Selenium
      • 代码优化
      • 一行代码
      • 用python进行语言检测
      • Debug
      • Exception
      • [Features Tricks](Tool/python/Features & Tricks.md)
      • Fileprocess
      • Format
      • Functional Programming
      • I Python
      • Magic
      • Math
      • Os
      • Others
      • Pandas
      • Python Datastructure
      • Python操作数据库
      • Streamlit
      • Time
    • Pytorch
      • Dive Into DL Py Torch
        • 02 Softmax And Classification
        • 03 Mlp
        • 04 Underfit Overfit
        • 05 Gradient Vanishing Exploding
        • 06 Text Preprocess
        • 07 Language Model
        • 08 Rnn Basics
        • 09 Machine Translation
        • 10 Attention Seq 2 Seq
        • 11 Transformer
        • 12 Cnn
        • 14 Batchnorm Resnet
        • 15 Convexoptim
        • 16 Gradientdescent
        • 17 Optim Advance
    • Spark
      • Pyspark
        • pyspark之填充缺失的时间数据
      • Spark
    • SQL
      • 数据库
      • Hive Sql
      • MySQL实战45讲
    • Tensor Flow
      • TensorFlow入门
  • Common
  • NLP知识体系
Powered by GitBook
On this page
  • PLATO
  • PLATO-2
  • PLATO-XL
  • PLATO-LTM
  • 数据集
  • 模型
  • 实验
  • 参考资料

Was this helpful?

  1. NLG
  2. Dailogue

PLATO

PreviousEVA模型NextRASA

Last updated 2 years ago

Was this helpful?

PLATO是业界首个基于隐空间(Latent Space)的端到端的预训练对话生成模型。据悉,该模型利用隐向量来表示对话的潜在方向,从而达到对话内容丰富度和流畅度的显著提升。针对具体的对话任务,基于PLATO可以用少量数据训练得到非常流畅的对话系统。

论文名称:

PLATO:Pre-trained Dialogue Generation Model with Discrete Latent Variable

论文地址:

预训练模型及代码:

代码主页:

训练中文模型:

对话系统的挑战非常多,其中有两点非常重要,一是大规模开放域多轮对话数据匮乏; 二是对话中涉及常识、领域知识和上下文,因此在对话回复时,存在“一对多”问题。

一个对话的上文(Context),往往可以对应多个不同回复(Response)的方向。这些不同的回复随着不同的人,不同的背景和环境可能有所不同,但都是合理的回复。

对于这种复杂的一对多的模式,神经网络拟合起来往往非常棘手。在学习这样一对多的数据的时候,会因为模型能力和数据匮乏导致最终学习的效果趋向于平庸,极易产生如“哈哈”、“嗯”这样大家熟知的索然无味的“聊天终结语”。

隐变量较为普遍地在VAE、CVAE等技术中使用,但在论文中,作者们首次提出将离散的隐变量结合Transformer结构,应用到通用的对话领域。通过引入离散隐变量,可以对上文与回复之间的“一对多”关系进行有效建模。

同时,文章中通过利用大规模的与人人对话类似的语料,包括Reddit和Twitter,进行了生成模型的预训练,后续在有限的人人对话语料上进行微调,即可以取得高质量的生成效果。

PLATO可以灵活支持多种对话,包括闲聊、知识聊天、对话问答等等。而文章最终公布的在三个公开对话数据集上的测试,PLATO都取得了新的最优效果。

PLATO

在PLATO中,离散隐变量可以有K个取值,它的每个取值,是与一个回复中的意图相对应的,或者可以理解为多样化的对话的动作(Action)。

在PLATO的训练中,有2个任务同步进行,且共享网络参数:回复生成和隐变量识别。给定上文和离散隐变量的取值(即确定了回复中的意图),生成任务会尽量最大化目标回复的似然概率。

同时,识别任务尽量估计给定上文和目标回复对应的隐变量取值。显然,隐变量的准确识别,可以进一步提升回复生成的质量。

PLATO的网络架构如图1所示,由Transformer Blocks组成。针对多轮对话的输入的表示方法,PLATO也进行了独特的设计,每个token的Input Embedding是由对应的token、role、turn和position embedding相加得到。

预训练中同步进行了2个任务——回复生成(Response Generation)和隐变量识别(Latent Act Recognition)。

在回复生成任务中,PLATO借鉴UniLM使用了灵活的注意力机制:对上文进行了双向编码,充分利用和理解上文信息;对回复我们进行了单向解码,适应回复生成的Autoregressive特性。

在隐变量识别任务中,PLATO使用特殊符号[M]作为输入,收集给定上文和目标回复的信息,用于估计回复意图(即离散隐变量的取值)。

PLATO训练使用了三个目标函数(Loss Function)——negative log-likelihood (NLL) loss、bag-of-words (BOW) loss和response selection (RS) loss,如图1最后一列所示。

在文本生成任务中,最常用的是NLL loss,PLATO引入了BOW loss是为了促进离散隐变量的训练。此外,RS可以辅助判断一个回复与上文的相关性。

PLATO的模型由大规模语义预训练模型进行参数初始化,在预训练中,PLATO使用了8.3M Twitter和Reddit对话样本。

通过对比这些结果,可以看出:

灵活的注意力机制可以充分利用上文的双向信息(Model 1.2 v.s. Model 1.3);大规模的Twitter和Reddit语料,显著改善回复生成(Group 2&3 v.s. Group 1);离散隐变量的引入,则可以进一步提升回复质量(Model 3.1 v.s. Model 2.2)。

PLATO-2

arXiv:

GitHub:

它的训练过程分为两个阶段,第一阶段,在一对一映射的简化框架下,训练粗粒度生成模型来学习回复生成,第二阶段,进一步训练细粒度生成模型和评估模型,这个细粒度生成模型显式地建模一对多关系,评估模型用来学习回复的一致性从而选择最合适的回复。

PLATO-XL

PLATO-XL网络架构上承袭了PLATO unified transformer 结构,可同时进行对话理解和回复生成的联合建模,参数性价比很高。通过灵活的注意力机制,模型对上文进行了双向编码,充分利用和理解上文信息;对回复进行了单向解码,适应回复生成的auto-regressive特性。此外,unified transformer结构在对话上训练效率很高,这是由于对话样本长短不一,训练过程中padding补齐会带来大量的无效计算,unified transformer可以对输入样本进行有效的排序,大幅提升训练效率。

为了进一步改善对话模型有时候自相矛盾的问题,PLATO-XL引入了多角色感知的输入表示,以提升多轮对话上的一致性。对话模型所用的预训练语料大多是社交媒体对话,通常有多个用户参与,表述和交流一些观点和内容。在训练时,模型较难区分对话上文中不同角度的观点和信息,容易产生一些自相矛盾的回复。针对社交媒体对话多方参与的特点,PLATO-XL进行了多角色感知的预训练,对多轮对话中的各个角色进行清晰区分,辅助模型生成更加连贯、一致的回复。

PLATO-XL包括中英文2个对话模型,预训练语料规模达到千亿级token,模型规模高达110亿参数。PLATO-XL也是完全基于百度自主研发的飞桨深度学习平台,利用了飞桨 FleetX库的并行能力,使用了包括 recompute、sharded data parallelism等策略,基于高性能 GPU 集群进行了训练。

PLATO-LTM

论文:Long Time No See! Open-Domain Conversation with Long-Term Persona Memory

#ACL

github: https://github.com/PaddlePaddle/Research/tree/master/NLP/ACL2022-DuLeMon

task: Long-term Memory Conversation(LeMon)

dataset: DuLeMon

dialogue generation framework: PLATO-LTM

抽取和更新长期persona记忆,训练时不需要多轮的对话数据

数据集

  • Persona collection: 主要来源于PersonaChat

  • Dialogue collection: 众包对话

  • Persona Grounding Labeling: 标注当前回复是否用了persona info,以及当前句子是否是persona句子

数据包括两个部分

  • DeLeMon-SELF: bot只知道自己的persona

  • DuLeMon-BOTH: bot也知道user的persona

模型

包括几个部分

  1. Persona Extractor(PE)

使用分类器过滤不相关的信息,抽取persona句子

ERNIE- CNN,使用预训练的ERNIE作为句子表示,CNN作为分类

数据集:6k utterances(来源于DuLeMon和中国的社交平台)

训练5个模型(参数不同)(pc-stage1),拿5个模型给140万数据做标注,有至少2个模型标positive就给positive标签,否则给negative标签。然后5个模型在所有数据上训练,选择表现最好的一个作为最终的模型(pc-stage2)。

  1. Long-Term Memory(LTM) 两个long-term memories存储双方的persona info

reading and writing based on the context persona matching (CPM) model

context encoder Ec,persona encoder Ep,[CLS] E

Ec和Ep用ERNIE模型初始化,然后在DuLeMon数据集上训练

每个训练样本中,positive persona是当前用户的utterance和机器人的response使用的persona, 包括机器人看到的bot persona和user persona, negative persona是current session中的剩余persona

triplet loss (context, positive persona, negative persona)

Write: PE module识别对话历史中的persona作为待写入的候选信息,需要跟memory中的persona去重,计算cosine相似度获取最相似的persona,如果超过阈值,就以新换旧,否则直接写入。需要存储(persona, Ep(persona)) pair.

Read: 从memory中检索的过程。First, we use the effificient similarity search of dense vectors to select candidates. Then a matching model is utilized to score the relevance of the candidates to the current context. The similarity between the context and the persona using cosine similarity

选择topk的user persona和topk的bot persona,过滤相似度低于阈值的那些。

  1. Generation Module

大模型PLATO-2,双方的persona句子+对话上下文作为模型输入

加了角色信息区分,两个策略

  • role embedding

  • role token: system persona和user persona

实验

自动评估指标:

  • Precision, Recall, F1 for persona classification model

  • AUC, recall@k for the long-term memory ranking model

  • PPL, BLEU, F1, DISTINCT-1/2 for response generation model

人工评估指标

  • Coherence: whether the response is relevant and consistent with the context

  • Consistency: whether the response is consistent with the persona in the dialogue history

  • Engagingness: whether the annotator would like to talk with the speaker for each response in the long-term conversation

ranking model CPM

  • AUC 0.76, recall@5 0.83

PLATO-FT: The PLATO-2 model fine-tuned on our proposed DuLeMon dataset.

PLATO-LTM: The PLATO-FT model with our proposed long-term memory (LTM).

PLATO-LTM w/o PE: PLATO-LTM without the persona extractor (PE) module, which stores all history utterances (user and bot separately) into memory without persona extraction.

参考资料

PE模型:200条测试样本

generate model self-chat, PLATO-LTM是user simulator, 其它所有模型是bot (包括plato-ltm)

https://arxiv.org/abs/1910.07931
https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO
https://github.com/PaddlePaddle/Knover/tree/develop/projects/PLATO-2
https://github.com/PaddlePaddle/Knover
https://github.com/PaddlePaddle/Knover/issues/25
https://github.com/PaddlePaddle/Knover/issues/79
https://github.com/PaddlePaddle/Knover/issues/63
https://github.com/PaddlePaddle/Knover/issues/60
https://arxiv.org/abs/2006.16779
https://github.com/PaddlePaddle/Knover
https://mp.weixin.qq.com/s/EGhQ2dVjxVobz4lz3vkeXw
PLATO:百度发布首个大规模隐变量对话模型