0%

Generating Responses with a Specific Emotion in Dialog

摘要以及引言

人类拥有独特能力能够察觉到复杂,有细微差别的情绪,也拥有使用语言与他人交流这些体验的独特能力。尽管近些年的研究(...)提供了大量的证据,证明系统能够表达情感可以很大程度上提高用户的满意程度,但是对于制作一个产生更情绪化回复的对话系统来说,仍旧具有很大的挑战。

在早期的表征工作中,人工地准备一些规则,即有意地从语料库中选择一些需要的“情绪化”回复。在语料库中进行精心地调查后,这些规则由这方面的专家编写,但是这使得复杂多变的情感难以表达,并且难以很好地扩展到大型数据集。早期的情绪表征工作

最近,seq2seq 被用于构建对话模型。ECM 也由 Zhou et al(2018) 提出解决情绪表达的问题。然而还是遭受到了不小的困难。

语言在情感中扮演了重要的角色。正如表 1 所示,我们发现至少有两种方式可以将情感填入单词之中。一个是明确地(explicit)使用强烈的情感词汇来描述情绪状态(emotion states),例如“anger”,“disgust”,“contentment”,“joy”,“sadness”等;另一个是增强情感表达的强度,与之前的不同,它不是通过情感词汇,而是在某种情感上含蓄地(implicit)组合各种中性词。(博主注:如果无法理解,可以看原论文中的表一,它提供了例子)

在本项研究中,我们提出一个情感对话系统(emotional dialogue system,EmoDS),它可以以明确或者含蓄的方式,将一种特定的情感表达到具有连贯结构的词汇中我们使用一个基于字典的 attention 机制(lexicon-based attention mechanism)扩展 seq2seq 模型,这对使用情绪字典中的同义词替换回复中的单词有促进作用。回复生成步骤将由序列级别的情绪分类器指导,它不仅可以增强情绪表达的强度,还有助于识别不包含任何情绪单词的情绪化语句。我们还提出了一个半监督的方法去创建一个情绪字典,它是一个相对“准确”的情绪状态表征。实验结果显示了 EmoDS “厉害”。

相关工作

先前的工作报道对话系统有情感可以增强用户的满意程度。但是所作的工作大都是人工制定的规则,它们都是由受过训练的专家进行撰写。这很难处理复杂的语句,并且很难扩展到大规模的数据集中。

RNN 及其在 seq2seq 中的应用,可以用于创建聊天机器人。早前的研究,也在企图避免其产生无聊、枯燥的回复。

最近。。。

Method

问题定义

给定一个 \(X = {x_1, x_2, \cdots, x_M}\) 和一个情绪类别 \(e\),目的是生成回复 \(Y = {y_1, y_2, \cdots, y_N}\),其中 \(x_i, y_j \in V\)\(V = V_g \cup V_e\) 是一个词表,其中 \(V_g\) 是通用词表,\(V_e\) 是情绪字典。并且需要 \(V_g \cap V_e = \emptyset\)。字典 \(V_e\) 还会进一步分为 \(V^z_e\),其中的每个单词都会被划分为一个情绪类别 \(z\)

Dialogue System with Lexicon-based Attention Mechanism

介绍 seq2seq介绍 lexicon-based attention mechanism(这个实际上就是普通的 attention);EmoDS 的架构如图 1 所示。

介绍 seq2seq 是如何做的

decoder 使用前一个预测单词和情绪词更新隐藏状态 \(s_j\),具体公式如下所示: \[s_j = LSTM_{decoder}([Emb(y_{j-1}); e_j], s_{j-1}) \]

其中情感向量 \(e_j\) 由给定类别 \(z\)\(V^z_e\) 中的词嵌入加权和计算得到: \[ \begin{align} e_j & = \sum_k a_{jk} \cdot Emb(w^z_k) \\ a_{jk} & = \frac{exp(c_{jk})}{\sum^{T_z}_{t=1} exp(c_{jt})} \\ c_{jk} & = Sigmoid(\alpha^T h_M + \beta^T s_{j-1} + \gamma^T Emb(w^z_k)) \end{align} \]

为了把情绪单词植入回复中,我们估计了两种概率分布。一是,给定情绪类型 \(z\),在 \(V^z_e\) 中每个情绪词 \(w^e\) 上计算概率分布 \(P_e(y_j = w^e)\);二是,在 \(V_g\) 中所有通用词汇上计算概率分布 \(P_g(y_j = w^g)\)\[ \begin{align} P_e(y_j = w^e) & = Softmax(W_e s_j) \\ P_g(y_j = w^g) & = Softmax(W_g s_j) \\ \sigma_j & = Sigmoid(v^T s_j) \\ y_j \sim P(y_j) & = \begin{bmatrix} \sigma_j P_e(y_j = w^e) \\ (1 - \sigma_j) P_g(y_j = w^g) \end{bmatrix} \end{align} \]

其中 \(sigma_j in (0, 1)\) 是一个类型选择器,控制生成通用词或情绪词的权重,\(W_e, W_g, v\) 是可学习的参数。attention 机制有助于在正确的时间步上,将想要的情绪词放进回复,这使得有希望生成特定情绪的回复。每个样本的损失函数被定义为最小化交叉熵函数。

Emotion Classification

Training Objective

总的训练目标被分为两部分:生成损失和分类损失。即 \(L = L_{MCE} + \lambda L_{CLA}\)\(\lambda\) 控制生成损失的相对重要程度,相对于分类项来说。

Diverse Decoding Algorithm

Li et al. (2016c) 发现大多数由传统集束搜索产生的 N 个最优回复是类似的,因此我们提出一种 diverse decoding 算法来培养回复生成中的多样性。我们强制 N 个候选回复中的开头单词必须是不同的,然后模型继续通过贪婪解码策略生成回复。最终,我们选择 N 个候选回复中,情绪分数最高的回复。候选回复由 emotion classifier 进行评分。