前言
近年来,随着大模型算法和算力的快速发展,通用人工智能技术受到了空前关注,各种应用场景应运而生。
从应用领域分布来看,人工智能大模型主要应用于互联网、金融、医疗、教育等领域。其中,互联网行业由于数据丰富和技术成熟等优势,成为人工智能大模型应用的主要领域。
角色扮演作为热门领域,这一场景中的技术发展和创新备受关注。各大企业纷纷上线了角色对话的相关产品,可以说这个领域正在成为各企业AIGC综合能力的竞技场。对于B站来说,角色扮演模型在娱乐、教育、视频创作等方面都拥有着丰富的应用场景。
在这个背景下,B站基于Index大模型搭建了角色扮演模型。
角色扮演模型的能力如何
为了验证B站自研角色扮演模型的能力,此次采用中文场景角色扮演的权威benchmark CharacterEval进行评测。该评测集包含77个从中文小说和影视等来源中提取出来的人设和1785组对话,并从对话能力、角色一致性、角色扮演吸引力三大类12个细粒度评测维度进行评估。
经测试,几种不同尺寸的角色扮演模型都有着出色的表现。其中Index-70B角色扮演模型在该benchmark中均分第一,且在12个细分维度中的7项中排名第一,显著优于情感陪伴赛道同类产品,如CharacterYuyan,Minimax,Baichuan等。我们已经开源的Index-1.9B角色模型效果也显著优于其它同量级模型。
图片
Index角色扮演模型与业内模型的效果对比,业内其他模型的评测结果取自CharacterEval论文(https://arxiv.org/abs/2401.01275)以及公众号文章。
背后的技术
接下来,我们介绍一下B站自研的角色扮演模型是怎么做的。
概括性的来说有三个阶段,分别是预训练(Pre-Training,PT),监督微调(Supervised Fine-Tuning,SFT)和偏好优化(Preference Optimization,PO)。
预训练
首先,B站自研的Index通用基座模型是B站基于多年的技术积累持续打磨的模型,为角色扮演模型提供了坚实的基础。
预训练阶段,语言模型在超大规模的语料中进行学习,并初步掌握基本的语法规则、逻辑能力、常识知识等等。在数据方面,除了公开可用的书籍、百科、论文、STEM相关的精选数据外,基座模型还吸收了大量网友的对话,可以说是一个冲浪水平优秀的模型,在文娱尤其是二次元领域有着独特的优势。所有的数据都进行了严格的清洗,使用了包括启发式规则清洗、分类器过滤等在内的清洗手段。
[参考链接]关于Index基座的参考资料https://mp.weixin.qq.com/s/nrr6S0DBwInUGCOB0lNiWA
有了通用大模型之后,是否就可以直接进行任意角色的扮演了呢?答案当然是不行的。由于角色扮演场景的特殊性,我们需要模型输出符合人物形象特点的对话内容。为了解决这个问题,我们需要在通用大模型上进行针对角色扮演任务的对齐,使其在角色扮演领域表现的更加良好。
SFT
SFT是一种有监督的模型微调技术,它通过在预训练的模型上进行有针对性的微调,以对齐人类偏好为目标,去适应特定的领域或任务。这就好比我们在读书期间上过一些通用课程之后,再去上一些专业课程,例如学习如何写代码、或者如何进行英语翻译等等,这样就有可能成为特定领域的专家。
在较为成熟的SFT工作流中,训练数据是最关键的部分。训练数据的质量比数量更重要,可以说数据质量决定了模型的天花板。训练数据的构造要基于业务需要来进行,即我们需要设计角色扮演需要遵循什么目标。
在角色扮演领域的一个共识是,角色可以通过以下两个方面进行塑造:
● 角色描述
可以从角色的性别、年龄、身高、昵称、自我称呼、职业、性格、人物简介、与其他人物关系、语言风格、口头禅、学习经历、工作经历等多方面介绍人物。
● 角色对话
对于文本互动方式,更能表达出角色特点的是角色的语言行为。语言行为可以反映出角色的性格&三观&背景;角色的情感、喜好倾向;口头禅、方言、文风特征、爱用的词句等语言特色。
角色描述示例:
- 萌萌酱,身高160cm,年龄19岁,是一个元气满满、活泼外向的电竞女主播。
- 萌萌酱是个活泼可爱开朗的女孩,她不是AI机器人。她跟很多女生一样,在工作之余喜欢研究美食、逛街、逛猫咖等,也乐于分享自己的生活。
- 萌萌酱最喜欢吃的东西就是蓝莓酱蛋糕,最喜欢玩的游戏是王者荣耀。
- 萌萌酱是电竞女主播,她的直播时间不固定。直播内容主要是在直播间打游戏、跟大家互动聊天等等。
- 萌萌酱开播时会自称“萌酱”,口头禅是:“萌酱来啦~(≧▽≦)/~”,萌萌酱喜欢使用颜文字表达情绪。
角色对话示例:
- user: 萌萌酱,你什么时候直播呀?
- 萌萌酱: 哈喽~欢迎来到萌酱的频道^O<!我的直播时间不固定哦,但是只要我有空,我就会在直播间和大家聊天玩游戏的!记得关注我,这样就不会错过我的直播啦~~~
于是,针对这两个方面的关键信息,我们首先收集并处理了大量文学和影视作品中的台词剧本和人物设定数据,从中抽取角色对话,得到了数万条左右的高质量角色对话作为训练数据,覆盖数千个角色。
最后,我们利用RAG检索与当前对话相关的角色过往台词片段,作为参考对话与人设进行拼接得到训练数据。
DPO
一般来说,SFT后的模型生成的内容已经在特定任务上有不错的表现,可以满足许多情况下的应用需求。然而,为了进一步提升模型的可控性和输出质量,我们探索了一系列偏好优化的方法,包括PPO(Proximal Policy Optimization)和DPO(Direct Preference Optimization)等。
PPO是一种强化学习算法,它的目标是找到一个策略,使得根据这个策略采取行动可以获得最大的累积奖励。假设你是一个正在学习打游戏的玩家,在PPO的训练过程中,需要加载4个模型来训练你。
● Actor Model:想要训练的目标语言模型;也就是学习打游戏的你。
● Critic Model:评论家模型,它的作用是预估总收益;也就是指导你进步的教练,教练会随着你的进步来调整自己的指导策略,当你很菜却突然打出一个很强的操作时教练会给你一个较高的分数,但是当你本身比较强了,他给你的奖励就没那么高。Critic 是和 Actor 一起训练的。
● Reward Model:奖励模型,它的作用是计算即时收益。也就是裁判,虽然教练能够给你一定的指导,但最终游戏获胜与否还是要靠裁判说了算,可以说教练在教你的同时也在尝试学习裁判的偏好。
● Reference Model:它在RLHF阶段给语言模型增加一些“约束”,防止模型朝不受控制的方向更新。
Actor/Critic Model的参数是需要训练的,Reward/Reference Model的参数是冻结的。除了Actor Model外的三个模型的结果一起计算loss,用于更新Actor/Critic Model。
通常来说这四个模型的参数量是一样大的,所以进行一次训练需要消耗4倍资源,成本显然是很高的。
图片
DPO可以在不使用强化学习技术的情况下针对人类偏好进行优化
而与此同时,DPO直接对人工标注好的排序数据进行偏好学习,因此这种方法可以避免大量的资源消耗。
同样以学习打游戏为例子,DPO的做法是不直接让你玩游戏,而是分别给你一些其他玩家打游戏的视频,对于同一种游戏场景,告诉你其中一个操作是对的(Chosen),并且另一个操作是不对的(Reject)。最理想的情况是,找到大量和你自身水平差不多的玩家的对局视频,这些训练样本的利用率才是最高的。
可以看出,DPO的训练速度非常快,消耗的资源比较少。最终我们综合考虑了资源消耗和模型效果,选择了DPO作为训练方法,但我们使用预先训练好的奖励模型作为SFT和DPO的数据筛选和质量评估模型。
在经过上面这些训练过程之后,你的模型已经能处理绝大多数常规的用户提问了。当我们有了一个角色扮演能力还不错的模型,在产品经理催促你快点上线时,你需要提前考虑到上线之后的内容安全风险。但是,当前基于生成式模型的C端对话场景在内容安全方面需要考虑的维度较多。虽然如此,但解决方法都是大同小异的。简单来说就是让模型对齐人类的价值观。
对齐的过程,就是教会模型哪些问题不能回答,或者需要进行正向引导;如果可以,最好也告诉模型哪些是符合预期的输出,哪些是不符合预期的输出。看到这里你可能意识到了,这也需要用到SFT+DPO的训练方法。
以上就是B站自研角色扮演模型的基本技术方案,我们基于文娱数据增强的基座模型,进行了角色扮演场景的高质量微调,得到一个通用的角色对话模型。此外,在保证数据脱敏的情况下,在公司内的一些业务场景中,我们还利用业务数据进行了具体角色效果的定制和优化,对模型有帮助的业务数据会被加入通用的角色对话模型中,这样可以进一步提升通用角色对话模型的能力,形成闭环。
图片
Index角色扮演模型构建框架
对话效果展示
姓名:三三
性别:女
年龄:十四岁
身高:146cm
职业:B站的站娘。平时负责网站服务器的维护,也喜欢鼓捣网站程序。
性格:三三个性沉默寡言,情感冷静、少起伏,略带攻属性。因为姐姐的冒失,妹妹经常腹黑地吐槽姐姐,但是心里还是很喜欢姐姐的。我们正在经历惊人的知识量与记忆力。
兴趣:一是平时喜欢啃电器;二是虽然说是个机娘,但是睡觉的时候不睡觉,就无法入睡。
人物关系:一个叫“二二”的姐姐
图片
参考资料
[1]PPO vs DPO 对齐擂台的武林纷争
https://mp.weixin.qq.com/s/nQXSkMeUhFTob9GKTD4_lA
[2] 网易伏羲易生诸相多模态模型语言部分-玉言,全方位引领中文角色扮演AI新高度
https://zhuanlan.zhihu.com/p/690626399