论文笔记:Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory

本文主要是介绍论文笔记:Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总所周知,许多对话系统的回复都比较单调或中性,降低了对话体验。而且,情感智能是人工智能至关重要的一部分,它能够感知,识别,理解用户的情感,并依此调节自身情感,给出符合情绪的表达。

该篇论文设计了一个情绪化的对话生成模型。该模型应用于开放领域对话系统,可以将情绪信息引入到对话生成模型中,根据情绪类别生成相应回复语句。模型接受单轮的对话上文,即可生成基于不同情绪类别的对话下文(也可以增加输入指定的情绪类别生成相应的单一情绪的回复下文)。

该模型使用了三个不同的机制来分别处理大规模对话生成任务中的情绪。分别为:

1、emotion embed:通过嵌入情感类别来模拟情绪表达的高级抽象。

2、internal emotion memory:捕捉内部隐含情绪状态的改变。

3、external emotion memory:使用带有外部情感词汇的明确的情感表达。

一、引言

在处理大规模对话生成任务的情绪因素问题上,主要面临三个调整:

1、情绪标注是一个非常主观的任务,因此情感分类比较困难。

2、很难以自然和连贯的方式考虑情绪,因为我们需要平衡语法和情绪表达。

3、仅仅用现有的神经模型来嵌入情感信息,不仅无法得到理想的回复,而且难以察觉一般表达式中的情绪。因为有些句子中的情绪相当含蓄,模糊或隐藏的很深。

为了使句子中的情绪表达更自然和连贯,作者设计了一个sequence-to-sequence模型,该模型采用了用于情感表达生成的新机制:

1、动态平衡语法和情感的内部情绪状态

2、帮助产生更明确的情感表达的外部情感记忆

该模型特点:该模型是数据驱动的,不依赖任何语言工具和定制化的参数;能建模输入post和response之间的多种情感交互。

情绪的感知与表达能力在对话领域中起到了至关重要的作用。Emotional Chatting Machine (ECM) 模型,将情绪信息引入到对话生成模型中,提升了对话中对情绪的表达能力并且使得生成的对话更为恰当,下图为本模型的总体框架:

ECM 的基础架构为 Encoder-Decoder 结构,在此基础上,为了引入可控的情感信息辅助生成,作者在 Decoder 部分加入了 Emotion Embedding, Internal Memory, External Memory 三个模块进行情绪的高维表示、内部状态建模以及生成情绪词的建模。这些模块可以在代码中进行使用和删去,以进行不同模块的训练和测试。

二、情绪分类器

为了获得大规模的有标签的情绪数据集,论文作者先利用人工标注的数据集(NLPCC2013 and NLPCC2014 dataset)训练了多个情感分类器,选择了其中效果最好的Bi-LSTM分类器。然后利用该分类器去标注STC数据集(Shang,Lu,and Li 2015),得到6类情感数据集。

 

该论文要解决的核心问题是:在给定一个post和response情感类别的情况下生成一个情绪化的回复。

有多种方式可以选择回复的情绪类别:给定聊天机器人个性化的知识和许多背景知识;另一种方法是使用训练数据为给定post中的情绪找到最频繁的响应情绪类别,并将其用作响应情绪

三、Emotion Category Embedding

在响应生成中对情绪进行建模的最直观方法是将要生成的响应的情绪类别作为附加输入。

对于每个情感类别e,随机初始化情感类别的向量V_{e}。将V_{e}和词嵌入e\left ( y_{t-1} \right )和上下文向量c_{t}一起输入decoder中更新decoder的状态s_{t}

四、Internal Memory

情感类别嵌入在生成过程中不会改变,这可能会牺牲句子的语法正确性。

在decoder过程开始前,每个类别都有一个内部情绪状态。在每一步,情绪状态都会衰减一定量。一旦decoder完成,情绪状态量应该衰减到0,表示情感是被完全表达的。

五、External Memory

内部情绪状态的变化与单词之间的相关性是隐含的,而不是直接可观察的。

句子中包含的情绪词的不同导致句子情绪表达也不同。例如:lovely和awesome相比于普通词person和day,有着更强的情绪表达。external memory模块通过给情绪词和普通词分配不同的产生概率来明确的建模情绪表达。

六、评估

ECM模型与基准模型在自动评价方法的实验结果如下:

ECM与基准模型对话样例如下:

 

总结:

该篇论文给我的启发就是智能的对话系统必须是带有情绪的,能针对不同的情绪给出不同的回复。在该任务中的一个难点就是情绪数据的标注问题,一千个人就有一千个哈姆雷特,每个人对同一句话的情感感受是不同的,这对分类器的性能影响很大。其次,该模型只是用于生产不同的情绪表达,但是并没有讨论最终该返回哪个情绪表达给用户。

这篇关于论文笔记:Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi