以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

project任务完成百分比,Project2016已完成百分比

  

  机器心脏释放   

  

  作者:Yizhe Zhang, Siqi Sun, Michel Galley等   

  

  自然语言对话的生成是人工无线城市面临的一大难题,微软研究院的一项新研究让我们离解决这个问题更近了一步。他们使用GPT-2。   

  

  大规模reddit中的模型对话   

  

  对话系统在数据库上预先训练,并且在几个对话数据集上获得最佳结果。并且经过人类评委的评测,在非交互图灵测试的情况下,系统可以生成接近人类水平的对话。   

  

     

  

  微软DialoGPT生成的对话结果示例。   

  

  DialoGPT是一种用于对话响应生成的可调千兆级神经网络模型,其训练基于Reddit。   

  

  数据。研究成果的源代码已经开源,他们还发布了大规模的预训练模型。   

  

  *论文:https://arxiv.org/abs/1911.00536   

  

  *项目:https://www . Microsoft.com/en-us/research/Project/大规模响应生成再培训/   

  

  *代码:https://github.com/microsoft/DialoGPT   

  

  最近,在使用基于变压器的架构的大规模预训练方面取得了巨大进展(拉德福德等人,2018;Devlin等人,   

  

  2019;Raffel等人,2019),这些发展也在实践中取得了巨大成功。例如,OpenAI的GPT-2(拉德福德等人   

  

  艾尔。2018)表示在大数据集上训练的变压器。   

  

  该模型能够捕捉文本数据中的长程相关性,进而生成平滑、词汇化和丰富的文本。该模型能够获取细粒度的文本数据,并获得近似人类书写的真实世界文本的高分辨率输出。   

  

  对话时间是GPT 2号   

  

  的扩展,目标是解决会话神经反应生成中的挑战性问题。神经反应生成是文本生成的一个子类。文本生成任务的目标是生成与提示相关联的看起来自然的文本(同时,它不同于任何训练示例)。然而,建模对话面临许多明显的问题,因为人类对话中两个参与者的目标可能会相互冲突,并且可能的响应范围本质上更加多样化。因此,对话生成中的一对多问题通常比神经机器翻译、文本摘要和文本解释等其他文本生成任务更难。人类的对话通常更加非正式和嘈杂,当在文本中聊天时,它们通常包含非正式的缩写或句法/词汇错误。   

  

  类似于GPT-2,DialoGPT是以自回归语言模型的形式构建的,其模型架构采用多层变压器。但与GPT 2不同的是,对话   

  

  的培训使用从Reddit讨论链中提取的大规模对话对/对话。作者怀疑这将使DialoGPT能够学习更细粒度的P(Target,   

  

  源的联合分布)。他们在实践中也观察到了这种现象:DialoGPT生成的句子丰富多样,包含特定于源提示的信息,类似于GPT-2。   

  

  结果为连续文本生成。   

  

  作者在一个开放的基准数据集(DSTC-7)和一个从Reddit帖子中提取的新6k中。   

  

  新提出的预训练模型在大小多参考测试数据集上进行评估。结果表明对话点   

  

  目前,它在自动评估和人工评估方面都取得了最好的成绩,并将对话产生的结果的质量提升到接近人类的水平。   

  

  作者已经发布了本研究的源代码和预训练模型。作者认为,这种模型易于使用,可以很容易地适应新的对话数据集,尤其是那些训练样本很少的数据集。这个对话   

  

  该软件包还包含一个基于拥抱脸Pytorch Transformer(拥抱脸,   

  

  2019年)(数据提取/准备和模型培训/评估)。   

  

  方法DialogPT模型基于GPT-2架构。它继承了GPT-2的第12层到第24层,并进行层标准化。   

  

  Transformer是一种适合作者修改的模型深度的初始化方案,用于tokenizer的字节对编码(Sennrich等人,2016)。遵守   

  

  OpenAI的GPT-2模型架构,作者将多轮对话会话建模为长文本,并将生成任务纳入语言建模任务框架。   

>   

作者首先将一个对话会话中所有对话回合连接成一个长文本 x_1, , x_N(N 为序列长度),并以「文本结束

  

token」结束。可将源句子(对话历史)记为 S = x_1, , x_m,将目标句子(基本真值响应)记为 T = x_{m+1},

  

, x_N,则 P(T|S) 的条件分布可以写为一系列条件概率的积:

  

  

对于多轮对话实例 T_1, , T_K,(1)式可写为 p(T_K, , T_2|T_1),这本质上就是 p(T_i |T_1,

  

, T_{i1}) 的条件概率的积。最终,对单个目标 p(T_K, , T_2|T_1) 的优化可以被视为是优化所有的 p(T_i

  

|T_1, , T_{i1}) 源-目标对。作者这里的实现基于开源的 PyTorch-transformer 库。

  

链接:https://github.com/huggingface/pytorch-transformers 互信息最大化

  

开放域文本生成模型有一个众所周知的困难,即会生成枯燥的、没有信息的样本。为了解决这个问题,作者实现了一个最大互信息(MMI)评分函数(Li et al.,

  

2016a; Zhang et al., 2018)。MMI 是利用一个预训练的后向模型来预测给定响应的源句子,即

  

P(Source|target)。作者首先使用 top-K 采样生成一组假设,然后使用 P(Source|Hypothesis)

  

的概率来对所有假设重新排序。直观来看,最大化后向模型似然会对所有枯燥的假设施加惩罚,因为频繁的和重复性的假设可能与很多可能的查询有关,因此在任意特定查询下得到的概率会更低。

  

作者也尝试了使用策略梯度来优化奖励

  

  

,其中与 Zhang et al. (2018) 一样使用了一种样本平均的基线。这个验证奖励可以得到稳定提升,但不同于 RNN

  

框架下的训练,作者观察到强化学习训练容易收敛到某个劣化的局部最优解,这时的假设仅仅是对源句子的重复(即学舌模式),此时的互信息是最大化的。作者猜想,由于

  

transformer 具有强大的模型表征能力,所以它们很容易陷入局部最优位置。但强化学习训练规范化的相关工作还有待未来研究。

  

结果 作者将 DialoGPT 与另外两个基准进行了比较:作者自己内部的基于 (Li et al., 2016a) 的序列到序列模型

  

PersonalityChat,这个模型是基于 Twitter 数据训练的,已经在微软 Azure 的 Cognitive Service

  

得到了实际应用。表 2 总结了自动化评估的结果。有 345M 个参数的 DialoGPT 以及波束搜索在几乎所有基准上都得到了最高的自动评估分数。

  

  

表 2:DSTC 评估

  

作者进一步在一个有 6K 个样本的多参照测试集上评估了 DialoGPT。结果见表 3。测试过程使用了两种设置:从头开始训练以及使用 GPT-2

  

作为预训练模型进行微调。在这两种设置中,更大的模型都总是优于更小的模型。另外表 3 的倒数第二行总结了执行互信息最大化结果

  

  

表 3:6K Reddit 多参照评估

  

表 4(交互式聊天)和表 5(有用户提示的自播放聊天)给出了一些生成对话的样本。

  

  

表 4:解决常识问题

  

  

表 5:多轮对话的交互式示例

  

有趣的是,新提出的模型表现出了在一定程度上解决常识问题的能力,作者猜想这可能要归功于 Reddit

  

数据中可以学习到的丰富信息。在某些案例中,模型并不是给出「所需的」答案,而会生成另一个可替代的合理答案。作者观察到,该系统能比 RNN

  

对话生成系统更好地处理多轮对话生成,而且往往在上下文方面更能保持一致(表 5)。 作者还通过众包评估了从 Reddit 6K 测试数据集随机采样的 2000

  

个测试源。系统经过了配对,每一对系统的输出都被随机呈现给 3 位评判者,他们会根据相关性、信息量和生成结果与人类结果的相似程度使用一个 3 分制的类

  

Likert 度量对这些结果进行排名。作者先要求这些评判者经过了一个资格测试,并采用了一种垃圾检测制度。表 7

  

给出了评判者在相关性、信息量和人类相似度方面的整体偏好,结果用原始数值与占整体的百分比来表示。

  

  

表 7:在相关性、信息量和人类响应可能性方面的人类评估结果

  

表 7 还表明「单纯」的 DialoGPT 基质模型可能就已经能达到与人类响应相近的质量了。