DITTO:角色扮演的self-alignment方法

大模型关系型数据库智能语音交互

引言

为了scaling training data,许多角色扮演模型借助ChatGPT等模型来合成数据。

但这样的方法有“幻觉”风险[1]:

  • student(较弱的LLM)会很容易学到teacher(较强的LLM)的 style (结构化的输出风格、语气等),但由于两者之间存在能力上的gap,强行让student学会teacher-style可能并不是一件好事 -- 它可能为了强行teacher style,而开始“胡编乱造”, “幻觉”问题 此时便出现了。下图是一个例子。

picture.image

自对齐(self-alignment) 应运而生:既然用chatgpt的合成数据来训练,有点勉为其难,那么我用自己合成的数据来训练自己吧。

picture.image

picture.image

由上图可知,self-alignment,意指 自己生成用于对齐训练的数据 ,即该模型同时是student和teacher。

除了能从理论上缓解幻觉问题,self-alignment还有几个优点:

  1. 省钱
  2. 可以迭代训练 。因为teacher = student,所以当student进化、teacher也跟着进化,轮子就这么转动起来了。Meta的self-rewarding language model工作[2]展示了多轮自对齐迭代的潜力。

本篇博文介绍DITTO[3],一个适用于角色扮演场景的self-alignment方法。

DITTO的假设

picture.image

DITTO的假设如下:

  • pretrained LLMs已在包含大量character的profiles和dialogues上训练过,本自具有角色扮演的潜力 ,但由于没有经过角色扮演能力的对齐,属于是“有理说不清”(对应上图左上角的灰色部分);
  • 借助一些seeds(如wiki上的角色介绍),使用提示词 ,让instruction-finetuned LLMs 生成角色对话数据(对应上图右侧部分);
  • 在生成的角色对话数据上训练,以点亮 自身的角色扮演能力(对应上图左下角部分)。

DITTO的流程

picture.image

DITTO的流程主要包含以下几步:

  1. 收集role knowledge 。论文使用Wikidata和Wikipedia来收集数据,共计3902个角色,用作生成role-play dialogue的seeds;
  2. 开始生成dialogue的第一步,生成query 。给定一个role A,将其role knowledge通过prompt给 LLM,使其生成role-related query ,同时随机sample一个role B,使其生成role-contrastive queryB能回答、而A无法回答);这一步生成2个query,前者是为了SFT训练,后者是为了让LLM理解role的知识边界、学会拒绝超出role能力的问题,类似于role-play任务的honesty之前博文也有提到
  3. 基于query,生成response,组成dialogue 。将query + role-specific knowledge通过prompt的方式给到LLM,使其生成response;
  4. 在dialogue上进行SFT训练 。前两步完成后,得到 (role-related query, response)(role-contrastive query, response),随后使用SFT的方式训练LLM,同时采用context distillation 的思想 -- 训练时,只提供给LLM关于role的简短描述 ,不提供详细的role-specific knowledge,这一步是强迫 LLM不使用来自context中的外部知识、转而尽量使用自身的知识,起到激发 作用。

DITTO的伪代码如下:

picture.image

可以发现,DITTO只生成一次数据、训练一次模型,并未采取迭代式训练的方式。

DITTO的效果

评测指标

  1. Consistent Role Identity (简称Cons)。考验模型能否在多轮对话中,始终保持role的一致性。作者使用LLM-As-Judger,并使用multi-choice problem来建模该问题;
  2. Accurate Role-related Knowledge (简称Know)。考验模型使用的role知识,是否正确。同样使用LLM-As-Judger,并提供给LLM role-specific knowledge,加强其factual判别能力;
  3. Unknown Question Rejection (简称Rej)。考验模型是否对role的knowledge bound有感知,能够拒绝自己role无法回答的问题,同样使用LLM-As-Judger。

三个Judger的prompt如下:

picture.image

测试集

picture.image

  1. WikiRoleEval 。和本文的训练集同源(均来自Wiki),选取100个role,使用GPT-4-Turbo来生成测试集;
  2. MT-Bench[4] 。10个两轮questions,使用GPT-4进行打分,数据示例如下。

picture.image

主要结果

picture.image

主要结论如下:

  1. DITTO能带来明显的效果提升 。与没有进行roleplay SFT的Qwen系列模型相比,几乎每项指标都有明显提升;
  2. Cons是最好学的 。在WikiRoleEval上,1.8B的模型,在Cons上也可以取得0.8的效果,说明模仿风格、维持风格很容易,不需要大参数量的模型;
  3. 小参数模型的Knowledge是硬伤 。在Know维度上,小参数的Qwen被甩的相当远,只有Qwen-72B + DITTO 才可以与GPT-3.5-Turbo抗衡,Rej也展示了相似的趋势,这说明参数量限制了模型的knowledge相关能力。

深入分析

作者首先评估query质量 。由人类打标,看不同模型生成的query准确率如何。

picture.image

从结果来看,Scaling Laws比较明显:模型参数量越大,生成的query更准确。其中,Qwen-1.8B的准确率在 60%+ ,Qwen-72B则已近 90%

然后是对dialogue generation过程的ablation分析 。作者对比不使用knowledge来辅助LLM生成dialogue,结果如下。

picture.image

从结果来看,提升最大的是Know,其次是Rej。这也符合预期,毕竟这两个维度都与knowledge相关。

最后,作者进行cross-supervision设定下的实验

首先引入四个概念:

  1. Supervision LLM 。指用来合成role-play数据的LLM;
  2. Supervision Performance 。指在test set上,直接使用Supervision LLM的效果;
  3. Seed LLM 。用于微调的基座模型;
  4. Imitation Performance 。指基于Supervision LLM生成的数据,训练Seed LLM,随后在test set上测试的效果。

picture.image

先说明一下,每个小图内部 从左往右横看是保持seed LLM不变,增大Supervision LLM带来的效果变化;从下往上竖看则是 保持Supervision LLM不变,增大seed LLM带来的效果变化。

结论如下:

  1. Cons能力可从imitation learning中得到稳定提升 。图1可以看出,imitation效果普遍超过supervision llm,说明Cons(角色一致性)比较好泛化 ,而knowledge-related metrics没有这样的趋势;
  2. Knowledge相关能力,受Seed LLM的限制 。从图2可以看出,当保持Seed LLM不变,增大Supervision LLM时,虽然imitation performance有提升,但与Supervision performance差距也越来越大,这说明knowledge能力主要受seed LLM能力限制,使用强的supervision LLM也只能提升一点点效果,相似的趋势也体现在图3的Rej指标中;
  3. Knowledge相关能力,有weak-to-strong generalization的特性 。当Supervision LLM不变,单纯增强Seed LLM时,效果也有提升,例如用Qwen-1.8b生成的数据,来SFT Qwen-72B,效果接近7B进行self-alignment。

总结

本文介绍了DITTO -- 一个角色扮演场景的self-alignment方法。

该方法从一个能够遵循指令的LLMs出发,开展 bootstrap 过程,利用Wiki的role knowledge作为seeds,使用prompt的方式,为自己生成用于角色扮演对齐的SFT数据,实现了self-alignment。

论文的实验结果进一步增强了以下直觉:

  • LLMs的能力在pre-train阶段时几乎已经收敛,而后的fine-tune只起到”点亮“作用,尤其是knowledge相关的能力。

DITTO证明了 self-alignment是有用的 ,也证明了对于knowledge related task,使用cross-alignment并没有太多增益 -- 模型本身的能力限制才是决定因素 。由此可见,self-alignment确实值得一试,同时大家在fine-tune开源模型时,也应该多尝试新的、更好的基座模型,也许在相同数据下,会取得更好的效果。

美中不足的是,该论文缺少对”幻觉“的评估,也没有开展迭代式的self-alignment实验,对于self-alignment的分析整体是偏少的。

关注笔者

欢迎关注笔者,了解有趣/有用的NLP知识:)

往期文章

  1. Large-Scale Weakly Supervision (Noisy) Data,何以成为大模型的数据基石?

  2. 角色扮演论文浅读:RoleLLM、Character-LLM以及ChatHaruhi

  3. 作为标注员的LLM(五):三种标注范式以及思考

  4. 用AI来帮助AI:Detect Label Error with Cross Validation

  5. 自动Prompt Engineering(2):PE2、LongPO以及BPO

  6. 模型融合(Model Merging):合理性、常见技术及其特性

  7. 用GLM4做一款文字冒险游戏:「带娃路上的打怪升级」

  8. ACL 2023 | 对验证集的一场重新审视 - 弱监督学习比你想象的更“弱”

  9. BGE论文解读:如何炼成中文世界的通用Embedding Model

  10. Embedding技术的两个小应用:鲁迅全集检索 & 新闻早报聚类

参考资料

[1] The False Promise of Imitating Proprietary LLMs: https://arxiv.org/abs/2305.15717

[2] Self-Rewarding Language Models: https://arxiv.org/abs/2401.10020

[3] Large Language Models are Superpositions of All Characters: Attaining Arbitrary Role-play via Self-Alignment: https://arxiv.org/abs/2401.12474

[4] Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena: https://arxiv.org/abs/2306.05685

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论