【论文阅读】Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances

本文主要是介绍【论文阅读】Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、简介
    • 1. 背景
    • 2. 简介
  • 二、方法
    • 1. 任务
    • 2. 模型架构
      • Input Embedding
      • Transformer Block
      • Flow Module
      • Response Generator
    • 3. 训练目标
    • 4. Flow Score
  • 三、实验
    • 1. 数据集
    • 2. 实验设置
    • 3. Baseline
      • 回复生成
      • 交互对话评估
    • 4. 评价指标
      • dialogue response generation
      • interactive dialogue evaluation
  • 四、实验结果及分析
    • 1. 回复生成
      • 结果
      • 人类评估
      • 对话的历史长度
      • 消融实验
    • 2. 对话评估
      • 结果
      • 结果分析
      • Flow score
      • 案例分析

在这里插入图片描述

ACL2021

Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances

DialoFlow模型: 建模对话动态信息流

paper地址:https://arxiv.org/pdf/2106.02227.pdf

代码地址:https://github.com/ictnlp/DialoFlow


一、简介

1. 背景

现有的建模对话历史的方法主要分为两种。一种是直接拼接对话历史,这种方法在某种程度上忽略了对话历史中跨句子的对话动态。另外一种是多层次建模,首先对每句话做表示,再对整个对话做表示,这种方法在对每句话做表示时忽略了其他句子的作用。(flat)

2. 简介

本文提出了建模对话动态信息流的方法DialoFlow,引入dynamic flow 动态流机制通过处理每个话语带来的语义影响来模拟整个对话历史中的动态信息流。

在Reddit上进行了预训练,实验表明,DialoFlow在对话生成任务(Reddit multi-reference、DailyDialog multi-reference)上明显优于DialoGPT

此外,本文还提出了Flow score,一种基于预训练的DialoFlow的评价人机交互对话质量的有效自动度量,在DSTC9交互式对话评估数据集上的评估结果与人工评估一致性达到0.9


二、方法

1. 任务

D = u 1 , u 2 , … , u N D = {u_1,u_2, …, u_N} D=u1u2,uN表示整个对话。对于每一条话语 u k = u k 1 , u k 2 , … , u k T u_k= {u^1_k, u^2 _k,…, u^T _k} uk=uk1,uk2ukT,其中 u k t u^t_k ukt表示第k条话语中的第t个单词。 u < k = u 1 , u 2 , … , u k − 1 u_{<k}= {u_1, u_2,…, u _{k-1}} u<k=u1,u2uk1为第k条话语的历史对话,也就是上下文 C k C_k Ck, C k + 1 C_{k+1} Ck+1 C k C_k Ck间的差异定义为semantic influence I k I_k Ik I k = C k + 1 − C k I_k=C_{k+1}-C_k Ik=Ck+1Ck
在这里插入图片描述

DialoFlow首先对对话历史进行编码,并根据之前所有的历史上下文 C 1 C_1 C1, C 2 C_2 C2,…, C k C_k Ck预测未来的上下文 C k + 1 ′ C^{'}_{k+1} Ck+1。然后在回复生成阶段,模型获取预测的目标语义影响 I k ′ I^{'}_{k} Ik,并考虑预测语义影响和历史子句生成目标回复 u k u_k uk

2. 模型架构

在这里插入图片描述
DialoFlow由输入embeddings、transfoemer块、单向Flow模块和回复生成器四部分组成。

Input Embedding

将token embedding、segment embedding和 position embedding的总和作为模型输入,在句末插入token “[C]”作为话语结束标记。segment embedding 包含“[Speaker1]”和“[Speaker2]”两种,来模拟说话人。

Transformer Block

使用了GPT-2里的pre-normalization

DialoFlow保持单向对话编码,在对话级别训练,而不是上下文-回复级别。可以得到由transformer block编码的第k个话语处的历史上下文:
在这里插入图片描述

Flow Module

为了捕获对话话语中的动态信息流,本文设计了一个Flow模块来模拟语境变化。Flow模块的结构与一层transformer block相同,接受前面所有的上下文{C1,C2,…,Ck}作为输入,并预测第(k+1)条话语的上下文 C k + 1 ′ C^{'}_{k+1} Ck+1
在这里插入图片描述
以及预测第k个话语引起的语义影响 I k ′ I^{'}_{k} Ik
在这里插入图片描述

Response Generator

DialoFlow在预测语义影响 I k ′ I^{'}_{k} Ik的指导下生成话语 u k u_k uk。回复生成器包含一个前馈层和一个softmax层,来将隐藏状态转换为tokens。在生成第t个单词时,回复生成器以预测的语义影响 I k ′ I^{'}_{k} Ik和隐藏状态 h k t − 1 h^{t-1}_{k} hkt1为输入,输出第t个单词的概率分布:

公式5

其中|V|为词汇量大小

3. 训练目标

与传统的上下文-回复的训练方法不同,DialoFlow是用包含N个话语的整个对话进行训练,相应地设计了三个训练任务来优化模型:
context flow modeling 目标是最小化预测的上下文 C k ′ C^{'}_k Ck和真实上下文 C k C_k Ck之间的L2距离

在这里插入图片描述
context flow semantic influence

semantic influence modeling 用预测的语义影响 I n ′ I^{'}_{n} In设计了一个词袋损失来建模第n个话语在上下文 C n − 1 C_{n−1} Cn1处带来的语义影响

在这里插入图片描述

其中 f u k t f_{u_k^t} fukt表示话语 u k u_k uk中第t个单词 u k t u_k^t ukt的概率
公式8
response generation modeling 回复生成的目标为:
在这里插入图片描述
DialoFlow的整体培训目标可计算如下:
公式10

4. Flow Score

聊天机器人的话语所带来的语义影响与期望之间的差距越小,就越像人类。

本文提出了一种基于DialoFlow的交互式对话评价的自动无参考指标Flow score,当机器人生成一个新的话语 u k u_k uk时,测量 u k u_k uk所带来的预测语义影响 I k ′ I^{'}_{k} Ik与真实语义影响 I k I_{k} Ik之间的相似度作为该话语与人类相似的概率。计算时同时度量余弦相似度和长度相似度:

公式11

引入长度相似度是为了考虑长度差异对语义相似度的影响。对于聊天机器人在对话中的整体质量,本文设计的Flow score,可以视为对话级困惑度:

公式12

其中M为对话的回合数, ( s k + 1 ) / 2 (s_k+1)/2 (sk+1)/2是为了将相似度值缩放到[0,1]。Flow score越低,对话质量越高。


三、实验

1. 数据集

  • Reddit comments

  • Reddit Test Dataset

  • DailyDialog

  • DSTC9

2. 实验设置

  • DialoFlow基于预训练过的GPT-2进行预训练。

  • 使用0.01权值衰减的AdamW优化器和12000热身步骤的linear learning rate scheduler。

  • DialoFlow-base和DialoFlow-medium的学习率是2e-4,DialoFlow-large的学习率是1e-4。

  • 所有模型的批处理大小1024,DialoFlow-base和DialoFlow-medium训练4个epochs,DialoFlow-large训练2个epochs。在8个Nvidia V100 gpu上训练DialoFlow-large大约需要两个月的时间。

  • 对DialoFlow-medium model 和DialoFlow-large使用 beam search(波束宽度为10),对DialoFlow-base采用贪婪搜索(和DialoGPT保持一致)

  • 在DailyDialog数据集上,对预训练的DialoFlow和DialoGPT进行微调,根据validation损失选择checkpoint,然后使用beam search (with beam width 5)进行解码

3. Baseline

回复生成

DialoGPT是Reddit评论中预先训练的一个流行的对话生成模型,选择预训练的OpenAI GPT-2版本进行比较。

交互对话评估

  • FED score,自动评估指标,使用DialoGPT-large,没有任何微调或监督。FED以DialoGPT-large为用户,根据预先设置的几种常见人类话语计算后续话语的可能性,揭示对话的质量。

  • Perplexity,困惑度是用来衡量话语在对话语境下的连贯性。本文使用DialoGPT-large来测量聊天机器人每个话语的困惑度。将整个对话中所有话语的困惑度平均起来作为基线度量。

4. 评价指标

dialogue response generation

  • BLEU

  • METEOR

  • NIST,BLEU的一种变体,它通过n-gram匹配的信息增益来加权,也就是说,它间接惩罚无信息的n-gram,如“我不知道”,比BLEU更合适处理多参考测试集

  • Entropy,评估词汇多样性

使用DialoGPT使用的评估脚本。

interactive dialogue evaluation

  • 计算了自动度量和人类评分之间的Pearson和Spearman相关性。
  • 使用预训练的DialoFlow-large来计算本文提出的Flow score。

四、实验结果及分析

1. 回复生成

结果

表1

multi-reference Reddit数据集(平均历史对话长度1.45条)上对比DialoFlow和DialoGPT:

  1. NIST可以有效惩罚无信息的n-gram,所以DialoGPT倾向于生成一般回复,而DialoFlow模型可以生成有更多信息的回复。

  2. 结果还表明,对动态流进行建模有助于提高转换质量,避免收敛于一般的回复。

  3. 对于词汇多样性,DialoFlow与DialoGPT在熵上表现相当。

DailyDialog数据集(平均历史长度4.66条)上验证了长对话历史上的性能增益:

  1. 与DialoGPT相比,DialoFlow显示了所有模型尺寸和所有指标上的显著改进。在DailyDialog上的改进表明,DialoFlow有捕获具有很长历史的动态信息流的强大能力。

  2. DailyDialog数据集上的性能改进比Reddit更显著。可能是因为Reddit里的对话主要是论坛里的评论,而DailyDialog里的对话来源于日常生活。所以DailyDialog数据集中的context flow 处于更相似的模式中,与Reddit数据集相比, semantic influences更可预测。

人类评估

使用众包对从DailyDialog测试集中随机抽取的200个案例进行人工评估。比较medium版本的DialoFlow和DialoGPT,将每组回答随机呈现给3位评委,根据relevance相关性、informativeness信息量和human-likeness人类相似性对他们进行排名。
表二
对于DialoFlow生成的响应有很强的偏好。人的评价结果表明,对动态信息流进行建模可以有效地提高对话生成的质量。

对话的历史长度

图3
图3显示了DialoFlow和DialoGPT在不同历史长度上的性能,DialoFlow在所有历史长度上都实现了更好的性能。当历史长度等于1时,即回复是基于一个历史语句生成时,DialoFlow也得到了显著的提升。本文将其归因于预测语义推理的指导。

消融实验

表1的消融实验显示,通过三个训练目标,DialoFlow模型在NIST和METEOR上实现了最佳性能。

  • 当放弃语义影响建模任务时,性能略有下降

  • 当进一步删除上下文流建模任务(这意味着端到端培训)时,性能再次下降。

结果表明,Context Influence Modeling对对话建模是有效的, Semantic Influence Modeling可以提示CIM任务。

2. 对话评估

结果

在这里插入图片描述
表4显示了DSTC9交互式会话数据集上不同自动度量与人类评级的聊天机器人级相关性。本文提出的Flow score 达到了Spearman correlation 0.90 (p<0.001)和Pearson correlation 0.91 (p<0.001)的强相关性。FED仅显示了Spearman correlation 为0.56 (p<0.1)的中等相关性,而且和Perplexity得分也不太相关。

也就是说:

  1. Flow score 可以有效地估计聊天机器人的整体质量;

  2. 高相关性也表明DialoFlow模型在自然的人与人的对话中捕获了一般的动态信息流。

结果分析

表3
表3显示了详细的人类评分、FED评分、困惑度和本文为DSTC9交互式对话评估跟踪中的11个聊天机器人和采样的人类-人类对话提出的Flow评分。良好的自动度量不仅应该在人机对话中表现良好,也应该在人机对话中表现良好,因为聊天机器人的最终目标是生成类人反应。与其他11个聊天机器人相比,FED在人对人对话中的表现较差。本文提出的Flow评分以人类与人类的对话为最佳,而人类与最佳聊天机器人之间的Flow评分差距与人类评分差距相似。

Flow score

Flow score 可以看作是话语层面上的困惑度。在自然对话中,特定语义有许多不同的表达,传统的word级别的困惑度可以评估话语的连贯性和流畅性,但在变化的表达上总是表现不稳定。而Flow评分直接度量语义相似度,减轻了传统的困惑度的问题。

案例分析

在这里插入图片描述
图4显示了由DialoFlow编码的人机对话的语义上下文的二维T-SNE可视化。对话可以分为四个话题:问候(1 ~ 4),谈论为什么糟糕的一天(5 ~ 13),解释看医生的可怕经历(14 ~ 18),讨论游泳(19 ~ 26)。

可以发现,随着话题的切换,语义语境流的可视化也发生了很大的变化,这表明DialoFlow能够捕获对话中的动态信息流,有效地度量每句话语所带来的语义影响。此外,不同的说话者保持着自己的context flows。


备注:

1、捕获动态信息流

DialoFlow中的Transformer Block模块构建话语级历史上下文的context flow,输入给flow module模块预测第(k+1)条消息的上下文 C k + 1 ′ C^{'}_{k+1} Ck+1 I k ′ = C k + 1 ′ − C k I^{'}_{k}=C^{'}_{k+1}-C_k Ik=Ck+1Ck表示第k个话语引起的语义影响

当第k条消息改变时,只会引起k之后消息的上下文语义变化,而不会带来k之前的上下文语义变化(图4的可视化也证明了这点),也就是文中强调的,可以捕获动态信息流(构建话语级历史上下文的context flow+捕获第k个话语带来的语义影响)。后面提出的Flow score,也用到了这里的语义影响 I I I

2、Flow score

perplexity(困惑度)的基本思想是:当语言模型训练完之后,测试集中的句子都是正常的句子,那么给测试集的句子赋予较高概率值的语言模型较好。

PPL的计算过程如下:
对于一段句子(sentence)s由词构成,即:s=w1w2…wn, w代表词
在这里插入图片描述
对两边都取对数,则:
在这里插入图片描述
句子概率越大,语言模型越好,迷惑度越小。

这里的flow score用相似度 s k s_k sk来类比ppl中的句子概率P,机器人生成的话语带来的语义影响与真实的语义影响越相似(相似度 s k s_k sk越高),对话质量越高,flow score就越小。

Flow score计算过程如下:
公式11
s k s_k sk表示预测语义影响 I k ′ I^{'}_{k} Ik与真实语义影响 I k I_{k} Ik之间的相似度
公式12
M为对话的回合数,用 ( s k + 1 ) / 2 (s_k+1)/2 (sk+1)/2将相似度值和P一样缩放到[0,1]
相似度越高,对话质量越高,Flow score越小


参考:

中文信息处理实验室六篇长文被acl2021主会录用

困惑度 (Perplexity)


有帮助的话可以点个赞喔~
在这里插入图片描述

这篇关于【论文阅读】Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843012

相关文章

ssh在本地虚拟机中的应用——解决虚拟机中编写和阅读代码不方便问题的一个小技巧

虚拟机中编程小技巧分享——ssh的使用 事情的起因是这样的:前几天一位工程师过来我这边,他看到我在主机和虚拟机运行了两个vscode环境,不经意间提了句:“这么艰苦的环境写代码啊”。 后来我一想:确实。 我长时间以来都是直接在虚拟机里写的代码,但是毕竟是虚拟机嘛,有时候编辑器没那么流畅,在文件比较多的时候跳转很麻烦,容易卡住。因此,我当晚简单思考了一下,想到了一个可行的解决方法——即用ssh

康奈尔大学之论文审稿模型Reviewer2及我司七月对其的实现(含PeerRead)

前言 自从我司于23年7月开始涉足论文审稿领域之后「截止到24年6月份,我司的七月论文审稿GPT已经迭代到了第五版,详见此文的8.1 七月论文审稿GPT(从第1版到第5版)」,在业界的影响力越来越大,所以身边朋友如发现业界有相似的工作,一般都会第一时间发给我,比如本部分要介绍的康奈尔大学的reviewer2 当然,我自己也会各种看类似工作的论文,毕竟同行之间的工作一定会互相借鉴的,我们会学他们

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

【python】python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 python葡萄酒国家分布情况数据分析pyecharts可视化(源码+数据集+论文)【独一无二】 目录 python葡

论文阅读--Efficient Hybrid Zoom using Camera Fusion on Mobile Phones

这是谷歌影像团队 2023 年发表在 Siggraph Asia 上的一篇文章,主要介绍的是利用多摄融合的思路进行变焦。 单反相机因为卓越的硬件性能,可以非常方便的实现光学变焦。不过目前的智能手机,受制于物理空间的限制,还不能做到像单反一样的光学变焦。目前主流的智能手机,都是采用多摄的设计,一般来说一个主摄搭配一个长焦,为了实现主摄与长焦之间的变焦,目前都是采用数字变焦的方式,数字变焦相比于光学

【LLM之KG】CoK论文阅读笔记

研究背景 大规模语言模型(LLMs)在许多自然语言处理(NLP)任务中取得了显著进展,特别是在零样本/少样本学习(In-Context Learning, ICL)方面。ICL不需要更新模型参数,只需利用几个标注示例就可以生成预测。然而,现有的ICL和链式思维(Chain-of-Thought, CoT)方法在复杂推理任务上仍存在生成的推理链常常伴随错误的问题,导致不真实和不可靠的推理结果。

【python】python基于akshare企业财务数据对比分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设计思路三、可视化分析 一、设计要求 选取中铁和贵州茅

AIGC-Animate Anyone阿里的图像到视频 角色合成的框架-论文解读

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 论文:https://arxiv.org/pdf/2311.17117 网页:https://humanaigc.github.io/animate-anyone/ MOTIVATION 角色动画的

【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【python】python股票量化交易策略分析可视化(源码+数据集+论文)【独一无二】 目录 【python】pyt