0%

I kown the feeling: Learning to converse with empathy

论文地址,论文作者为 Rashkin et al.,发表于 2018 年。本文发布了一个情绪对话数据集。

我突然发现作者还有另一篇论文,与这篇几乎一模一样。

摘要与引言

对话代理的一个挑战是识别交谈对象的感受并且相应地做出回应,这一领域难做的原因是缺少合适、公开、可用的情绪(emotion)、对话(dialogue)数据集。本文提出一个新的移情对话生成(empathetic dialogue generation)任务以及一个移情对话数据集。与其他仅在大规模互联网对话数据上训练的模型相比,本实验表明使用此数据集训练的对话模型,由人类评测后被认为更具有同情心,同时在其他的指标上也有所改进(如 BLEU)。

Related Work

对情绪的良好反应需要全面覆盖人类的表达。现有多种协议企图组织出一个情绪谱(spectrum of emotions),包括从来自生物反应的少数基本情绪(Ekman, 1992; Plutchik, 1984),到从上下文状态推理出的大规模细微情绪(Skerry & Saxe, 2015)。我们融合多种标注协议的情绪,有一点需要注意,在对话场景中,仅从一个情景中就能推断出的情绪是很重要的。

分布式表征在当前一流的情绪分类模型中是其核心(一些论文),例如 emojis or hashtags,它们都采集自 twitter 上的公共媒体内容。SEMEVAL2019 EmoContext 挑战也是使用对话数据探测三种基本情绪。虽然公开的对话数据具有自发性(而非诱导性)数据的优点,但是它还有两个缺点:1)总的来说就是人们在公开的平台上总是表达更完美的自己,在私下才会表达更强烈的负面情绪;2)Twitter 通常限制为 140 个字符,这并不适用于一般的对话。本项工作试图产生覆盖情绪更平衡的内容,这更接近我们的终极目标,即培养出一种能够对任何情绪做出反应的对话。

一些相关工作

Taking about personal situations

我们考虑一个开放域一对一的对话背景,即两个人在某种情形下交流,一人在谈论另一人身上发生的事。这导致一种给定感觉的体验。介绍数据集的构成

Emotional situation grounding

每个对话都基于一种情境(situation)。在给定情绪标签的情况下,参与者写下这一情境。图 2 罗列出了 32 种情绪类别,该集合的灵感来以前的数据集一些论文),我们将它们整合到了一起。

Speaker and Listener

写下情境描述的人(Speaker)开始一场对话。另一个对话参与者(Listener)通过 Speaker 所说的内容意识到潜在的情境,并作出回复。文中的模型是在 Listener 回应 Speaker 的环境下(博主注:即 Speaker 的输入已知,需要生成 Listener 的回复)进行测试的。但是该数据集也可以被用于为 Speaker 生成对话。

采集细节

雇佣了 810 名美国工作者。每一对工作者被要求:1)分别选择一个情绪词(emtion word)并且描述他们体会到的一个情景(situation);2)分别对每一个情景进行一场对话。

任务设置

任务的第一阶段,要求工作者根据情绪标签用 1-3 句话描述一个情境。平均每个情境描述 19.8 个字。第二阶段,两名工作者互相聊天。每次对话被限制为 4-8 句长(平均每次对话 4.31 句),平均每条语句长 15.2 个字。 并且确保了情绪平衡的覆盖。

EMPATHETICDIALOGUES dataset statistics

包含 24850 条对话,收集自 810 个不同的参与者,它们将可以通过 ParlAI 在网上公开可用。对话大于被分割为 80% 训练集,10% 验证集,10% 测试集,实际为 19533/2770/2547。数据集的比例

Empathetic Dialogue Generation

本节描述我们的数据集是怎么能够使得普通的闲聊模型更具同情心(empathetic)的,与其他现存模型不同,它能够生成更具有移情能力的回复。我们让模型扮演 Listener 的角色来训练和评估模型。在测试阶段,对话模型可以访问对话前一句的句子,但是不能访问情绪词提示(例如“proud”),也不能访问由 Speaker 生成的情境描述博主注这可能是因为在真实的场景下,无法获取到用户的情绪,也无法得到情境。此外这是否意味着训练和评估的时候可以访问?给定 \(n\) 句之前的对话语句,定义为对话上下文 \(x\),并拼接以及标记成 \(x_1, \cdots, x_m\)。然后是生成的目标(target)回复 \(\bar{y}\),我们的模型最大化目标回复的似然估计 \(p(\bar{y} | x)\)。我们分别调查了生成和检索(retrieval)的设置。

基本架构

模型基于 Transformer。

Retrieval:给定一个候选回复的大型集合 \(Y\),让模型去选择最好的那个 \(y^*\)。我们首先在基于 Transformer 的检索架构(Yang et al., 2018)上做实验。我们也在 BERT 上做了实验。在训练的时候,我们将来自同一批次的所有语句作为候选回复,批次大小设置为 512,这样可以给模型更多负例。(BERT 用了 256)。在推理的时候,我们选择了三个候选回复集合,它们收集自:ED 训练集中的所有回复语句 \(Y^ED\);DailyDialog 中的所有语句 \(Y^DD\);一百万条语句 \(Y^R\),它们来自拥有 17 亿条数据的 Reddit 对话数据集。

Generation:Transformer decoder 使用 encoder 的输出去预测一系列单词 \(y\),最小化生成序列 \(\bar{y}\) 的负对数似然。在推理阶段,我们使用来自 Vijayakumar et al. (2016) 的 diverse beam search。

Training Details:先使用 17 亿的 Reddit 对话数据进行预训练,使用 Transformer 或者 BERT-base 从头开始训练。具体参数参考论文,不做赘述。Transformer 使用 Fasttext 预训练词向量,对于 BERT,使用在 BooksCorpus 和 English Wikipedia 上预训练出来的词向量。

利用来自ED的训练数据

基于检索的模型依赖候选对象。我们的数据明确地指定需要有同情心,以一对一对话的背景,这意味着不同于用于预训练的 Reddit 对话数据集,这些领域的候选对象也许比通用的对话更适合移情反应。因此,我们的实验直接将 ED 候选对象直接放入在推理时使用的候选池中,而不对 ED 进行微调检索模型的候选池还使用了 ED 数据

对基于检索的模型和基于生成的模型我还使用微调过的预训练模型,去预测下一条句子,其中对话上下文是前 4 句话的窗口,这是我们数据集中对话的平均长度。在文章中,使用此方法的模型被称为 “File-Tuned” 模型。除了模型中的预训练步骤,此微调步骤会在所有建构中被一直使用,直到模型收敛使用 ED 进行微调

Adding Information From External Predictor

许多现存的模型已经在监督任务上训练好了,这些模型也许与移情回复有关。例如预测 tweets 的 emoji 标签。这些模型与我们的基础架构的表征结合,也许可以取得收益。