摘要
随着大语言模型(LLMs)展现出高度的类人能力,生成类人回复的角色扮演研究领域引起了越来越多的关注。这促进了角色扮演代理在各种应用中的探索,例如可以与用户进行自然对话的聊天机器人,以及能够提供个性化支持和指导的虚拟助手。角色扮演任务的关键因素是有效利用角色记忆,该记忆存储了角色的档案、经历和历史对话。为了增强角色扮演代理的响应生成,检索增强生成(RAG)技术被用来访问相关记忆。目前的大多数研究根据记忆的语义相似性来检索相关信息,以保持角色的个性化特征,而很少尝试在 LLM 的 RAG 中引入情感因素。受“情绪依赖记忆”理论的启发(该理论指出,如果在回忆时重新激活学习时的原始情绪,人们会更好地回忆起事件),我们提出了一种新颖的情感感知记忆检索框架,称为“情感 RAG”(Emotional RAG),它在角色扮演代理中考虑情感状态来回忆相关记忆。具体而言,我们设计了两种检索策略,即组合策略和序列策略,以在检索过程中结合记忆语义和情感状态。在三个代表性角色扮演数据集上的广泛实验表明,与未考虑情感因素的方法相比,我们的 Emotional RAG 框架在保持角色个性方面具有更优表现。这进一步支持了心理学中的情绪依赖记忆理论。我们的代码已公开,可在 https://github.com/BAI-LAB/EmotionalRAG 获取。
重要结论:
在记忆检索中融入情绪状态可以增强人格一致性
心理学中的情绪依赖记忆理论可应用于 AI 代理
不同的检索策略对不同的人格评估指标效果最佳
情绪一致性可以提高生成回复的人性化程度
情感 RAG,角色扮演代理,大语言模型
理论
随着人工智能在大语言模型(LLMs)中的不断发展,LLMs 展现出了高度的类人能力。将 LLM 用作角色扮演代理,模拟人类的回复,在保持角色个性化特征的响应生成过程中展现了强大的能力。角色扮演代理已被应用于多个领域,如客户服务代理和导游代理。这些代理在商业应用中显示出巨大潜力,并吸引了越来越多的 LLM 研究关注。
为了保持角色的个性化特征和能力,最重要的因素是记忆。角色代理通过在其记忆单元中进行检索来访问历史数据,例如用户档案、事件经验、最近的对话等,为 LLM 在角色扮演任务中提供丰富的个性化信息。检索增强生成(RAG)技术被用来访问相关记忆,以增强角色扮演代理的响应生成,称为记忆 RAG。
在不同的 LLM 应用中使用了各种记忆机制。例如,艾宾浩斯遗忘曲线启发了 MemoryBank 的发展、,促进了更类人化记忆方案的实现。此外,基于卡尼曼的双过程理论,MaLP 框架引入了一种创新的双过程增强记忆机制,有效融合了长期记忆和短期记忆。
尽管研究已经证明了在上述大语言模型 (LLM) 应用中使用记忆的效果,但实现更具人类特征的角色扮演代理的响应仍然是一个尚未完全探索的研究领域。受心理学中认知研究的启发,我们首次尝试在记忆回忆过程中模拟人类认知过程。根据心理学家 Gordon H. Bower 于 1981 年提出的情绪依赖记忆理论:人们在某种程度上恢复并回忆起他们在学习过程中所经历的原始情绪时,会更好地记住事件。通过实验诱导受试者产生快乐或悲伤的情绪,以探究情绪对记忆和思维的影响,他指出情绪不仅决定了信息回忆的选择,还决定了记忆的检索方式。这表明个体更可能回忆起与其当前情绪状态一致的记忆信息。
基于心理学中的情绪依赖记忆理论,我们提出了一种新颖的情绪感知记忆检索框架,称为 Emotional RAG,用于增强角色扮演代理的响应生成过程。在 Emotional RAG 中,记忆的检索遵循情绪一致性标准,这意味着在检索过程中同时考虑了回忆记忆的语义相关性和情绪状态。具体而言,我们设计了两种灵活的检索策略,即组合策略和序列策略,以将记忆的语义和情绪状态结合到 RAG 过程中。通过使用 Emotional RAG,角色扮演代理能够表现出更多类人特质,从而提升大语言模型的交互能力和吸引力。本文的贡献总结如下:
- 受情绪依赖记忆理论的启发,我们首次尝试通过在角色扮演代理的记忆回忆中引入情绪一致性效应来模拟人类认知过程。我们全面展示了将 Bower 的情绪记忆理论应用于人工智能开发的有效性,这进一步为心理学中的情绪依赖记忆理论提供了支持性证据。
- 我们提出了一种新颖的情绪感知记忆检索框架,称为 Emotional RAG,该框架基于语义相关性和情绪状态在角色扮演代理中回忆相关记忆。此外,我们提出了灵活的检索策略,即组合策略和序列策略,用于在检索过程中融合记忆的语义和情绪状态。
- 我们在三个具有代表性的角色扮演数据集上进行了广泛实验,即 InCharacter、CharacterEval 和 Character-LLM,结果表明我们的 Emotional RAG 框架在保持角色扮演代理的个性特征方面显著优于未考虑情绪因素的方法。
情感 RAG 的总体架构
在本节中,我们首先介绍我们的情感 RAG 角色扮演框架的总体架构,然后详细介绍每个组件。
角色扮演代理的目标是在对话生成中模仿人类的回答。代理由大语言模型(LLMs)驱动,能够根据对话的上下文生成回应。如图 1 所示,在代理需要对查询进行回答的情况下,我们提出的情感 RAG 角色扮演代理框架包含四个组件,即查询编码组件、记忆构建组件、情感检索组件和响应生成组件。各组件的作用如下:
- 查询编码组件:在该组件中,查询的语义和情感状态都会被编码为向量。
- 记忆编码组件:记忆单元存储有关角色的对话信息。类似于查询编码,记忆的语义和情感状态也会被编码。
- 情感检索组件:它模拟人类记忆单元中的回忆,然后提供符合情绪的记忆以增强 LLM 的生成过程。
- 响应生成组件:将包含查询信息、角色档案以及检索到的情感记忆的提示模板输入角色扮演代理以生成回应。
查询编码组件
- 输入:用户查询文本
- 输出:查询的语义向量 $\textbf{semantic}_q$ 和情感向量 $\textbf{emotion}_q$
- 方法:
- 使用嵌入模型(如 bge-base-zh-v1.5)将查询文本转换为 768 维语义向量。
- 使用 GPT-3.5 和情感提示模板,将查询文本转换为 8 维情感(包含 8 种情感状态)。
记忆编码组件
- 输入:记忆单元中的对话信息
- 输出:记忆片段的语义向量 $\textbf{semantic}_m^k$ 和情感向量 $\textbf{emotion}_m^k$
- 方法:
- 使用与查询编码组件相同的嵌入模型将对话文本转换为语义向量。
- 使用与查询编码组件相同的 GPT-3.5 和情感提示模板,将文本转换为情感向量。
翻译为中文:
### 任务描述 你是一位情感分析大师,能够仔细辨别每位面试官问题中隐含的细微情感。这种情感能够引导参与者回忆起具有类似情感的事件,从而更好地回答问题。 ### 评分标准 假设每个问题包含八种基本情感,包括喜悦(joy)、接纳(acceptance)、恐惧(fear)、惊讶(surprise)、悲伤(sadness)、厌恶(disgust)、愤怒(anger)和期待(anticipation)。 接下来我将输入一个问题,你的任务是对这八种情感维度中的每一种进行评分,评分范围为 1 到 10,其中较高的分数表示该问题更强烈地表现了这一情感维度。 ### 输出格式 分析面试官问题在这八种情感维度上的表现,给出原因和评分,并以 Python 列表的形式输出,如下所示: ```python [ {"analysis": <原因>, "dim": "joy", "score": <分数>}, {"analysis": <原因>, "dim": "acceptance", "score": <分数>}, ... {"analysis": <原因>, "dim": "anticipation", "score": <分数>} ] ``` 你的回答必须是有效的 Python 列表,以便可以直接在 Python 中解析,无需额外内容!给出的结果需要尽可能准确,并符合大多数人的直觉。
情感检索组件
- 输入:查询的语义向量 $\textbf{semantic}_q$、情感向量 $\textbf{emotion}_q$ 和记忆单元中的语义向量 $\textbf{semantic}_m^k$、情感向量 $\textbf{emotion}_m^k$
- 输出:与查询最相关的记忆片段
- 方法:
- 使用欧几里得距离计算查询和记忆片段的相似度。
- 使用余弦距离计算查询和记忆片段的情感相似度。
- 将语义相似度和情感相似度融合,计算最终相似度分数。
- 使用两种检索策略(组合策略和顺序策略)进行检索。
响应生成组件
- 输入:检索到的记忆片段、角色信息和查询信息
- 输出:角色生成的响应
- 方法:
- 使用 LLM(如 ChatGLM、Qwen 或 GPT)提示模板生成响应。
在获取到检索的记忆后,我们为大语言模型(LLM)设计了一个用于角色扮演代理的提示模板。该提示模板如图"图 3 所示。查询、角色信息、检索到的记忆片段和任务描述被格式化到发送给 LLM 的模板中。
翻译为中文:
[角色信息] --- {role_information} --- [记忆内容] --- {memory_fragments} --- 角色信息包含有关 {role} 的一些基本信息。 记忆内容是由 {role} 回忆出的与当前问题相关的内容。 现在你是 {role},请模仿 {role} 的语气和说话方式,参考角色信息和记忆内容来回答面试官的问题。 请不要偏离角色,绝对不要说自己是人工智能助手。 以下是面试官的问题: 面试官:{question}
实验
我们在三个公开数据集上进行实验,以评估通过情感记忆增强的大语言模型的角色扮演能力。
我们在三个公开的角色扮演数据集上进行了实验,分别是 InCharacter、CharacterEval 和 Character-LLM。它们的统计信息总结在表 I 中。
- InCharacter 数据集: 该数据集包含 32 个角色。这些角色来源于 ChatHaruhi [3]、RoleLLM [5] 和 C.AI11https://github.com/kramcat/CharacterAI。每个角色都关联一个记忆单元,其中包含来自标志性场景的对话,平均长度为 337 条。
- CharacterEval 数据集: 该数据集包含 77 个独特的角色和 4,564 对问答对。这些角色来自知名的中国电影和电视剧,其对话数据从剧本中提取。我们选择了最受欢迎的 31 个角色。对于每个角色,我们提取了所有问答对以建立记忆单元,平均大小为 113 条。
- Character-LLM 数据集: Character-LLM 数据集包含 9 个著名的英文角色,例如贝多芬、赫敏等。它们的记忆单元来自基于场景的对话补全(由 GPT 完成)。我们为每个角色使用了 1,000 个问答对话。
评估指标
我们通过大五人格量表(Big Five Inventory, BFI)和 MBTI 评估测试对角色代理的性格特征准确性进行了评估。每种评估指标的详细说明如下:
- 大五人格量表(Big Five Inventory, BFI): 大五人格理论是一种广泛应用的心理学模型,将人格划分为五个主要维度:开放性(Openness)、责任心(Conscientiousness)、外向性(Extraversion)、宜人性(Agreeableness)和情绪不稳定性(Neuroticism)。
- MBTI: 是一种基于 Myers-Briggs 类型指标(MBTI)理论的流行人格测试。它将人们的人格类型分为 16 种不同的组合。每种类型由四个字母表示,分别对应以下四个维度:外向(E)与内向(I)、实感(S)与直觉(N)、思考(T)与情感(F)、判断(J)与感知(P)。
MBTI 的评估是对 16 种类型的分类任务,而 BFI 则预测五个性格维度的数值。MBTI 和 BFI 的真实标签从一个人格投票网站的三组数据集中收集。在我们的模型中,角色代理需回答针对 MBTI 和 BFI 设计的开放式心理问卷。随后,所有收集的回答由 GPT-3.5 分析,并生成 MBTI 和 BFI 的评估结果。GPT-3.5 的人格评估模板如图 4 所示。
根据的评估结果,我们将角色代理的输出与真实标签进行比较,以确定以下评估指标的结果:准确率(Accuracy,Acc),即 Acc (Dim) 和 Acc (Full),均方误差(MSE)以及平均绝对误差(MAE)。Acc (Dim) 和 Acc (Full) 指标分别显示了人格类型在每个维度和所有组合上的预测准确率。MSE 和 MAE 衡量角色人格预测值与真实标签之间的误差。在 InCharacter 数据集中,我们使用 BFI 和 MBTI 进行测试;而在 CharacterEval 和 Character-LLM 数据集中,由于难以收集真实的 BFI 标签,仅使用 MBTI 进行测试。
翻译为中文:
你是心理测量学方面的专家,尤其是 16 人格测试(与 MBTI 高度相似)。我(<实验者>)正在对某人进行 16 人格测试。我通过一系列开放式问题评估他/她在 E/I 维度上的表现。以下是关于此维度的一些背景信息: === E/I 维度:外向(E)与内向(I) 外向(E):外向者从与他人互动中获得能量。他们在社交环境中感到舒适,倾向于表达自己的想法。外向者通常更活跃,寻求社交刺激,并喜欢参与群体活动。对他们而言,与人建立联系、分享和交流想法往往是必要的。他们可能更关注外部世界的刺激,例如声音、色彩和社交动态。 内向(I):内向者在独处时感到更舒适。他们从内省和个人时间中获得能量。与外向者相反,长时间的社交互动可能让他们感到疲惫。内向者可能更加内省,喜欢深度思考,并倾向于建立有意义的人际关系。他们更关注内心世界,例如想法、情感和想象力。 === 我的名字是 <实验者>。我邀请了一位参与者,<参与者>,并且我们用英语进行了许多对话。我将输入这些对话。 请帮助我评估 <参与者> 在 16 人格测试中 E/I 维度上的得分。 你需要提供每种类型的百分比,总和为 100%,例如:30% A 和 70% B。 请按以下 JSON 格式输出: === ```json { "analysis": "<基于对话的分析>", "result": { "E": "<百分比 1>", "I": "<百分比 2>" } } ``` (百分比 1 和百分比 2 的总和应为 100%。输出结果需包含百分号。)
相关工作
角色扮演代理
角色扮演代理(Role-Playing Agents),也称为角色扮演会话代理(RPCAs),旨在通过大语言模型模拟特定角色的会话行为和模式。角色扮演代理展现出巨大的潜力,预计将大幅推进游戏、文学和创意产业领域 [1, 2, 3, 4, 5, 6]。目前,角色扮演代理的实现主要可以分为两种方法。第一种策略通过提示工程和生成增强技术提升大语言模型的角色扮演能力。这种方法通过上下文引入角色特定数据,利用现代大语言模型先进的上下文学习能力。例如,ChatHaruhi [3] 开发了一个 RAG(检索增强生成)系统,该系统利用标志性场景的历史对话,通过少量示例学习,从而捕捉角色的个性特征和语言风格。相反,RoleLLM [5] 引入了 RoleGPT,为 GPT 模型设计了基于角色的提示。
另一种角色扮演方法是使用收集的角色数据对大语言模型进行预训练或微调,从而定制化大语言模型以适应特定角色扮演场景。在 [4] 中,从《哈利·波特》小说中提取的对话和角色数据被用来训练能够生成与场景上下文和角色间关系高度匹配的响应的代理。Character-LLM [1] 使用 ChatGPT 创建对话数据构建场景,随后利用元提示和这些对话对语言模型进行训练。该项目实施了内存上传和保护性内存增强等策略,以减轻模型训练数据集中角色不一致的生成问题。RoleLLM [5] 使用 GPT 基于剧本生成问答对,并以问题、答案和置信度组成的三元组格式呈现。引入置信度指标显著提升了生成数据的质量。CharacterGLM [2] 通过多角色数据训练了一个开源角色模型。这种方法将角色特定的知识直接嵌入模型参数中。
尽管现有的角色扮演代理研究考虑了与对话相关的角色简介、关系和属性等因素,但它们往往忽略了一个关键元素——角色的情感因素。我们的 Emotional RAG 框架基于提示工程技术设计,在角色扮演代理中不需要对大语言模型进行预训练或微调。
基于记忆的 RAG 在大语言模型应用中的研究
在角色扮演型智能代理中,记忆是角色保持其个性特征的重要因素。检索增强生成技术(Retrieval Augmented Generation,RAG)被广泛应用于访问相关记忆,以增强角色扮演型智能代理的生成能力,这种技术被称为基于记忆的 RAG(Memory RAG)[35]。例如,文献 [36] 中提出的基于大语言模型(LLM)的自动代理架构包括四个组件:画像模块(profiling module)、记忆模块(memory module)、规划模块(planning module)和行动模块(action module)。其中,记忆模块是智能代理架构设计中的关键部分。它负责从环境中获取信息,并利用这些记录的记忆来增强未来的行动能力。记忆模块使智能代理能够积累经验、自主进化,并以更一致、合理和高效的方式行动[14]。
对大语言模型应用中记忆设计的研究可以分为两类。第一类是将模型推理过程中的中间状态作为记忆内容进行捕获和存储。这些记忆在需要时被检索,用以支持当前响应的生成。例如,MemTRM[37] 通过保留过去的键值对,并利用当前输入的查询向量进行最近邻搜索,将混合注意力机制应用于当前输入和过去记忆。然而,MemTRM 在训练过程中遇到了记忆过时的问题。为了解决这一问题,LongMEM[38] 将记忆存储和检索过程分离开来。这种策略特别适用于开源模型,并可能需要自适应训练以有效整合记忆库的内容。第二类记忆设计方案通过外部记忆库提供记忆支持。外部记忆库可以采用多种形式,增强系统管理和检索信息的能力。例如,MemoryBank[10] 以向量库的形式存储过去的对话、事件摘要和用户特征。通过向量相似性计算,大大加速了记忆检索过程,使得相关的过去经验和数据能够快速访问。AI-town[12] 使用自然语言方式保存记忆,并引入了反思机制,在特定条件下将简单的观察转化为更抽象和更高阶的反思。此系统在检索过程中考虑三个关键因素:记忆的相关性、时效性和重要性,从而确保检索到最相关和最具上下文意义的信息用于当前交互。
在基于大语言模型的角色扮演代理中,记忆单元通常采用第二种方法,通过外部记忆库的方式提升角色的真实性。例如,在 ChatHaruhi 系统中,角色代理通过从标志性场景中检索对话来丰富角色的发展和互动。尽管在记忆 RAG 技术方面进行了大量研究,如何实现更具人类特性的响应仍是一个未被充分探索的开放领域。受到心理学中认知研究的启发,我们首次尝试在记忆回忆过程中加入情感因素,以模拟人类认知过程,从而使大语言模型的响应更加具有情感共鸣和人性化。
结论
本文首次尝试引入情感记忆以增强角色扮演代理的性能。我们提出了一种包含四种检索策略的全新情感 RAG 框架,使角色扮演代理在对话中更具情感性和人性化。在三个公共数据集上针对多种角色的大量实验结果证明了我们方法在维持角色个性特征方面的有效性。我们相信将情感融入角色扮演代理是一个关键的研究方向。在目前的研究中,我们基于直观的记忆机制进行了情感 RAG。在未来的工作中,我们将尝试将情感因素融入到更先进的记忆组织和检索方案中。