谈一谈对大模型对齐框架的反思及其改进思路


MLNLP社区是国内外知名的机器学习与自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。
社区的愿景是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。
来源 | 知乎
作者 | leshare

 

一、引言

本文主要介绍我对当前大模型对齐框架的反思及其改进思路,最终的目标是实现一个对人力标注依赖很小,能够自我进化的对齐模型。

二、我理想中的大模型

作为一位大模型用户,我对大模型有以下几点期待:

大模型能越来越懂我(千人千面):比如我今天花了很多时间撰写了一个比较复杂但准确的指令,成功得到了符合预期的回复,第二天我使用一个更为简洁但任务相同的指令也能得到类似的回复,我不想重复写那么复杂的指令。又比如我经常告诉大模型在返回代码的时候不要解释,那么我希望以后即使我没有明确说不要解释,大模型也能够尽量帮我避免给出解释,这样会让我感到惊喜。

大模型的回复方式越来越智能(千题千面):比如对于一个比较复杂的问题,大模型能够自动使用CoT模式帮我解答并得出正确的回答,而对于更为简单的问题(即使是相同任务),大模型能够直接给出答复,而不是一直使用CoT形式进行回复,这样会显得很呆。又比如对于一个较难的问题,大模型今天还需要使用很复杂的模式进行回复,一段时间之后就能以更为简洁的方式进行回复,这会让我感觉大模型一直在进步,值得期待。

大模型对复杂问题的支持度越来越好:这是对模型的基本要求。

但是,我认为当前的技术架构很难满足期望1和期望2,或者说对人力的要求过大。而对于期望3,目前的智能体、O1是一种解决方案,但智能体或者O1没能和普通模型融合,纳入到一个统一的系统中是一种遗憾。下面解释为什么我认为现行的大模型对齐技术路线无法很好地满足期望1和期望2,无法统一普通模型和专有的智能体模型

三、大模型对齐的技术架构和潜在问题

3.1 指令对齐典型流程

目前业内主要采用SFT+RM+DPO/PPO指令对齐技术架构,其主要由以下几个步骤构成:

  • • 训练一个SFT模型;
  • • 收集query并抓取SFT(optional :第三方模型、人工撰写)的输出
  • • 给SFT输出打分(optional:收集开源数据),得到偏好数据
  • • 在step 3得到的数据基础上训练一个打分模型RM(可以是一个囊括了各种工具的打分系统)(optional: 在偏好数据上训练一个DPO模型)
  • • 收集query,基于SFT/DPO和RM,训练一个PPO模型

在此框架下,PM或RD一般会预先确定一个输出标准(这一输出标准往往反映在评测数据集上),然后按照这一标准构建SFT、RM(DPO)数据,同时在这一标准下评估各个阶段的模型。比如有些模型喜欢在回复的最后给出一段注释,或者在用户要求给出理由的时候先给出核心答案再给出理由。但是,接下来我们会介绍,用一个统一的标准来约束对齐的每个阶段会极大地限制模型的自我进化和对不同需求的满足能力。

3.2 当前框架的潜在问题

统一的输出标准天然地限制了大模型的千人千面、千题千面能力,进而也限制了大模型的自我进化和能力的统一。具体来讲,统一的输出标准具有但不限于如下几点问题:

  • • 不利于输出形式的调整:随着新老用户的交替以及用户对模型需求的变化,模型的期望输出形式也会发生改变。如果模型的输出形式固化,后期调整模型输出形式需要对数据进行大规模的改动——已有数据的退场和新数据的构建。
  • • 不利于实现千人千面、千题千面:统一的输出形式很难满足不同用户的需求,也无法充分挖掘用户的偏好反馈为将来的千人千面做储备。从任务完成层面来看,即使是同一个任务,不同问题的难易程度不同。对于比较难的问题,模型可能需要使用CoT甚至更复杂的Agent模式进行回复;而对于简单的问题,模型可以直接回复。一致性地采用复杂的输出模式会造成资源的浪费,而一致性地采用简单的回复模式又可能导致模型在一些复杂问题上犯错。
  • • 不利于模型自我进化:一个比较理想的模型能力进化路径是从复杂模式出发,不断强化模型在简单模式下的能力,不断形成正确性和简洁性的新平衡。固化模型的输出形式会限制了模型的探索能力,不利于模型实现能力的自动进化。
  • • 不利于在性能上构建护城河:首先,因为无法很好地支持千人千面,导致无法有效形成用户越多-效果越好-用户越多的飞轮,在用户体验上无法和其他平台拉开差异。其次,因为输出的模式化,其他平台可以大规模抓取我方模型的输出,快速对齐我方模型的性能。事实上,如果能让模型从多样化的输出形式出发,引入用户因子,然后逐步根据自身能力收敛输出模式,那么模型的输出就和模型能力进行了深度绑定,第三方模型很难通过抓取该模型的输出来得到和该模型相同的效果。

四、对当前对齐框架的改进思路

基于以上思考,下面讨论如何调整对齐的各个阶段,从而实现上面提到的我期待的大模型。

4.1 SFT

令  表示语言模型分布, 表示对话模型分布。SFT是将模型在给定指令下的回复由语言模型输出空间迁移到对话输出空间,也即  。其实现方式是对齐一些输入输出pairs。得益于大语言模型很好的泛化能力(ICL 能力——当  是两个任务相近样本时, ,SFT之后的对话模型往往有着很好的泛化能力。

SFT不擅长理解和遵循『不要做什么』指令:

和传统的分类任务不同,语言模型的SFT是一个生成任务,不具备很强的排他性。在传统的分类任务中,优化模型使得目标类的概率变大,很容易导致其他类别的概率变小。而在语言模型的SFT中,输出往往不是唯一的,同时为了保留语言模型的知识,优化正例时并不会将正例的概率优化成1而将其他可能的回复的概率优化变成0。

换句话说,SFT只是告诉了模型训练数据中的回复是可行的,但模型无法像普通分类任务那样利用排他性确定哪些输出是不可行(对于排他性比较好的任务,语言模型的分布本身就有较好的排他性,提升SFT训练样本的概率会大幅降低其他回复的概率)。因此,对于一些回复多样性较高的任务,SFT很难避免模型生成不恰当的回复。

从排他性角度来看,SFT擅长『要做什么』指令,但不擅长『不要做什么』指令,尤其是在输出灵活性很高的任务上如创作、摘要。例如对于『生成一篇100字以内的文章』这一指令,其隐含的『不要做什么』的指令是『文章不要超过100字』。对于这一指令,SFT阶段会给模型一个100字以内的文章,但这并不足以让模型确定超过100字的回复是不可行的或者说概率是极小的。如果一定要用SFT来解决这类问题,那么只能不断增加正例数量,挤压负例的概率。但因为这类任务下的正例排他性非常低,这样做的效率也是非常低的。因此,不建议依赖SFT来提升模型对于『不要做什么』指令的理解和遵循能力。

SFT不应该追求统一的输出形式,而应该追求多元的输出形式:

在预定义输出标准的指导下,不少同学追求在SFT阶段对齐用户(或产品、RD)的偏好,固化模型的输出形式;或者选择一种初始模型表现较好的形式作为模型的默认回复形式,比如推理任务下默认使用CoT形式进行回复,信息抽取任务中默认不给解释。这样的做法会给模型的能力升级带来很大的困难:

  • • 不利于后期输出形式的调整:随着新老用户的交替以及用户对模型需求的变化,模型的期望输出形式也会发生改变。如果在SFT阶段就固化了模型的输出形式,后期调整模型输出形式需要对SFT进行大规模的改动——大量输出形式不再合适的数据的存在使得增加少量具有新输出形式的SFT数据很难起作用,须先对已有数据进行大规模的退场。
  • • 不利于对不同尺寸模型的适配:不同模型的能力是不同的,大模型可能可以使用简洁的方式回复给定问题,而小模型可能需要更复杂的输出方式。如果只给定一种回复模式,那么注定很难同时满足多个不同的模型:为大模型建设的SFT数据可能无法很好地调教小模型,而为小模型构建的SFT数据对大模型而言过于累赘低效。
  • • 不利于实现千人千面、千题千面:从用户层面来看,不同的用户对回复的倾向是不同的。ToB用户可能更喜欢简洁的回复,而ToC更喜欢具备详细解释的回复。统一的输出形式很难满足不同用户的需求,也无法充分挖掘用户的偏好反馈为将来的千人千面做储备。从任务层面来看,即使是同一个任务,不同case的难易程度及其恰当的回复形式也是不同的。对于比较难的case,模型可能需要使用CoT或者更复杂的Agent模式进行回复;而对于简单的case,模型可以直接回复答案。一致性地采用复杂的输出模式会造成资源的浪费,而一致性地采用简单的回复模式又可能导致模型在一些复杂cases上犯错。SFT阶段固化输出形式无法实现不同能力的兼容,会导致顾此失彼(比如有些平台需要两套不同的接口来区分Agent和非Agent。)
  • • 不利于模型自我进化:一个比较理想的模型能力进化路径是从复杂输出模式出发,不断强化模型简单输出模式下的能力,不断形成正确性和简洁性的新平衡。而如果在SFT阶段固化模型的输出形式,限制了模型的探索能力,不利于模型在PPO阶段通过大规模探索自动实现能力的进化。
  • • 不利于形成护城河:因为模型输出的模式化,其他平台可以大规模抓取我方模型的输出,快速对齐我方模型。又因为没有及时引入用户信息,导致无法有效形成用户越多-效果越好-用户越多的飞轮。
  • • 不利于争取其他平台的用户:这主要是不同平台的输出标准不同,固化SFT的输出标准会增加用户从其他平台迁移到我方平台的成本和难度。

因此,SFT阶段应该尽可能避免做形式偏好(既包括展示形式,也包括得到输出的路径)的对齐,而是将其放到RM、PPO阶段去完成(后面会介绍如何在RM系统中引入用户偏好来避免上述问题)。SFT更多的是让模型知道给定指令情况下可能可以怎么回复,提高潜在可行回复的采样概率,尽可能保留模型输出的多样性,以便于后期高效调整偏好(比如对于可回答的问题在SFT阶段也可以引入据答)。

4.2 RM

首先做个简单的声明——我认为RM不应该仅仅是一个模型,更应该是一个系统,它可以使用各种工具来进行辅助——因此下面的RM模型指的是一个评估系统。

RM模型是输出偏好的载体,用来高效表达输出偏好。它从收集的偏好数据中进行学习,将标注数据的偏好泛化到没有见过的样本上,提升数据标注的利用率。直观地说,RM模型的作用是高效地从SFT模型的多元化输出中挑选出符合用户要求的输出。

在输入形式上,目前的RM模型主要采用pairwise-response的形式,也即  的形式。这主要是从人工反馈效率的角度考虑——很多时候对于单个回复,标注人员很难给出一个恰当的绝对打分,用户更没有意愿做这样的事情;相对而言,人们更容易给出一个相对打分。于此同时,现实中还存在另一种易得的pointwise-response形式的打分数据,也即  ,其中1表示输出可接受0表示输出不可接受。在这种形式的数据上学习评估系统也是非常必要的,因为:

用户的很多反馈是pointwise的,以下常见的用户反馈形式有多种就是以pointwise形式存在的:

  • • pointwise点赞(+输出拷贝、同一query模板大规模调用)、点踩(多轮输出修正)
  • • pointwise SFT数据
  • • pairwise更好、更差、差不多
  • • 隐式pairwise比较:多轮交互输出修正(可以训练模型判断多轮指令是否是在做输出修正)

基于工具的判断(如长度约束满足判断、否定约束满足判断)更适合做正误判断,而很难做pairwise比较。

因此,如何综合pointwise和pairwise数据形式的RM模型学习是非常必要的。

基于RM的模型千题千面和能力进化

上面的SFT分析中提到要让模型根据其自身能力来调整输出形式,实现自我能力的进化。这一点可以通过在RM中为希望模型进化方向上的输出赋予更高的分值来实现。比如希望让模型的输出可以在保证正确性的前提下越来越简洁,那么可以建立如下的评估标准:简洁且正确 > 繁琐但正确 > 简洁但错误 > 繁琐且错误

在此标准下,通过大规模的反馈学习,即使是同一个任务,模型也可以根据case的具体难易程度来选择尽可能简洁的回复形式(当然,过程中模型可能会陷入local optimal,此时在offline PPO阶段需要配合一些策略鼓励模型探索更多、更好的输出形式,从而实现进一步的能力进化)。

基于RM的千人千面

RM一般需要收敛偏好,将目标用户感兴趣的输出从SFT模型中筛选出来。但是,一个通用模型往往会同时拥有大量不同的用户。对于同一个任务,不同用户的标准也很可能是不同的。从用户角度出发,不能用单个标准去满足不同用户的需求,也不能让模型在不同标准之间做随机选择,这样既无法稳定给出让用户满意的回复也会让用户觉得模型不稳定。因此,千人千面地为不同用户采用不同的标准是很有必要的,这样才能真正地构建数用户和数据壁垒,提高产品竞争力。

假设对于指令  存在两种类型的输出  ,用户  分别倾向于这两种类型的输出。对此,千人千面的RM需要做到:

其中  表示一个RM模型的打分。相较于普通的RM模型,千人千面的RM模型额外引入了用户这个因素。

在技术上,基于RM的千人千面的关键在于如何表示用户  。一个最naive的方式是用id来进行表示,但是这样的数据过于稀疏,不利于模型的泛化。

4.3 DPO/PPO

SFT阶段鼓励模型生成各种可能的输出。但是,其中的一些输出在某些环境下可能不为目标用户所青睐。比如对于中文用户而言,在做电视剧推荐的时候默认推荐美剧就是不合适的;在面向ToB客户时,过长的解释可能是不必要的。

DPO/PPO阶段需要把这些不被用户所青睐的但通常意义可行或者会被SFT产出的回复从SFT模型的输出空间中剔除,实现用户偏好的对齐。出于效率考虑,这一阶段一般使用RM模型来表征用户偏好。鉴于DPO是PPO的另一种表达形式,接下用PPO统指DPO/PPO。

PPO擅长学习『不要做什么』

得益于RM评估的高效性,PPO阶段可以对回复进行大规模采样和评估,此时不仅可以告诉模型什么样的回复是可行的,还可以告诉模型什么样的回复是不可行的(SFT阶段正例样本较少,引入负例容易让模型过拟合负例,将负例中的一些正确pattern的概率也给错误地降低了)。因此,相较于SFT,PPO更擅长学习『不要做什么』,在这个阶段,应加强否定指令的建设。

基于PPO的自我进化

PPO阶段除了引入用户偏好收敛输出形式外还有一个重要任务是实现能力的进化。典型的Online PPO是从SFT模型的输出空间中筛选出RM得分更高的子空间,所以其最终能力是受限于SFT模型的。

当SFT能力覆盖了期望进化方向时,比如期望方向是越简洁越好,同时给定一个query,模型能生成各种复杂度,或正确或错误的输出,此时模型能通过对应的RM模型实现在该方向上能力的进化。而当SFT能力没有覆盖期望的进化方向时,比如模型很难生成既简单又正确的输出,普通的Online PPO无法有效采样出目标方向更好的输出,此时模型进化能力会受限。

这种情况下,最直接的方式是先用SFT扩展模型能力边界。但其实也可以直接在PPO过程中扩展模型的能力边界——在PPO阶段引入offline数据,比如从繁琐但正确的回复出发,自动合成简洁且正确的回复,然后用importance sampling的学习方式将该样本引入到PPO的采样集合并进行学习。我们将在另一篇文章中进一步探讨这一问题。

五、总结

SFT

  • • 不要在SFT阶段固化任务输出标准,而应该采用多元的输出形式;
  • • 基于正例的SFT排他性较差,不擅长学习『不要做什么』,而更适合学习『要做什么』。否定约束、幻觉约束、字数约束不应该成为SFT的优化重点。

RM

  • • RM应该是一个系统而不仅仅是一个模型
  • • RM系统应该要同时支持pointwise和pairwise输入形式的学习
  • • RM要支持千人千面的打分形式
  • • RM要支持模型进化

PPO

  • • 相较于SFT,PPO更擅长学习『不要做什么』,在这个阶段,应加强否定指令的建设和能力优化。
  • • PPO阶段可以通过数据合成来引导模型的能力进化。
  • • 要重视离线数据的使用。



(文:机器学习算法与自然语言处理)

发表评论