论文阅读_训练大模型用于角色扮演

news2024/9/21 22:46:47
英文名称: Character-LLM: A Trainable Agent for Role-Playing
中文名称: 角色-LLM:训练Agent用于角色扮演
文章: [https://arxiv.org/abs/2310.10158](https://arxiv.org/abs/2310.10158)
作者: Yunfan Shao,  Linyang Li,  Junqi Dai,  Xipeng Qiu
机构: 复旦大学计算机学院
日期: 2023-11-16
引用次数: 5

1 读后感

论文的目标是使用模型来模拟具体的人物角色,这个想法很有意思,有点类似于反思过程的逆向操作。反思的过程是从具体到抽象,我们根据生活中的具体场景和事件进行思考,通过层层抽象最终形成对一个人的理解。而角色扮演则相反,例如模拟一个历史人物,首先从维基百科获取这个人的信息,这些信息通常是抽象的,需要将这些抽象内容具体化,场景化,使其变成鲜活的经历,然后用这些经历来训练模型。

在从具体到抽象的过程中,数据量逐渐减少,因此可以使用提示,有限的上下文就足够支持;而在文中提出的从抽象到具体的扩展过程中,数据量逐渐增多,使用提示就会比较困难,也需要更多的资源,因此作者考虑使用这些新数据来训练模型,通过精调模型的方式来解决问题。

另一个有趣的点是,为了保持角色的完整性,需要让大模型忽略一些角色不应该拥有的知识,例如贝多芬不应该懂得编程。作者通过创建对话的方式来引导确定角色的知识范围,从而创建数据供大模型训练。这种攻防交替的过程有点像“左右互搏”。

我认为,这种逆向思维非常有意思。另一个小发现是:我们可以考虑利用大模型进行一些细化和扩写的工作,比如根据贝多芬的简介写一本贝多芬的故事。

换一个角度看,如果我们能记录一个人的日常生活,可能就能训练出一个能够模拟他的机器人。

2 摘要

目的:利用大模型的理解能力和文本生成能力,来模拟一个人。

方法:教大模型扮演特定的人,如贝多芬、凯撒大帝等。方法侧重于根据特定角色生成训练数据,训练模型模拟这个人。

实验:对训练过的模型代理进行访谈,并评估代理是否记住了他们的角色和经历。

3 引言

之前的实验提出了一个创新的想法,即使用语言模型来模拟人类的日常行为,如起床、做早餐、上班等。这个想法的核心是利用 LLMs 模拟人类的记忆、反思和行动,以生成多人的日常生活场景,实现这一目标的具体方法是通过提示工程。然而,当需要深入模拟一个人的思考和经验时,简单的提示可能就不再足够。一个更为理想的模拟方式是精细调整人工智能模型,让其能够体验事件、感受情绪,并记住与他人的互动。

文中提出了 Character-LLM,一种可训练的角色扮演 Agent,可以从实际经验、特征和情感中学习。

首先,收集某个人物的经历;然后,根据收集到的个人经历提取出场景,作为记忆的闪回;接着,我们将这些闪回扩展成具体的场景,并为这些场景添加详细的元素,使模型能够从详细的经验中学习,从而形成特定的性格和情感。例如,在论文中,作者构建了描述贝多芬父亲的场景,他是一位音乐家,对年轻的贝多芬进行了严格的教育。

最后,将这样的经验输入到特定的语言模型中,例如 LLaMA 7B 模型,并采用监督微调的策略来构建 Character-LLM。为了避免出现诸如古代著名人物的角色扮演代理拥有现代世界知识等不合理的情况,还引入了“保护经验”的概念,以确保角色的一致性。

图 1:Character-LLM. 首先从可靠的来源为这个角色策划了个人资料(以贝多芬为例)。然后,使用以下指令从这些配置文件中引出详细的体验 LLM 作为闪回场景。通过使用体验上传从这些场景中学习,训练有素的模拟可以像贝多芬一样进行高度可信的互动。

最后,通过新颖的面试流程测试这些角色模拟。来评估评角色扮演效果。结果表明,文中提出的 Character-LLMs 是基于其训练数据的成功模拟。得出结论:

  • 可训练的智能体在记忆经验和保持宿主的个性方面很有前途;
  • 可训练的智能体仍然受到有限经验和全局知识的影响,可能会将他们的记忆与幻觉混淆。

文章贡献如下:

  • 提出通过 Character-LLM 构建可训练智能体作为角色扮演的想法。
  • 提出一个训练框架,包括经验重建、上传和保护经验,以训练模拟使用 LLMs。
  • 提出评试角色智能体的方法。

4 方法

根据过去的经历和事件培养个性的方式中汲取灵感。让大型语言模型模仿预定义角色的心理活动和身体行为,从重建的场景中,获得扮演他们的能力。

图 2:角色模拟专用基础模型的机制。

4.1 构建经验数据集

使用大型语言模型重建特定个体的体验。人类的经历是高度复杂的,包括许多重要的里程碑,其中穿插着琐碎和不相关的事件,通常跨越相当长的时期。文中提出了一个基于事实的体验重建管道,分为下面三部分。

4.1.1 Profile 简介

组织一个描述人物各个方面的综合角色档案。描述全面介绍了角色的整体信息和重大事件,涵盖了从幼儿期到最后阶段。具体方法是:使用个人的相应维基百科页面作为个人资料。

4.1.2 Scene 场景

角色互动展开的特定场景,包括交互的时空背景以及所涉及的人物。具体方法是简要描述了角色在特定生命时期的经历之一,让 LLM 根据经历描述列举出几个极有可能发生的不同场景,输出限制为生成场景的简明描述。

4.1.3 Interaction 互动

生成角色的认知过程、话语或动作。所有交互都以纯文本表示。将场景扩展到个人之间的详细交互体验,提示通过 LLM 结合角色之间的互动以及目标个人的想法来详细说明场景。生成的交互由一系列块表示,每个块代表特定角色的话语或目标个体的反映。这里仅关注角色的反应,而不是所有角色的反应,以免训练时产生混淆。

4.2 防护

大型语言模型有跨越多个领域的广泛知识。而过多的知识会破坏表演的可信度,角色可能会无意中表达与角色身份和时代不符的知识。例如,古罗马人不应该会写程序,文中将这个问题称为性格幻觉。

当面对超出角色内在能力界限的问题时,模型应学会避免提供答案。具体方法是:构建一个好奇的角色坚持不懈地向目标角色询问与角色固有身份相矛盾的知识,角色应该表现出无知和困惑。

4.3 上传经验

对于每个角色,仅使用来自相应角色体验的数据来微调单独的模型。由于成本限制,只使用小规模的体验数据集(由大约 1K 2K ∼ 场景组成)进行微调。

5 实验

5.1 数据

表 1:角色及其对应的建构体验数据统计。

5.2 训练

将 LLaMA 7B 作为基础模型,微调了每个角色。在每个示例的开头插入一个元提示。每个示例的提示中都会实例化简明描述,以提供场景的环境、时间、地点和相关人员的背景。附录 C 中列出了一些培训示例。使用 8 个 × A100 80GB GPU 训练一名代理大约需要一个小时。

5.3 面试评估

利用模型建立面试场景,旨在探究他们在上述方面的表演能力和潜在缺陷。评估包括每个角色的 100 多个多样的单轮面试和多轮面试。

单轮面试:一次问模型一个问题,不包括前面问题的对话历史。

多轮面试:多轮对话,利用 ChatGPT 作为面试官,引导 ChatGPT 根据角色的简介提出尖锐的问题。如果模型通过说一些没有太多细节的话来回避问题,ChatGPT 面试官会提出后续问题,从而对模型的演技熟练程度进行更深入的评估。

表 2:单轮和多轮访谈收集的问题数量。

基线:Alpaca 7B,Vicuna 7B 和 ChatGPT。

5.4 主要结果

图 4:性格、价值观、记忆、幻觉和稳定性 不同维度的评估结果。

6 分析

6.1 与角色的一致性

相对于基线模型,角色模型会用他父亲如何教育他的记忆和情感来回答,这更接近于真正的人类。文中认为体验重建和上传过程有助于构建更接近的角色。

6.2 保护场景

少量的保护场景(每个角色少于 100 个场景)有效地缓解了幻觉,而不会对刻画的其他能力造成干扰。

(文章最后还列出了具体数据示例)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1381476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用numpy处理图片——分离通道

大纲 读入图片分离通道堆叠法复制修改法 生成图片 在《使用numpy处理图片——滤镜》中,我们剥离了RGB中的一个颜色,达到一种滤镜的效果。 如果我们只保留一种元素,就可以做到PS中分离通道的效果。 读入图片 import numpy as np import PIL.…

【UE Niagara学习笔记】04 - 火焰喷射时的黑烟效果

目录 效果 步骤 一、创建烟雾材质 二、添加新的发射器 三、设置新发射器 3.1 删除Color模块 3.2 减少生成的粒子数量 3.3 设置粒子初始颜色 3.4 设置烟雾的位置偏移 3.5 设置烟雾淡出 在上一篇博客(【UE Niagara学习笔记】03 - 火焰喷射效果&#xf…

【开源】基于JAVA+Vue+SpringBoot的医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

5文件操作

包含头文件<fstream> 操作文件三大类&#xff1a; ofstream : 写文件ifstream &#xff1a;读文件fstream : 读写文件 5.1文本文件 -文件以ascii的形式存储在计算机中 5.1.1写文件 步骤&#xff1a; 包含头文件 #include "fstream"创建流对象 ofs…

【Linux运维】LVM和RAID学习及实践

LVM和RAID学习及实践 背景LVM简介新加硬盘的操作RAID-磁盘阵列应用场景RAID0RAID1其他结构RAID制作RAID 小结 背景 某台服务器的磁盘管理需要自己动手处理&#xff0c;找了一些资料也踩了一些坑&#xff0c;在这里记录一下&#xff0c;先介绍一下LVM和RAID这两个东西。在计算机…

Java实现在线编辑预览office文档

文章目录 1 在线编辑1.1 PageOffice简介1.2 前端项目1.2.1 配置1.2.2 页面部分 1.3 后端项目1.3.1 pom.xml1.3.2 添加配置1.3.3 controller 2 在线预览2.1 引言2.2 市面上现有的文件预览服务2.2.1 微软2.2.2 Google Drive查看器2.2.3 阿里云 IMM2.2.4 XDOC 文档预览2.2.5 Offic…

逆变器3前级推免(高频变压器)

一节电池标压是在2.8V—4.2V之间&#xff0c;所以24V电压需要大概七节电池串联。七节电池电压大概在19.6V—29.4V之间。 从24V的电池逆变到到220V需要升压的过程。那么我们具体需要升压到多少&#xff1f; 市电AC220V是有效值电压&#xff0c;峰值电压是220V*1.414311V 如果…

ubuntu安装node

1 下载 node 官网下载 如果需要其他版本&#xff0c;点击上图的Other Downloads 这里下载的版本是20.11.0 Linux Binaries (x64)&#xff0c;下载下来后是node-v20.11.0-linux-x64.tar.xz这样的格式&#xff0c;直接右键解压得到如下目录&#xff1a; 直接拷贝该文件夹到指定目…

一些前端学习过程的自测练习题

目录 页面设计部分 1 设计一个简单的学院网站首页&#xff1b; 2.按照图示要求完成简单的登录页面 3.完成如下网站设计 4.完成如下网站设计&#xff08;练习页面布局&#xff09; 5 利用下面素材&#xff0c;设计一个满足H5规范的网页&#xff08;移动端页面练习&#xff…

有道云笔记编辑 Markdown 文件 - GitHub README.md

有道云笔记编辑 Markdown 文件 - GitHub README.md 1. 新建 -> Markdown2. GitHub README.mdReferences 1. 新建 -> Markdown ​ 2. GitHub README.md ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

group by 查询慢的话,如何优化?

1、说明 根据一定的规则&#xff0c;进行分组。 group by可能会慢在哪里&#xff1f;因为它既用到临时表&#xff0c;又默认用到排序。有时候还可能用到磁盘临时表。 如果执行过程中&#xff0c;会发现内存临时表大小到达了上限&#xff08;控制这个上限的参数就是tmp_table…

中通快递批量查询方法

你是否经常需要处理大量的中通快递单号&#xff0c;却苦于一个个等待查询&#xff1f;现在&#xff0c;有了固乔快递查询助手&#xff0c;这个问题迎刃而解&#xff01;通过批量查询功能&#xff0c;你可以轻松管理、追踪你的中通快递单号&#xff0c;大大提高工作效率。 一、下…

spark中Rdd依赖和SparkSQL介绍--学习笔记

1&#xff0c;RDD的依赖 1.1概念 rdd的特性之一 相邻rdd之间存在依赖关系&#xff08;因果关系&#xff09; 窄依赖 每个父RDD的一个Partition最多被子RDD的一个Partition所使用 父rdd和子rdd的分区是一对一&#xff08;多对一&#xff09; 触发窄依赖的算子 map()&…

提交代码,SVN被锁定,提示:svn is already locked解决方案

今天遇到一个问题&#xff0c;svn 在提交代码的时候出现了svn is already locked&#xff0c;解决方案如下图 点击clean up 点击ok即可 来看官方对clean up的解释&#xff1a;它的作用就是查找工作拷贝中的所有遗留的日志文件&#xff0c;删除进程中工作拷贝的锁。 参考&…

掌握 Vue 响应式系统,让数据驱动视图(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【MATLAB源码-第109期】基于matlab的哈里斯鹰优化算发(HHO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 哈里斯鹰优化算法&#xff08;Harris Hawk Optimization, HHO&#xff09;是一种受自然界捕食行为启发的优化算法。它基于哈里斯鹰的捕猎策略和行为模式&#xff0c;主要用于解决各种复杂的优化问题。这个算法的核心特征在于…

RuoYi-Vue-Plus 5.X登录前流程及解密

一&#xff1a;问题 1. 前端传给后端的是一个加密字符串&#xff0c;后端controller层login接口怎么就直接解密了呢&#xff1f; 2. 中间经过什么步骤到达的登录接口呢&#xff1f; 二&#xff1a;个人分析 首先考虑的是拦截器、过滤器、切面AOP&#xff1b; 1. 使用全文搜…

轻松查看WiFi密码的神奇脚本,让你忘记密码也不再是问题

说在前面 &#x1f388;本文介绍了一个便捷的脚本&#xff0c;可以帮助你获取电脑中保存的所有Wi-Fi网络的密码。不再需要担心忘记Wi-Fi密码或手动查找密码的麻烦&#xff0c;只需运行脚本即可一键获取。 一、引言 互联网的普及让我们离不开Wi-Fi网络&#xff0c;但忘记密码时…

如何有效提高矢量网络分析仪的动态范围

动态范围是网络分析仪&#xff08;VNA&#xff09;接收机的最大输入功率与最小可测量功率&#xff08;本底噪声&#xff09;之间的差值&#xff0c;如图所示&#xff0c;要使测量有效&#xff0c;输入信号必须在这些边界内。 如果需要测量信号幅度非常大的变化&#xff0c;例如…

ISO11898-闭环高速CAN网络 (125K~1Mbps)

ISO11898 标准的物理框图如下图 可理解为一个高速闭环 CAN 总线网络&#xff1b;CAN 闭环总线网络允许总线最大长度为 40m;最高速度为 1Mbps;可以看到总线的两端各有一个 120Ω 的电阻&#xff0c;此电阻作为阻抗匹配功能&#xff0c;以减少回波反射;节点就是不同的设备&#…