有灵魂的大模型!大模型角色扮演框架 RoleLLM
【社区开放麦】开播啦!!!技术下饭番追起来,每周一个新芝士。欢迎广大社区同学加入直播间参与讨论的同时,也非常鼓励社区同学拿起话筒登上舞台,社区知识开放麦等你来玩~
本期精彩
大型语言模型(LLM)的出现为角色扮演等复杂任务铺平了道路,角色扮演通过使模型能够模仿各种角色来增强用户交互体验。然而,目前最先进的大模型如 GPT-4 的闭源性质及其通用领域的训练限制了角色扮演的优化。
本期开放麦,我们邀请到北京航空航天大学二年级在读硕士生王泽坤,他将为我们分享他们最近的工作 RoleLLM,这是一个用于基准测试、引出和增强大模型角色扮演能力的框架。RoleLLM 分为四个阶段:
100 个角色的 Profile构建;
基于上下文的指令生成(Context-Instruct),用于角色特定知识的提取和注入;
利用 GPT 的角色提示(RoleGPT)进行说话风格模仿;
角色条件指令微调 (RoCIT),用于微调开源模型以便进行角色定制。
通过 Context-Instruct 和 RoleGPT,作者创建了 RoleBench,这是第一个系统化、细粒度的角色扮演基准数据集,拥有 168,093 个样本。此外,在 RoleBench 进行 RoCIT 训练得到了 RoleLLaMA(英文)和 RoleGLM(中文)模型,显著增强了角色扮演能力,甚至达到了与 RoleGPT(使用 GPT-4)相当的结果。
分享内容
背景和动机
相关工作
设计原则
闭源模型角色扮演方案:RoleGPT
开源模型角色扮演方案
使用 RoleGPT 构建通用指令数据
使用 Context-Instruct 抽取角色特定的知识与记忆
角色条件下的指令微调
RoleGLM 和 RoleLLaMA
角色扮演指令数据与评测:RoleBench
实验效果和结论
未来发展方向
分享时间
北京时间
2023 年 11 月 9 日(周四)
20: 00 - 20: 40(分享)
20: 40 - 21: 00(Q&A)
分享嘉宾
王泽坤
北京航空航天大学二年级在读硕士生,师从许可教授。研究方向为自然语言处理与多模态。他的主要研究兴趣为多模态基础模型、思维链 (Chain of Thought) 、检索增强以及 Alignment 等。同时也在探索大型语言模型作为 agent 的技术链,比如工具使用、社会模拟、具身智能等。他曾在澜舟科技、北京智源人工智能研究院等进行科研实习,目前在零一万物和香港科技大学担任研究助理
内容详情
前言
ChatGPT 的出现引燃了大家对大模型的热情,也引发了我们对于大模型应用场景的思考:什么样的大模型 C 端应用场景是最吸引人的?以及如果针对这个应用场景进行技术上的优化呢?
先从产品的角度出发,上面这份对于生成式人工智能创业公司相关产品的调研表明:基于角色扮演的 AIGC 产品,增长势头非常明显!例如由 Transformer 原作者之一 Noam Shazeer 创办的公司 Character.AI,月流量甚至超越了谷歌主打的聊天机器人应用 Bard,成为仅次于 ChatGPT 的第二大 AIGC 应用!
然后从技术的角度出发,GPT-4 出现之后,开源社区普遍使用 GPT-4 作为数据工程的增强工具,加以任务特定或者领域特定的先验,以优化开源模型在特定任务和领域上的能力。例如 ToolLLM 基于 GPT-4 数据增强 + 深度优先的路径搜索算法增强开源模型的工具使用能力,AgentLM 基于 GPT-4 数据增强 + ReAct 提示技巧增强开源模型的通用 agent 能力等。但是,很少有研究探索角色扮演这个火热的领域和相关任务。
在 RoleLLM 论文发表的同时期,出现了一些角色扮演的 LLM 框架,例如 Character-LLM,ChatHaruhi 等等,但是,作者发现目前存在的大模型角色扮演框架存在如下问题:
粒度有限:局限于简单的角色描述,例如职业、Persona、 人格等等,而非更细粒度的、character-level 的、具有更加精细的知识记忆和风格的角色。
缺少可用的开源数据和评测基准。
一些基于闭源模型的方法,API 调用成本巨大。
上下文不高效:为了完成一个特定角色的扮演,需要在开源模型的上下文当中“塞一大堆信息”,例如角色描述、口头禅、角色知识、角色记忆等等。短期来看,这种基于检索增强和上下文学习的提示技术可以解决一些问题,但长期来看,这种方式有以下几个弊端:
- 不适合进行更多功能的扩展:因为角色扮演的上下文占满了窗口,很难预留出足够的上下文窗口用于其他功能(如工具使用、reflection 等)的扩展。
- 知识记忆的检索构成了瓶颈:检索器的好坏很大地影响了最终回答质量的好坏,尤其是用户问的问题更脱离角色设定一些,检索器直接失效,模型回答很容易出现 hallucination 胡言乱语。
- 无法对角色知识记忆进行综合、交叉利用:一个问题的回答,往往需要多个角色知识记忆的综合作用,但是基于检索的方法,只能检索有限数量的知识记忆,而模型对于其他相关的知识记忆,是无法知道的。
- 其他:例如限制了生成的速度、对模型尺寸和训练方式提出了额外的要求等等。
为了解决这些问题,作者们提出了 RoleLLM 框架,针对闭源模型和开源模型的角色扮演方案都进行了优化,同时公开了第一个系统化的、细粒度的角色扮演基准数据集 RoleBench. 在论文中,作者还提出了 Context-Instruct 用于提取并注入角色相关的知识和记忆,该方法也可以用于更加广泛的长文本理解任务当中。
方法
本文所使用的方法框架如上图所示,它包含了四个阶段:
Role Profile Construction: 广泛收集了若干剧本,并从中处理出主要角色的剧本对话数据,用作后续角色扮演的原材料。
基于上下文的指令生成 (Context-Instruct): 给定角色的剧本对话数据和角色的总体描述信息,使用大模型以及一些基于 confidence 的提示技巧,生成关于这个角色的知识记忆的若干 QA 对。这些数据构成了 RoleBench-specific 数据,用于在增强模型对角色相关知识和记忆的理解能力。
基于 GPT 模型的角色提示 (RoleGPT): 给定通用领域的指令数据,基于检索增强技术、对 Chat Markup Language 的合理利用以及 Dialogue Engineering 提示技巧,让 GPT 更好地模仿角色的说话风格来响应指令。这一步生成的数据称为 RoleBench-general。
基于角色条件的指令微调 (RoCIT):使用上面的 RoleBench-general 和 RoleBench-specific 两类数据,对模型进行指令微调。但是,和传统的指令微调不同,作者提出的 RoCIT 在 instruction 之外还附加了角色条件,以方便在 inference 阶段,基于简单的系统指令即可自由定制角色。
更多细节和方法描述,敬请期待作者的直播~
评测
作者构建的角色扮演基准集和指令数据 RoleBench 具有 168K+ 样本量!全部开源!(见文末链接)
下面给大家展示一些统计指标:
在评测指标 (Metric) 的设计上,作者为了全面衡量模型的角色扮演能力,主要基于 Rouge-L 提出了三个自动指标:
RAW 指标:使用 instruction 的原始响应作为 ground-truth,评测模型的回答准确度。
CUS 指标:使用 RoleBench-general 的定制化响应作为 ground-truth,评测模型的说话风格。
SPE 指标:使用 RoleBench-specific 的响应作为 ground-truth,评测模型的角色知识记忆。
详细的实验结果和发现,敬请期待作者直播~
示例
最后,给大家看几个 case:
是不是很生动?快来直播间,看看到底是怎么实现的吧~
相关工作
论文链接:
https://arxiv.org/pdf/2310.00746.pdf
论文主页:
https://rolellm.github.io/
GitHub:
https://github.com/InteractiveNLP-Team/RoleLLM-public
RoleBench 数据链接:
https://huggingface.co/datasets/ZenMoore/RoleBench
交流群
同时为了方便大家交流沟通,我们建立了 RoleLLM 相关方向交流群,提供与大佬 1v1 的机会,扫码即可入群~
往期回顾
上期开放麦我们邀请到观远数据联合创始人周远带来 LLM Agent 核心概念介绍,包括记忆、逻辑推理、环境互动等,构建基于 LLM Agent 的应用中的各类挑战与应对技巧以及对 LLM Agent 相关的前沿研究概览与未来展望。
感兴趣的同学,可以通过直播回放学习一下哦~
2023-11-03
2023-11-02