引言
为了scaling training data,许多角色扮演模型借助ChatGPT等模型来合成数据。
但这样的方法有“幻觉”风险[1]:
- student(较弱的LLM)会很容易学到teacher(较强的LLM)的 style (结构化的输出风格、语气等),但由于两者之间存在能力上的gap,强行让student学会teacher-style可能并不是一件好事 -- 它可能为了强行teacher style,而开始“胡编乱造”, “幻觉”问题 此时便出现了。下图是一个例子。
自对齐(self-alignment) 应运而生:既然用chatgpt的合成数据来训练,有点勉为其难,那么我用自己合成的数据来训练自己吧。
由上图可知,self-alignment,意指 自己生成用于对齐训练的数据 ,即该模型同时是student和teacher。
除了能从理论上缓解幻觉问题,self-alignment还有几个优点:
- 省钱 ;
- 可以迭代训练 。因为teacher = student,所以当student进化、teacher也跟着进化,轮子就这么转动起来了。Meta的self-rewarding language model工作[2]展示了多轮自对齐迭代的潜力。
本篇博文介绍DITTO[3],一个适用于角色扮演场景的self-alignment方法。
DITTO的假设
DITTO的假设如下:
- pretrained LLMs已在包含大量character的profiles和dialogues上训练过,本自具有角色扮演的潜力 ,但由于没有经过角色扮演能力的对齐,属于是“有理说不清”(对应上图左上角的灰色部分);
- 借助一些seeds(如wiki上的角色介绍),使用提示词 ,让instruction-finetuned LLMs 生成角色对话数据(对应上图右侧部分);
- 在生成的角色对话数据上训练,以点亮 自身的角色扮演能力(对应上图左下角部分)。
DITTO的流程
DITTO的流程主要包含以下几步:
- 收集role knowledge 。论文使用Wikidata和Wikipedia来收集数据,共计3902个角色,用作生成role-play dialogue的seeds;
- 开始生成dialogue的第一步,生成query 。给定一个role A,将其role knowledge通过prompt给 LLM,使其生成role-related query ,同时随机sample一个role B,使其生成role-contrastive query (B能回答、而A无法回答);这一步生成2个query,前者是为了SFT训练,后者是为了让LLM理解role的知识边界、学会拒绝超出role能力的问题,类似于role-play任务的honesty ,之前博文也有提到;
- 基于query,生成response,组成dialogue 。将query + role-specific knowledge通过prompt的方式给到LLM,使其生成response;
- 在dialogue上进行SFT训练 。前两步完成后,得到
(role-related query, response)
和(role-contrastive query, response)
,随后使用SFT的方式训练LLM,同时采用context distillation 的思想 -- 训练时,只提供给LLM关于role的简短描述 ,不提供详细的role-specific knowledge,这一步是强迫 LLM不使用来自context中的外部知识、转而尽量使用自身的知识,起到激发 作用。
DITTO的伪代码如下:
可以发现,DITTO只生成一次数据、训练一次模型,并未采取迭代式训练的方式。
DITTO的效果
评测指标
- Consistent Role Identity (简称Cons)。考验模型能否在多轮对话中,始终保持role的一致性。作者使用LLM-As-Judger,并使用multi-choice problem来建模该问题;
- Accurate Role-related Knowledge (简称Know)。考验模型使用的role知识,是否正确。同样使用LLM-As-Judger,并提供给LLM role-specific knowledge,加强其factual判别能力;
- Unknown Question Rejection (简称Rej)。考验模型是否对role的knowledge bound有感知,能够拒绝自己role无法回答的问题,同样使用LLM-As-Judger。
三个Judger的prompt如下:
测试集
- WikiRoleEval 。和本文的训练集同源(均来自Wiki),选取100个role,使用GPT-4-Turbo来生成测试集;
- MT-Bench[4] 。10个两轮questions,使用GPT-4进行打分,数据示例如下。
主要结果
主要结论如下:
- DITTO能带来明显的效果提升 。与没有进行roleplay SFT的Qwen系列模型相比,几乎每项指标都有明显提升;
- Cons是最好学的 。在WikiRoleEval上,1.8B的模型,在Cons上也可以取得0.8的效果,说明模仿风格、维持风格很容易,不需要大参数量的模型;
- 小参数模型的Knowledge是硬伤 。在Know维度上,小参数的Qwen被甩的相当远,只有Qwen-72B + DITTO 才可以与GPT-3.5-Turbo抗衡,Rej也展示了相似的趋势,这说明参数量限制了模型的knowledge相关能力。
深入分析
作者首先评估query质量 。由人类打标,看不同模型生成的query准确率如何。
从结果来看,Scaling Laws比较明显:模型参数量越大,生成的query更准确。其中,Qwen-1.8B的准确率在 60%+ ,Qwen-72B则已近 90% 。
然后是对dialogue generation过程的ablation分析 。作者对比不使用knowledge来辅助LLM生成dialogue,结果如下。
从结果来看,提升最大的是Know,其次是Rej。这也符合预期,毕竟这两个维度都与knowledge相关。
最后,作者进行cross-supervision设定下的实验 。
首先引入四个概念:
- Supervision LLM 。指用来合成role-play数据的LLM;
- Supervision Performance 。指在test set上,直接使用Supervision LLM的效果;
- Seed LLM 。用于微调的基座模型;
- Imitation Performance 。指基于Supervision LLM生成的数据,训练Seed LLM,随后在test set上测试的效果。
先说明一下,每个小图内部 从左往右横看是保持seed LLM不变,增大Supervision LLM带来的效果变化;从下往上竖看则是 保持Supervision LLM不变,增大seed LLM带来的效果变化。
结论如下:
- Cons能力可从imitation learning中得到稳定提升 。图1可以看出,imitation效果普遍超过supervision llm,说明Cons(角色一致性)比较好泛化 ,而knowledge-related metrics没有这样的趋势;
- Knowledge相关能力,受Seed LLM的限制 。从图2可以看出,当保持Seed LLM不变,增大Supervision LLM时,虽然imitation performance有提升,但与Supervision performance差距也越来越大,这说明knowledge能力主要受seed LLM能力限制,使用强的supervision LLM也只能提升一点点效果,相似的趋势也体现在图3的Rej指标中;
- 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] 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