查看原文
其他

读完这三篇论文,我的模型学会多样回复了

AINLP 2022-08-23

The following article is from NLP情报局 Author Toby


在生成式对话系统中,“安全回复”是让很多人头疼的问题。当模型不知道怎么回复时,就会偷懒用常见、高频、简短但没有营养的一些语句来敷衍用户。
因此,回复多样性是一个影响回复语句质量的重要指标。
由于训练样本中“我不知道”等一般性回复的频率较高,同时Beam search等生成算法倾向于高频、简短回复,导致整体回复质量受到影响。

例如用户发送“我真的想吃饭”,模型倾向于选择简单的响应,如“没问题”,而不是使用更复杂的句子,如推荐和建议。

下面分享3篇针对生成多样性回复的顶会论文,经过专门训练,模型输出会明显丰富多彩。

DialogGPT

论文标题

DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation

链接

https://arxiv.org/abs/1911.00536

DialogGPT旨在解决“安全回复”的问题。论文假定对于(Source, Target),优质、多样性好的回复相对于通用回复更能体现source的特征,基于该假定,论文提出了利用最大互信息(MMI)来约束并筛选回复。

模型结构与策略

使用两个同样的GPT-2模型,二者不共享参数,一个用于生成回复语句,一个用于计算P(Source|Hypothesis),筛选候选回复。

训练策略

针对生成模型,训练任务为基于上下文信息(Source)生成回复语句(Target);

针对MMI模型,训练任务为基于回复语句生成上下文信息。

inference策略

1. 使用生成模型+Top-K sampling策略生成K个候选回复

2. 将候选回复依次与上下文信息输入MMI模型,根据输出概率计算出互信息

3. 基于互信息进行Re-ranking,输出回复

实验效果

项目地址

https://github.com/yangjianxin1/GPT2-chitchat

PLATO

论文标题

PLATO: Pre-trained Dialogue Generation Model withDiscrete Latent Variable

链接

https://aclanthology.org/2020.acl-main.9/

该模型主要解决开放域对话中Post->Response面临的“一对多”问题,即一个上下文可以有多个回复;但是由于训练时没有区分,多个回复“平均”后可能就变成了安全回复。例如:

A:今天好冷啊,外面风好大。

B可以回复:

1) 是啊,天气预报说今天气温骤降10度呢。

2) 好期待下雪啊,这样就可以堆雪人了。

3) 刚在外面走了一会,发型都被吹乱了。

“平均”后B的回复:是的

主要贡献

1. 引入flexible self-attention机制,对于生成过程中的response采用单向attention,对于其他采用双向attention机制

2. 引入离散隐变量,达到策略选择的效果,通过不同的离散值影响模型的生成结果

模型结构

训练策略

一共使用三个Loss:NLL Loss , BOW Loss以及RS Loss

- NLL Loss用于训练常规的对话生成任务

- BOW Loss用于强化针对latent discrete variable的表达

- RS Loss用于对候选回复进行选择,同时可以训练隐变量的估计

训练步骤

每一个训练step需要过两次模型

1) Latent Act Recognition: 估计后验分布p(z|c, r),计算RS Loss

2)Response Generation: 对离散变量 z∼p(z|c, r)进行采样,进行生成任务,计算NLL和BOW Loss

3)Optimization: 计算梯度,反向传播

Inference策略

1. Candidate Response Generation: 通过外部控制离散隐变量z,生成候选回复集合

2. Response Selection: 通过回复筛选流程(RS Loss训练)选择最终的回复

实验效果

PLATO-2

论文标题

PLATO-2: Towards Building an Open-Domain Chatbot viaCurriculum Learning

链接

https://arxiv.org/abs/2006.16779

与前作面向的问题类似,该模型依旧致力于解决开放域对话中Post->Response面临的“一对多”问题。

主要贡献

在PLATO的基础上新增了两阶段训练,在第二阶段中使用双向一致性判断来选择回复,在中文对话中超过了小冰、DialoGPT、Meena、Blender等模型

模型结构

采用LM前置的Transformer结构,与前作一样采用flexible attention mechanism。

训练策略

采用了课程学习(两阶段任务学习)

第一阶段:采用标准的one-to-one的对话回复生成任务,使用NLL Loss优化模型参数

第二阶段:分别对模型进行多样性回复生成任务以及回复判别任务;

多样性回复任务

与PLATO保持一致,首先添加[M]在句首预测出z~p(z|c, r),然后根据z和context进行response生成任务的训练,使用BOW Loss和NLL Loss。

回复判别任务

此处的RCE = PLATO RS Loss,与PLATO的不同点在于:

1. 没有统一两个任务的输入,此处将关键字改回了CLS

2. 在RCE外新增了MLM强化回复判别任务的学习

实验效果

在线体验

https://ai.baidu.com/unit/v2/static/socialbot

- END -

进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存