摘要
生成带有情感语言是构建具有共情能力的自然语言处理主体的关键一步。然而,这一研究路线面临的一个主要挑战是缺乏大规模的带标签的训练数据,之前的研究仅限于少量的人类标注情感标签。此外,明确控制生成文本的情感和情绪也是困难的。在这篇文章中,我们采取了一种更激进的方法:我们借用了Twitter数据的想法,这些数据自然地被贴上了表情符号的标签。
我们收集了大量的Twitter对话语料库,其中包括回应中的表情符号,并假设表情符号传达了句子的潜在情感。我们研究了几个关于这些对话的条件变分自动编码器训练,这些训练允许我们使用表情符号来控制生成的文本的情感。经我们定量和定性分析,实验结果表明,所提出的模型能够成功地生成符合指定情感的高质量抽象会话回复。
1 介绍
人工智能的一个关键研究问题是设计能够感知和产生人类情感的智能体。在过去的十年中,在情感分析(Pang等人,2002,2008;Liu,2012)和自然语言理解方面取得了重大进展,例如,对在线评论的情感进行分类。要构建具有同理心的会话代理,机器还必须具有学习生成情感化句子的能力。
其中一个主要挑战是缺乏大规模的、手动标记的情感化文本数据集。由于人工标注的成本和复杂性,以往的研究主要集中在小尺寸标注数据集上,这对于训练参数较多的深度学习模型并不理想。
近年来,在情感分析(Go等人,2016)和对话(Li等人,2007b)领域提出了少数中到大型的情感语料库。然而,它们都局限于一组传统的小标签,例如,“快乐”、“悲伤”、“愤怒”等。或者简单地二分为积极和消极。这种粗粒度的分类标签很难捕捉到人类情感的细微差别。
为了避免人工标注的成本,我们建议使用自然产生的富含表情符号的Twitter数据。我们使用Twitter会话中带有表情地回复构建了一个数据集。用户在回复中选择的细粒度表情符号可以被认为是回复语句情感的自然标签。
我们假设表情符号的情感和细微差别是通过推特用户的广泛使用而建立起来的。如果我们能创造出可以模仿Twitter用户使用这些表情符号的语言风格的智能体,我们就可以声称,在某种程度上,我们捕捉到了这些情感。使用大量的Twitter会话数据,我们训练了一个条件生成模型来自动生成情感反应。图1显示了一个示例。
要在对话中产生情感回复,另一个技术挑战是控制目标情感标签。与现有的使用信息检索来产生情感回复的工作(Huang等人,2017)不同,我们在本文中追求的研究问题是设计新的技术,可以产生任何给定任意情感的抽象回复,而不需要人类标注员来标记大量的训练数据。
为了控制回复的目标情绪,我们研究了几种编码器-解码器生成模型,包括作为基础模型的标准的基于注意力的SEQ2SEQ模型,以及更复杂的CVAE模型(Kingma和Wling,2013;Sohn等人,2015),因为最近发现VAE在对话生成中很方便(赵等人,2017年)。
为了明确地改善情感表达,我们随后对CVAE模型进行了几个扩展,包括一个带有策略梯度的混合目标。情感表达的表现由单独的句子到表情符号分类器自动评估。此外,我们还进行了人工评估来评定生成的情感文本的质量。结果表明,我们的方法能够大规模生成最先进的情感文本。我们的主要贡献有三个方面:
·我们提供了一个公开的、大规模的Twitter对话对数据集,这些对话对被细粒度的表情符号自然标注了。
·我们是第一个使用自然标记的表情符号来进对话中大规模情感回复生成的。
·我们应用了几个最先进的生成模型来训练情感化回复生成系统,分析证实了我们的模型提供了强大的性能。
在下一节中,我们将概述在Twitter数据上的情感分析和表情符号以及神经生成模型方面的相关工作。然后,我们将介绍我们新的情感研究数据集,并将任务形式化。接下来,我们将描述我们应用于该任务的神经模型。最后,我们将给出自动评价和人工评价的结果,以及一些生成的实例。实验细节可以在补充资料中找到。
2 相关工作
在自然语言处理中,情感分析(Pang等人,2002)是一个涉及设计理解情感文本算法的领域。我们的工作与最近一些关于使用富含表情符号的Twitter数据进行情感分类的研究是一致的。艾斯纳等人提出了一种训练情符号嵌入EMOJI2VEC的方法,并结合word2vec(Mikolov等人,2013年),将嵌入的表情符号应用于情感分类。DeepMoji(Felbo等人,2017年)与我们的研究密切相关:它利用一个大型的、自然标记的Twitter表情数据集,并训练一个专注的双向长期短期记忆网络(Hochreiter和Schmidhuber,1997)模型进行情感分析。我们的工作不是构建情感分类器,而是在给定上下文和目标表情符号的情况下,专注于生成情感响应。
我们的工作也与变分自动编码器(VAE)(Kingma and Wling,2013)在对话生成中应用的最新进展相一致。VAE(Kingma和Wling,2013)将数据编码为概率分布,然后从分布中采样以生成示例。但是,原始框架不支持端到端生成。条件VAE(CVAE)(Sohn等人,2015;Larsen等人,2015)被提出在生成过程中纳入条件选项。最近在对话生成方面的研究表明,由VAE模型生成的语言比传统的SEQ2SEQ模型(赵等人,2017年)拥有更大的多样性,这是构建逼真的对话主体更好的属性。
在对话研究中,我们的工作与使用长期短期记忆网络的序列到序列模型(Sutskever等人,2014)的最新进展保持一致。此模型的稍作更改的版本用作我们的基本模型。我们的修改使得它能够以单一的表情符号为条件。Li等使用强化学习算法来改进非面向任务的对话系统的普通序列到序列模型,但它们的强化模型及其后续对抗性模型(Li等人,2007a)也没有建模情感或条件标签。赵等人(2017)最近引入了条件VAE用于对话建模,但他们既没有对对话中的情感进行建模,也没有探索强化学习来改善结果。在给定对话历史的情况下,Xie et.的研究为当前的对话推荐了合适的表情符号。Xie et.2016)通过层次RNN将对话历史压缩为向量表示,然后通过分类器将其映射到表情符号,而在我们的模型中,原始推文的表示结合表情符号嵌入来生成回复。
3 数据集
我们首先描述我们的数据集以及收集和处理数据的方法。社交媒体是天然的对话来源,人们在帖子中广泛使用表情符号。然而,并不是所有的表情符号都用来表达情感,表情符号的使用频率并不均匀。受DeepMoji(Felbo等人,2017)的启发,我们使用64个常见的表情符号作为标签(参见表1),并收集了大量的Twitter对话语料库训练这些表情。请注意,只有肤色不同的表情符号被认为是相同的表情符号。
3.1 数据收集
2017年8月12日至14日,我们在Twitter上爬取了由原始帖子和回复组成的会话对。对话的回复必须包括至少64个表情符号标签中的一个。由于推特流媒体API的限制,推文是按词过滤的。在我们的例子中,只有在64个表情符号中至少有一个用作单词时,才能到达推特,这意味着它必须是由空格分隔的单个字符。然而,这类推文可以说更干净,因为经常会用这个表情符号来结束整个帖子,这样的推文中不太可能出现一簇簇重复的表情符号。对于原始tweet和回复,只允许没有多媒体内容(如URL、图像或视频)的英语tweet,因为我们认为这些内容与机器理解对话的文本本身一样重要。如果一条推文包含的字母单词少于三个,则该对话不会包括在数据集中。
3.2 表情符号标注
然后我们用表情符号给回复标注。如果一个回复中有多种表情符号,我们会使用回复中出现次数最多的表情符号。在那些出现频率相同的表情符号中,我们选择在整个语料库中出现频率最低的表情符号,假设频率较低的符号更能代表用户想要表达的东西。有关示例,请参见图2。
3.3 数据处理
在预处理过程中,所有at和标签都会被删除,如果标点符号和表情符号与单词相邻,则会将它们分开。带数字的单词都被视为相同的特殊标记。
在某些情况下,用户在集群中使用表情符号和标志来广泛表达情感。为了使数据规范化,包含两个以上重复字母的单词、包含一个以上重复标点符号或表情符号的符号串被缩短,例如,“!!!!”缩写为“!”,“Yessss”缩写为“Yess”。请注意,我们不会完全减少重复字母并将单词转换为“正确”拼写(在本例中为“yes”),因为重复字母的长度代表情感的强烈程度。通过区分“yess”和“yes”,我们的数据集中部分保留了情感强度。
然后,所有符号、表情符号和单词都被标记。最后,根据词频构建了20K大小的词汇表。词汇表之外的任何标记都将替换为相同的特殊标记。
我们将语料库随机分为596959/32600/32600对会话对,用于训练/验证/测试集。语料库中表情符号标签的分布如表1所示。
4 生成模型
在这项工作中,我们的目标是用表情符号标签指定的情感来生成对推文的情感回复。我们组装了几个生成模型,并在我们的数据集上对它们进行训练。
4.1 基础:基于注意力的seq2seq模型
传统的研究使用深层递归结构和编解码器模型来生成对话回复,将原始文本映射到目标回复。在这里,我们使用具有全局注意机制(Luong等人,2015年)的序列到序列(SEQ2SEQ)模型(Sutskever等人,2014)作为基础模型(见图3)。
我们使用随机初始化的嵌入向量来表示每个单词。为了具体对情感建模,我们用与计算单词嵌入的相同方法计算表情符号的嵌入。通过一个密度层将表情符号嵌入进一步缩小为更小的矢量Ve。我们将原始推文通过GRU单元的双向RNN编码器嵌入。编码器输出一个向量Vo表示原始推文。然后将Vo和Ve连接并馈送到GRU单元的1层RNN解码器。然后从解码器生成回复。
4.2 条件变分自编码器(CVAE)
具有类似的编码器-解码器结构,SEQ2SEQ可以很容易地扩展为条件变分自动编码器(CVAE)。图3显示出了该模型:回复编码器、识别网络和prior network被添加到SEQ2SEQ模型之上。回复编码器与原推特编码器结构相同,但参数不同。我们使用嵌入来表示Twitter回复,并通过回复编码器传递它们。
在数学上,CVAE是通过最大化给定c的x的条件似然的变分下限来训练的,根据以下公式:
z、c和x是随机变量。z是隐变量。在我们的例子中,条件c=[vo;ve],目标x表示回复。解码器用于近似p(x|z,c),表示为pD(x|z,c)。引入先验网络近似p(z|c),记为pP(z|c)。引入识别网络qR(z|x,c)来近似真实的后验概率p(z|x,c),在生成阶段将会消失。通过假设隐变量具有对角协方差矩阵的多元高斯分布,那么logp(x|c)的下界可以写为:
θD、θP、θ是这些网络的参数。
在识别/先验网络中,我们首先通过MLP传递变量,以获得z分布的均值和对数方差。然后,我们使用重参数化技巧(Kingma and Wling,2013)对隐变量进行采样。在训练期间,识别网络的z被传递给解码器,并且被先验网络训练成近似z'。
我们的CVAE继承了连接原始推文编码器和解码器的基本模型的注意机制,这使得我们的模型与以前的CVAE在文本数据上的工作有所不同。基于注意力记忆以及c和z,最终从解码器生成回复。
在处理文本数据时,采用递归神经网络作为其编码器/解码器结构的VAE模型可以首先学习忽略隐变量,并使用更容易优化的解码器来解释数据。隐变量失去了它的功能,VAE在数学上退化为一个简单的SEQ2SEQ模型。以往的一些方法有效地缓解了这一问题。这些方法对于保持KL损失和重建损失这两项损失之间的平衡也很重要。在我们的模型中,我们使用了KL退火、提前停止(Bowman等人,2015年)和词袋丢失(赵等人,2017年)的技术。词袋损失的一般损失(详见补充资料)重写为:
4.3 增强版的CVAE
为了进一步明确地控制我们这一代人的情绪,我们在上述CVAE的基础上结合策略梯度技术,提出了增强的CVAE模型。我们首先在我们的数据集上单独训练一个表情分类器,然后修复它的参数。分类器用于产生策略训练的奖励。它是双向GRU-RNN层的跳接模型。
在策略训练过程中,我们首先通过CVAE传递x和c来得到生成的回复x‘,然后将生成的x’反馈给分类器,得到表情标签的概率作为奖励R。设θ是我们网络的参数,增强算法(威廉姆斯,1992年)被用来最大化所产生回复的预期回报:使用似然比技巧来近似公式4的梯度。
r是保持估计无偏并减小其方差的基准值。在我们的示例中,我们直接通过表情分类器传递x,并计算表情标签为r的概率。然后,该模型鼓励生成R>r的响应。
由于强化目标与回复生成无关,可能会使生成模型迅速退化为一些一般性回复。为了稳定训练过程,我们提出了两种直接的技术来约束训练培训:
1.当所有标签按照表情分类器给出的概率从高到低排序时,根据表情标签的位置调整奖励。当某个表情标签的概率在所有可能的表情符号中排名较高时,我们假设模型已经成功地表达了情感,因此不需要向该回复中的概率更高的方向调整参数。修改后的政策梯度写成:其中α∈[0,1]是可变系数。在所有类型的表情标签中,R排名越高,α越接近0。
2.通过强化和变化下限目标的混合目标来训练增加版CVAE,向情感准确度和回复适当性学习:
λ是一个平衡系数,在我们的实验中设置为1。
描述增强版CVAE训练过程的算法可以在补充材料中找到。
5 实验结果与分析
我们进行了几个实验来最终确定我们模型的超参数(表2)。在训练过程中,使用完全收敛的基础SEQ2SEQ模型来初始化CVAE模型中的对应部分。预训练对我们的模型的成功至关重要,因为对于他们来说,从完全随机中学习隐变量空间本质上是困难的。更多细节请参考我们的补充资料。
在这一部分中,我们首先报告和分析了我们的模型的总体结果,包括困惑、损失和情感准确度。然后我们仔细看看生成质量以及我们的模型表达情感的能力。
5.1 总则
为了全面评估我们的模型的性能,我们使用了测试集的生成困惑度和top-1/top-5表情符号准确度。困惑度表示模型在生成回复时遇到的困难程度。我们也使用排名前5位的表情符号准确度,因为不同表情符号的含义可能会重叠,只是有细微的差异。机器可以学习该相似性并给出多个可能的标签作为答案。
请注意,我们使用相同的表情符号分类器进行评估。它的准确性(参见补充资料)可能看起来并不完美,但它是给出了这么多类别的最先进的表情符号分类器。此外,在训练中使用相同的分类器进行自动评估也是合理的,正如在(Hu等人,2017年)中所做的那样。只要分类器能够捕捉表情符号之间的语义关系,就可以得到有意义的结果。
如表2所示,CVAE显著降低了困惑度,提高了表情符号相对于基础模型的准确度。
增强的CVAE还增加了表情符号的准确度,但代价是困惑程度略有增加。这些结果证实了所提出的方法对于情感回复的产生是有效的。
收敛时,CVAE/增强CVAE的KL损失分别为27.0/25.5,重建损失为42.2/40.0。这些模型在这两项损失之间取得了平衡,证实了他们已经成功地学习到了一个有意义的隐变量。
5.2 生成多样性
SEQ2SEQ以一种单调的方式生成,因为几个通用回复重复发生,而CVAE模型的生成要多样化得多。为了展示这种差异,我们在生成的回复中计算了单字/双字/三字的类型符号比率作为多样性分数。
如表3所示,结果显示CVAE模型比基本模型有很大优势。
增强的CVAE的多样性分数是合理妥协的,因为它会产生更多的情感回复。
5.3 情感的可控性
潜在地有多种类型的情感作为对话语的回复。我们的工作使得通过特定类型的表情符号来产生对任意情感的回复成为可能。在本节中,我们生成一个回复,以回应数据集中的每个原始tweet和所选64个表情符号的条件。我们可能在数据集中记录了一些回复不同的原始推文,但是每个表情包只需要使用一次原始推文,所以我们在数据集中剔除了重复的原始推文。测试集中有30,299条独特的原创推文。
图4显示了当模型根据相同表情条件生成测试集回复时,前32个表情标签中每种类型的前5位准确度结果表明,CVAE模型提高了每种表情符号的准确度。强化的CVAE模型看到不太常用的表情符号增加更多,证实了表情符号指定的策略训练的效果。
5.4 人工评估
我们聘请了众包评委来评估随机抽样的100个项目(表4),每个项目都被分配给Amazon Mechanical Turk上的5名评委。
我们向评委展示原创推文和生成回复。在人工评估的第一个设置中,评委们被要求决定两个生成的回复中哪一个更好地回复了原始推文。在第二个设置中,表情标签上会出现相应描述,评委们被要求从两个生成的回复中选择一个,他们认为更适合这个表情。(这两种评估设置是分开进行的,因此不会影响评委的判决。)一个项目下的两个生成回复的顺序被置换。允许平均回答。我们将5个项目作为一个分配批处理,并插入一个具有两个相同输出的项目作为健全性检查。任何没有为该项目选择“平局”的人都被认为是粗心大意的判断,因此被我们的测试拒之门外。
然后我们进行了简化的图灵测试。我们提供的每个项目都会评判一条原始的tweet,它的回复是由人写的,它的生成回复是从增强的CVAE模型生成的。我们要求评委决定这两个回答中哪一个是人类写的。设置的其他部分类似于上述测试。结果发现,18%的测试对象错误地选择了机器生成的答案作为人类书写的答案,27%的人表示他们无法区分这两个答案。
有关评分员之间的一致性,有四种情况。最理想的情况是,所有五位评委对一个问题选择相同的答案,而在最糟糕的情况下,至少有两位评委选择相同的答案。有鉴于此,我们统计了所有项目中有32%/33%/31%/5%的项目有5/4/3/2的评委同意,表明我们的实验具有相当可靠的评分员间一致性。
5.5 案例研究
我们对来自所有三个模型的一些生成的回复进行了采样,并在图5中列出了它们。
给出一条原始推文,我们希望生成三种不同目标情感的回复。
SEQ2SEQ只选择生成最频繁的表达式,从而形成其生成的可预测模式(请参见基础模型的每个采样响应如何以“I‘m”开头)。相反,CVAE模型的生成是多样的,这与以往的定量分析是一致的。然而,生成的回复有时过于多样化,不太可能回复原始推文。
强化的CVAE有时会通过堆叠句子来产生冗长的回复(参见对第一条推文的回复,条件是“双手合十”表情和“悲伤的脸”表情)。由于变分下界目标与强化目标竞争,在混合训练过程中学习打破序列生成的长度限制。如果公式7中的λ设置得更高,情况会更严重。但是,如图5所示,这种现象并不会影响生成的句子的流畅性。
6 结论和下一步工作
在这篇文章中,我们调查了使用天然标注的富含表情符号的Twitter数据来生成情感响应的可能性。更具体地说,我们收集了超过50万条Twitter回复中带有表情符号的对话,并假设用户选择的细粒度表情符号标签表达了这条推文的情感。我们应用了几种最先进的神经模型来学习一种能够以任意指定的情感做出反应的生成系统。我们执行自动和人工评估,以了解生成的回复的质量。我们训练了一个大规模的表情分类器,并对生成的回复运行分类器,以评估生成回复的情感准确度。我们进行了一项Amazon MechanicalTurk实验,通过该实验,我们将我们的模型与基线序列对序列模型进行了比较,这些模型涉及相关性和情感的度量标准。实验表明,我们的模型能够产生高质量的情感响应,而不需要费力的人类标注。我们的工作是朝着建立智能对话体迈出的关键一步。我们也期待着将自然标记的表情符号的想法转化为面向任务的对话和多轮对话生成问题。由于社交媒体文本的性质,一些情绪,如恐惧和厌恶,在数据集中没有得到充分的体现,表情符号的分布在一定程度上是不平衡的。我们将不断积累数据,提高未被充分表达的表情符号的比例,并朝着更复杂的抽象生成方法前进。
知识扫盲:
KL散度:https://blog.csdn.net/weixinhum/article/details/85064685
VAE: https://zhuanlan.zhihu.com/p/25401928
CVAE: https://zhuanlan.zhihu.com/p/26898768
https://blog.csdn.net/lrt366/article/details/90637564
多元高斯分布、对角协方差矩阵:https://www.datalearner.com/blog/1051485590815771
Reparametrization tricks:https://www.cnblogs.com/initial-h/p/9468974.html
KL annealing: https://www.sohu.com/a/127853538_500659