论文阅读_训练大模型用于角色扮演
英文名称: 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 个场景)有效地缓解了幻觉,而不会对刻画的其他能力造成干扰。
(文章最后还列出了具体数据示例)
相关文章:

论文阅读_训练大模型用于角色扮演
英文名称: 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 机构: 复旦大学…...

v-if控制div内容显示,克隆这个div但是v-if没有效果
问题描述: 我的子页面打印的时候通过isPdf来隐藏“选择参加人员”按钮。 我子页面有个el-dialog,el-dialog里面有个大的div它的id为app-pre-meet-add,在子页面我通过isPdf来显示我想要的内容。现在我在父页面先通过this.$refs.child.control…...

flutter的状态管理学习
文章目录 1.flutter widget分类2. 代理组件又分为3. 状态 state 数据4. 刷新 数据变化5. code 1.flutter widget分类 组合渲染代理 2. 代理组件又分为 Positioned向父组件传递数据InheritedWidget向子组件传递数据 3. 状态 state 数据 状态就是用到了向子组件传递数据ÿ…...

开源免费虚拟化KVM的部署及其虚拟机资源变更、快照、克隆等常见运维操作
实践说明:基于RHEL9(AlmaLinux9.1)部署,同类系统(CentOS9,RockyLinux9等)适用,但适用场景是不限于此的。 文档说明:本文档旨在帮助快速应用KVM虚拟化技术,重在实践操作,提供了简要参考。 文档形成时期&…...

阿里云git clone超时报错解决方法
参考:引用文章...

力扣刷题-二叉树-合并二叉树
617.合并二叉树(经典) 合并二叉树是操作两棵树的题目里面很经典的,如何对两棵树遍历以及处理? 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并…...

了解JavaScript 加密、混淆和生成签名
分析并理解网站的 JavaScript 加密、混淆和生成签名的方法是 JavaScript 逆向工程中的一个重要方面。这些技术通常用于保护代码免遭未授权的访问和修改,或确保数据在传输过程中的安全性。 加密 目的:加密用于保护敏感数据,使得只有拥有正确密…...

Go语言的指针(深度解析)
指针是Go语言中的一个重要概念,它提供了对内存地址的直接访问和操作能力。通过指针,我们可以高效地传递和修改变量的值,避免了值传递所带来的拷贝开销。在本文中,我们将深入探讨Go语言指针的概念、使用方法和注意事项。 指针的本…...

HTB-SAU
信息收集 # cat port.nmap # Nmap 7.94 scan initiated Thu Jan 11 19:26:51 2024 as: nmap -sS --min-rate 10000 -p- -oN port.nmap 10.10.11.224 Nmap scan report for 10.10.11.224 (10.10.11.224) Host is up (0.28s latency). Not shown: 65531 closed tcp ports (r…...

AI创新之美:AIGC探讨2024年春晚吉祥物龙辰辰的AI绘画之独特观点
🎬 鸽芷咕:个人主页 🔥 个人专栏:《粉丝福利》 《linux深造日志》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…...

Linux的SSH服务
一.SSH服务简介 1.什么是SSH SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应…...

MySQL连续案例续集
01)查询学过「张三」老师授课的同学的信息 SELECT s.*, c.cname, t.tname, sc.score FROM t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc WHERE t.tid c.tid AND c.cid sc.cid AND sc.sid s.sid AND t.tname ‘张三’ 02&#x…...

【STM32读取HX711的函数】
[两个普通IO读取HX711数据的函数-主芯片是STM32F407] 以下是.h文件中的内容: #ifndef __hx711_h #define __hx711_h #define HX711CH1_DIO_GROUP GPIOA #define HX711CH1_CLK_GROUP GPIOA #define HX711CH1_DIO_PIN GPIO_Pin_1 #define HX711CH1_CLK_PIN GPIO_Pin…...

MATLAB对数据隔位抽取和插值的几种方法
对于串行的数据,有时我们需要转成多路并行的数据进行处理,抽取;或者是需要对数据进行隔点抽取,或对数据进行插值处理。此处以4倍抽取或插值为例,MATLAB代码实现。 文章目录 抽取方法一:downsample函数方法…...

[NSSCTF Round#16 Basic] CPR
打着玩玩,比赛很简单。 Crypto pr 一个RSA题,n1p*q,n2q*r给了两个c和p,r而且flag经过pad用单因子无法解出。分别用p,r解完再取crt from Crypto.Util.number import * import randomflagplaintext NSSCTF{****************} charset abcdefghijklmn…...

LAMMPS 文献:9 种熔化温度模拟方法的总结与比较:两相法、单相法以及缺陷法
记录一下检索到一篇通过LAMMPS模拟熔化温度的总结文章:单相方法、过热–过冷方法、Z 方法、修正 Z 方法、孔洞方法、修正孔洞方法、两相方法、夹层方法以及修正两相法。 感谢论文的原作者! 文章题目: A comprehensive investigation on the…...

JSR-107 (JCACHE)
JSR107 Specification 1.1.1 Maintenance Release https://docs.google.com/document/d/1ijduF_tmHvBaUS7VBBU2ZN8_eEBiFaXXg9OI0_ZxCrA/edit?pli1 What is JSR-107? JSR-107 is a standardized API for temporary, in-memory caching in Java applications. It defines a s…...

kylin4.0.3升级问题
话接前文: kylin升级(3.0.1->kylin-4.0.3)-CSDN博客文章浏览阅读941次,点赞29次,收藏12次。原本的cube太多了,换其他OLAP数据库太麻烦。相比之下,升级是一个很好的选择(官网有说明内存降低和构…...

【UML】第16篇 活动图
目录 一、什么是活动图 二、应用场景: 三、绘图符号的说明: 四、语法: 五、例图 六、建模的流程 6.1 对业务流程建模时 6.2 对用例进行活动图建模时 一、什么是活动图 活动图(Activity Diagram)是UML中用于描…...

Python学习之路-函数进阶
Python学习之路-函数进阶 参数和返回值的作用 函数根据有没有参数以及有没有返回值,可以相互组合,一共有4 种组合形式:无参数,无返回值;无参数,有返回值;有参数,无返回值ÿ…...

Mac打包Unix可执行文件为pkg
Mac打包Unix可执行文件为pkg 方式一:通过packages页面打包 1.下载packages app Distribution:自定义化更高,包括修改安装页面的内容提示 我这里主要演示Distribution模式的项目:通过unix可执行文件postinstall.sh脚本实现通过ma…...

C++ 模拟散列表 || 哈希表存储与查询,模版题(拉链法)
维护一个集合,支持如下几种操作: I x,插入一个整数 x ; Q x,询问整数 x 是否在集合中出现过; 现在要进行 N 次操作,对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N ,…...

详解Skywalking 服务Overview页面的参数含义(适合小白)
本文针对刚刚接触skywalking的同学,重点讲解服务Overview页面中各个参数的含义,为大家快速上手skywalking会起到帮助作用! 最重要的三个指标 Service Apdex(数字):当前服务的评分 Successful Rate(数字&a…...

Android studio GridView应用设计
一、xml布局文件设计: <GridViewandroid:id="@+id/gridView"android:layout_width="match_parent"android:layout_height="match_parent"tools:layout_editor_absoluteX="1dp"tools:layout_editor_absoluteY="1dp"andr…...

K8s 是如何完成调度和权重调整?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、调度流程二、kuble-scheduler 调度原理1 kubernetes 1.23版本调度器filter阶段和score阶段源码分析2 修改调度器插件默认权重示例2.1 环境准备2.2 调整Inte…...

计算机毕业设计----Springboot超市订单管理系统
项目介绍 该超市订单管理毕业设计基于jdk8版本开发,在部署时需要使用jdk8以上的版本。使用了目前流行的框架组合springbootmybatis的框架技术, 实现了供应商管理对供应商实现增删改查、订单管理对超市订单实现增删改查、用户管理等功能,适用…...

如何给AI下达精准的指令,哪些提示词对于AI是有效的?
刚上手那会,我倾向于将 prompt 翻译为“指令”,但这并不精确。“指令”通常对应instructions,属于 prompt 中的纯指令部分,通常是一个动宾结构(做什么)。剩下的部分更多是描述(describe…...

软件外包资源网站分享
经济不景气导致很多人失业,能否找到一份工作或找些项目做做,这里列了一些国内和国外的资源网上,希望对大家有益: 国内篇: 软件项目交易网:(软件项目交易网)这是一个专注于软件开发需求的外包平台…...

在控制理论里,单个输入变量被施加了饱和特性处理,那么后续怎么利用李雅普诺夫判据判断系统稳定性呢?
在控制理论中,当一个系统的输入变量被施加了饱和特性(即输入被限制在某个范围内),系统的稳定性分析可能变得更复杂。使用李雅普诺夫方法判断这样的系统稳定性通常需要考虑非线性特性。下面是如何使用李雅普诺夫方法进行稳定性分析…...

MySQL夯实之路-查询性能优化深入浅出
MySQL调优分析 explain;show status查看服务器状态信息 优化 减少子任务,减少子任务执行次数,减少子任务执行时间(优,少,快) 查询优化分析方法 1.访问了太多的行和列࿱…...