AI界也有了自己的“奥斯卡”,哪家大模型角色扮演更入戏?
来自香港科技大学、腾讯、新加坡管理大学的团队提出新综述——
不仅系统性地回顾了角色扮演语言模型的发展历程,还对每个阶段的关键进展进行了深入剖析,展示了这些进展如何推动模型逐步实现更复杂、更逼真的角色扮演。
AI世界如同不断扩展的“舞台”,语言模型则是这个舞台上不断精进的“演员”。
论文从早期简单的“人格小品”到如今复杂而多面的“角色大片”,详尽描绘了role-playing领域的发展。
作者不仅对学术界的方法进行了详细的剖析和总结,还在多个地方阐述了在工业界构建role-playing LLM的切身经验,为研究人员提供了明晰的结构和指引。
在接下来的内容中,作者通过四个部分详细介绍角色扮演语言模型的组成:数据、模型与对齐、Agent架构以及评估方法。
每一个部分都揭示了角色扮演的关键细节,以及这些细节如何协同作用,打造出一个逼真的角色扮演体验。
数据是角色扮演的剧本,这里,作者们详细讨论了支撑角色扮演模型的数据源。
根据数据是否包含详细的character-level的信息,将现有的数据分成两类:Persona-based Role-Playing (P-RP) 和Character-based Role-Playing(C-RP)。
P-RP数据集通常包含粗粒度的角色信息,比如位置、性别等,用于确保基本的角色一致性。
相比之下,C-RP数据集则包含更为细致的角色背景信息,如角色属性、复杂的关系网络、特定场景及时间维度的信息,用于创建更深度、个性化的角色互动。
P-RP就像是演员在收到简短的角色描述后进行即兴表演,而C-RP则要求演员融入丰富的背景细节,比如角色的属性、关系和场景,就像深入揣摩一个电影角色。
作者们还详细描述了数据构造的多种方法:
1)众包方式(Employing Crowdsourced Workers):通过雇佣众包工人来创建个性化对话数据集,例如Persona-Chat数据集和Focus数据集。这些数据集通常质量较高,但规模有限。
2)社交媒体数据收集(Extracting from Social Media):通过社交媒体平台收集大量用户对话数据,如Pchatbot和PersonalDialog数据集。这些数据集规模庞大,但质量控制较为困难。
3)从文学资源中提取(Extracting from Literary Resources):特别是对于复杂的角色扮演场景,作者从小说、电影等文学资源中提取角色相关的对话和背景信息,例如HPD数据集基于《哈利·波特》小说。这些数据源的语言质量非常高,但与日常用户-AI对话风格之间可能存在差异,影响与真实用户交互时的表现。
4)使用大语言模型生成(LLM as Data Generator):通过先进的大语言模型(如GPT-4)生成角色简介和对话数据,例如RoleInteract和Rolebench数据集。虽然这种方法有效,但可能引入偏差,数据质量需要手动审查和验证。
5)人工角色扮演(Human Role-Playing):通过雇佣众包工人根据特定的角色简介进行角色扮演,生成对话数据。这种方法数据质量高,但缺乏多样性且成本较高。
6)未公开资源(Unpublished Resources):特别值得一提的是,作者在数据部分详细讨论了未公开资源的独特贡献,这也是这篇综述的一大亮点。
作者们主要列举了三种:
这些数据来源和构造方式的多样性使得角色扮演模型能够在各种场景中展现更为丰富和个性化的表现,为模型的开发提供了坚实的数据基础。
这些数据来源的多样性为模型塑造丰富多彩的角色提供了重要支持,但同时也伴随着法律和伦理方面的风险,需要在使用时格外谨慎。
如果说数据是剧本,那么模型就是演员,演员如何表现出角色的灵魂,离不开对齐的训练。
在这一部分,作者详细分析了角色扮演模型的基础模型和对齐方法的演变过程,从最早的非预训练模型(Non-pretrained Models)到预训练语言模型(PLM)和大规模语言模型(LLMs),这些阶段代表了角色扮演模型在架构选择上的重大转变。
基础模型在设定角色扮演模型的基本能力方面起到了关键作用。
早期的非预训练模型是为特定任务从头开发的,没有大规模预训练数据的支持。这些模型通常采用定制的架构,如记忆网络或专门设计的Transformer,用于处理个人信息的存储和嵌入融合。
随着预训练语言模型(PLM)的引入,模型的基础能力得到了显著提升,能够更好地理解上下文并生成文本,例如BERT、ConvAI2等模型。这些模型利用了大量预训练数据,增强了它们在角色扮演中的应用能力。
大规模语言模型(LLM)代表了角色扮演模型的最新前沿,具备前所未有的参数规模和预训练数据能力。诸如GPT-4和CharacterGLM等LLMs能够在极少的提示下保持连贯且具有丰富上下文的对话,这些模型主要基于解码器架构,通过指令微调等方式进行角色配置,形成特定角色扮演的效果。
这些LLM的出现使得角色扮演的个性化和连贯性达到了新的高度。
特别是,作者们以CharacterGLM为例,深入探讨了如何优化大语言模型以支持角色扮演。
首先,通过收集角色相关的对话训练语料,以及相应的角色背景信息,生成丰富的角色化对话数据集。
接着是指令微调阶段,将角色背景信息和对话数据组织成结构化的指令,并通过多样化提示进行数据增强,以提高模型生成多样化、上下文适宜的对话回复能力。
最后,模型可能会通过自对齐(Self-Alignment)进行进一步优化,即利用更先进的模型的输出对较弱模型进行训练,并结合人类反馈,以确保角色一致性。这种综合的方法确保了大语言模型在角色扮演场景中能够有效地体现并保持角色特质。
对齐方法旨在确保角色扮演模型的回复与预期角色保持一致,分为“参数调整”(Parameter-Tuning)和“冻结参数”(Parameter-Frozen)两大类。
参数调整(Parameter-Tuning)
冻结参数(Parameter-Frozen)
这些对齐方法如同不同类型的表演训练,从不断反复的台词练习到沉浸式的即兴表演,每种方法都在为角色的完美呈现而努力。通过这些技术,角色扮演语言模型得以在不同场景中展现出更高的表现力和一致性。
在Agent架构部分,作者将角色扮演语言Agent(RPLAs)比作舞台上的演员,涵盖了记忆、规划和行动三个重要模块。
记忆模块就像演员的“回忆录”,帮助Agent记住与用户或其他Agent的交互细节;规划模块就像导演的“分镜头脚本”,为Agent制定每一步的行动计划;而行动模块则是演员的“即兴表演”,让Agent能够灵活使用工具并生成多样化的响应。
通过这些模块的协同运作,角色扮演语言Agent得以呈现出更加立体、生动的互动体验。
RPLAs的设计基于三大核心模块:
记忆模块(Memory)
记忆模块是RPLAs的基础,用于在不同的交互场景中保存和调用重要信息。记忆来源主要分为两类:user-agent 交互和agent-agent交互。
User-agent交互记忆使Agent能够在长期互动中保持一致性,例如记住用户的选择和偏好,而agent-agent交互则用于支持多Agent之间的合作或竞争,使Agent在复杂场景中形成更具策略性的行为。
记忆的使用分为检索型记忆和压缩型记忆,前者通过维护数据库来存储历史信息,后者通过压缩历史数据来减少存储需求,增强对话的一致性和效率。
规划模块(Planning)
规划模块主要用于角色的目标设定和行动策略的制定,分为“规划制定”和“规划反思”两个阶段。
在规划制定阶段,Agent会分析当前情境、预测可能的未来状态,并设计一系列符合角色动机的行动。规划反思则是在行动之后对其有效性进行评估,以确保角色的行为与剧情发展和角色特征保持一致。
通过这种反思机制,RPLAs能够不断优化自己的行动策略,以在未来的交互中更加符合用户的期望和故事情节的发展。
行动模块(Action)
行动模块是Agent将规划付诸实施的环节,最常见的形式是生成符合角色特性的对话。
此外,RPLAs还可以通过工具(例如搜索相关API)获取和整合特定知识,从而丰富对话内容,确保在需要深度领域知识的场景中提供准确的信息。
未来,RPLAs还可能扩展到具备“具身行动”的能力,即在虚拟或增强现实环境中与周围环境进行更直接的交互,这将为角色扮演的沉浸感带来全新突破。
通过这三大模块的协同运作,RPLAs不仅能在对话中表现出角色特性,还能够在复杂场景中主动推进情节的发展,为用户提供更加动态和有趣的互动体验。
Evaluation是检验角色扮演是否成功的关键,就像颁奖典礼上的评审团,严格考核演员的表现。作者们从对话能力、角色一致性、行为一致性和角色吸引力四个维度总结和讨论了role-playing llm的评估体系。
作者们将角色扮演语言模型的评估分为三种主要方法:Reference-based Evaluation、Human-based Evaluation和LLM-based Evaluation。
Reference-based Evaluation
这种方法使用参考输出(即测试集中的“ground-truth”)来评估模型输出与用户期望之间的一致性。常用的评估指标包括困惑度(Perplexity, PPL)、BLEU和ROUGE。
这些指标用于评估模型输出的语言质量和与参考的相似度。
然而,这些传统指标在评估角色扮演的一致性方面存在局限。为了更好地评估角色一致性,研究人员提出了多选回答格式的评估方法,要求模型在多个选项中选择最符合角色的回答。
Human-based Evaluation
人类评估是评估角色扮演模型性能的重要方法,特别是在捕捉对话中微妙的角色特征和用户参与感方面。
常用的人类评估方法包括打分和排序两种方式。打分方法要求评估者根据特定标准对模型的响应进行评分,而排序方法则要求评估者对不同模型的输出按质量进行排序。
虽然人类评估能够提供深刻的洞察,但它也面临主观性强、成本高和难以扩展的问题。
LLM-based Evaluation
随着大型语言模型(如ChatGPT)的发展,基于LLM的评估逐渐受到关注。通过使用预先设定的评分标准和示例,大语言模型可以模拟人类评估的过程,并提供快速的可扩展评估。
然而,基于LLM的评估在一致性和可靠性方面存在挑战,特别是在评估角色扮演能力强于评估模型的场景中表现不佳。
此外,LLM在评分时对顺序敏感,往往会对顺序考前的回复给予更高的评分。LLM进行评估的另一缺陷便在于弱LLM很难去评估更强的LLM,比如gpt3.5难以去评估gpt4的角色化能力。
作者们还额外强调,学术界越来越依赖于仅使用LLM去评估模型的角色化能力,这是完全不够的。
在作者们的相关经验中,在略微复杂的角色化场景中发现LLM-based 评价方式和人工评价依然还存在较大差距,因此作者们呼吁当论文中使用LLM-based 评价方式中,应该至少在少量样本上证明LLM-based和人工评价的一致性。
评估角色扮演模型的能力涉及多个维度,这些维度共同衡量模型在角色扮演中的表现。
对话能力:衡量模型在对话中的流畅性、连贯性和语言多样性。流畅性要求模型输出的语法正确、结构自然,而语言多样性则反映模型在用词上的丰富性,避免重复和单一化。
角色一致性:评估模型在整个互动中是否一致地扮演好自己的角色,包括角色的属性、行为方式等。
行为一致性:关注角色在对话中的行为是否符合其设定,例如对话风格和角色个性是否始终如一。
角色吸引力:评估角色的互动是否能够吸引用户并激发用户的兴趣和共鸣,例如角色的主动性和共情能力。
虽然上述评估方法各有其优势,但作者们指出它们也面临许多挑战。基于参考的评估在准确性和效率方面表现良好,但缺乏对角色一致性的深度理解。
基于人类的评估尽管能捕捉对话中的细微之处,但由于评估者的主观性和高昂的成本,难以大规模应用。基于LLM的评估在成本和可扩展性上具有优势,但其一致性和与人类评估的匹配度有待提高。
作者们还强调,无论采用何种评估方法,都必须确保方法能够在特定场景下有效地评估角色扮演能力。
例如,在进行人类或LLM评估时,评估者需要具备足够的角色背景知识,否则评估的准确性将受到影响。对话能力是角色语言是否流畅、自然;角色一致性则是角色在整个互动中是否始终如一地扮演好自己的角色;行为一致性关注角色的举止是否符合其身份,而角色吸引力则考察角色是否能够吸引用户、激发共鸣。
作者还对比了基于参考、人工和大语言模型的评估方法,指出每种方法在不同角色扮演场景中的优势和不足。
在角色扮演语言模型的发展过程中,尽管已有显著的进展,但仍存在许多挑战需要克服,以实现更为复杂和互动性更强的叙事体验。在这一部分,作者详细总结了当前系统的不足之处,并提出了未来研究的方向。
评价方法的改进:
目前的参考基准评估方法主要集中在语言准确性和连贯性上,这对于评估角色扮演的能力(如角色一致性和叙事吸引力)是远远不够的。现有的评价指标(如∆PPL)虽然在某些方面表现良好,但无法直接评估生成的输出与设定角色之间的一致性。因此,未来需要开发更多适用于角色扮演的评价方法,特别是能够捕捉角色之间关系动态和心理状态的深度对齐方法。
大语言模型(LLM)评估的局限性:
LLM在进行角色评估时,常常面临与人类评估结果不一致的问题。例如,当LLM评估它们不熟悉的角色时,准确性可能会受到影响。此外,LLM在进行评分时对响应顺序存在敏感性,通常会优先给较长的响应打分较高。因此,未来的研究需要在评估过程中引入更多的细化机制,以解决这些一致性和可靠性方面的问题。
记忆管理和多模态集成:
RPLAs的记忆模块在提供上下文连续性、角色扮演互动和深度叙事参与方面非常重要,但在管理大量数据和保持存储效率上面临诸多挑战。此外,多模态交互(如图像-文本对)可以显著增强角色扮演的深度和真实性,未来应加强多模态整合,开发更为沉浸的角色扮演体验。
终身学习和安全性:
角色扮演语言模型的长期目标是具备终身学习能力,使得系统能够不断适应用户交互和环境变化。然而,终身学习也带来了对齐和安全性方面的巨大挑战,可能导致系统出现未预料的有害行为(如奖励黑客和目标失调)。未来的研究需要开发稳健的框架,以管理RPLA的学习轨迹,确保其发展始终符合伦理标准和设计目标。
论文链接:https://arxiv.org/abs/2407.11484
项目主页:https://github.com/nuochenpku/Awesome-Role-Play-Papers
文章来自于微信公众号“量子位”,作者“AI“奥斯卡”团队”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】MindSearch是一个模仿人类思考方式的AI搜索引擎框架,其性能可与 Perplexity和ChatGPT-Web相媲美。
项目地址:https://github.com/InternLM/MindSearch
在线使用:https://mindsearch.openxlab.org.cn/
【开源免费】Morphic是一个由AI驱动的搜索引擎。该项目开源免费,搜索结果包含文本,图片,视频等各种AI搜索所需要的必备功能。相对于其他开源AI搜索项目,测试搜索结果最好。
项目地址:https://github.com/miurla/morphic/tree/main
在线使用:https://www.morphic.sh/
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0