ICLR'25 Oral:大型语言模型微调学习动态解析

ICLR'25论文提出通过学习动态分析LLM微调过程,解释幻觉增强和DPO挤压效应等现象,为理解微调机制和提升对齐性能提供新思路。

原文标题:ICLR'25 Oral | 大型语言模型微调的学习动态

原文作者:数据派THU

冷月清谈:

本文深入探讨了大型语言模型(LLM)在不同微调类型中的学习动态,通过分析潜在响应之间影响积累的逐步分解,揭示了指令微调和偏好微调中流行算法训练背后有趣的现象。文章提出了一个假设性的解释,阐述了为何某些类型的幻觉会在微调后增强,例如模型使用回答问题B的短语来回答问题A。此外,文章还扩展了该框架,强调了一个独特的“挤压效应”,解释了离线直接偏好优化(DPO)中观察到的现象:DPO运行时间过长会降低期望输出的可能性。该分析还揭示了在线DPO和其他变体的优势来源。最后,文章还提出通过理解负梯度在离线策略决策优化(Off-policy DPO)中的作用,能够帮助读者记住负梯度,为理解LLM微调提供了新的视角,并启发了一种提高对齐性能的简单有效方法。

怜星夜思:

1、文章中提到的“挤压效应”在DPO中会导致期望输出的可能性降低,那么在实际应用中,我们应该如何避免或者缓解这种效应?除了文中提到的在线策略和损失函数调整,还有没有其他可能的策略?
2、文章提到了模型可能会使用问题B的答案来回答问题A,导致幻觉。除了微调数据的问题,大家觉得这种幻觉现象还有哪些可能的原因?我们应该如何设计prompt来减少这种cross的问题的幻觉?
3、文章分析了SFT、DPO和RL等不同微调方法,并指出它们最终都可以归结为对数概率分布的导数。那么,是不是意味着我们可以设计一种通用的微调框架,能够兼容不同的微调算法?这种框架的挑战和优势分别是什么?

原文内容

来源:AI TIME 论道

本文共4500字,建议阅读5分钟

本文通过详细分析GAN的经典损失函数及其多种变体,揭示了不同类型损失函数各自的优势。


个人信息

作者:任毅,英属哥伦比亚大学博士生

内容简介

学习动态(Learning dynamics)描述了特定训练样本的学习过程如何影响模型对其他样本的预测,为我们理解深度学习系统的行为提供了有力工具。我们通过分析不同潜在响应之间影响积累的逐步分解,研究了大型语言模型在不同微调类型中的学习动态。我们的框架能够统一解释关于指令微调和偏好微调中流行算法训练的许多有趣现象。特别是,我们提出了一个假设性的解释,说明为什么某些类型的幻觉(hallucination)在微调后会增强。例如,模型可能会使用回答问题B的短语或事实来回答问题A,或者在生成响应时不断重复类似的简单短语。我们还扩展了这一框架,强调了一个独特的“挤压效应”(squeezing effect),用以解释在离线直接偏好优化(Off-Policy Direct Preference Optimization, DPO)中观察到的现象,即运行DPO时间过长会使期望的输出结果变得不太可能。这一框架还揭示了在线DPO和其他变体的益处来源。这种分析不仅为理解大型语言模型的微调提供了新的视角,还启发了一种简单而有效的方法来提高对齐性能。

论文地址:    
https://arxiv.org/abs/2407.10490

Background

许多关于深度学习理论的研究通常假设模型从随机初始化开始,经过训练后达到收敛状态,然后推导一些泛化的保证。然而,微调往往是在中间阶段进行的。我们通常会使用一个预先训练好的模型,并进行少量更新,通常会进行早停。因此,以往的一些框架可能很难适用于这些问题。 

这就引发一个思考:为什么不去关注一些更细节或更微观层面的行为?于是乎作者提出了学习动态(learning dynamics)的概念,即“在学习了样本图片之后,模型对样本图片的预测发生了怎样的变化?”
     

What is learning dynamics —— An MNIST Example

学习动态(Learning Dynamics)的具体定义即:当模型学习了更新样本图片后,它在观察样本图片上的预测是如何变化的?这一过程可以通过梯度下降法来进行计算。在一步更新的过程中,通过对图片的观察,我们关注的是其对数概率分布是如何从时刻T到时刻T+1发生变化的。利用一阶泰勒展开,本文得到了这一变化的表达形式。将左边的项移到右边,即可得到一个核心分解,这正是学习动态框架的最关键部分。

其中,K项尤为重要,它代表了经验神经正切(empirical neural tangent kernel),实质上是梯度空间中的内积,可以视为一个相似度量,其norm与图片图片之间的相似性成正比。简言之图片对于图片的影响越大,这一项的范数就越大。

最后,G项称为gap,它主要由损失函数和预测结果决定。在交叉熵情况下,G会呈现特定形式,它本质上是一个向量,表示当前预测分布到one-hot分布的方向。

有这样的分解之后,本文可以据此回答若干问题,如下图所示。例如,当模型学习了数字4后,其对数字9的认知会发生怎样的变化?通过分析发现,由于数字9和4非常相似,因此在更新数字4的同时,数字9在4位置上的分布也会被相应提升。学习动态最重要的描述正是:当更新样本图片时会影响观察样本图片,如果两者非常相似,它们的分布将一起提升。

在MNIST数据集上,作者进行了实验。横坐标表示10类更新的类别。实验结果显示了一些有趣的关系对,如数字4和数字9,数字4和数字7等。由于它们较为相似,因此更新其中一个会影响另一个。在它们收敛到one-hot分布之前,会出现许多小的off-diagonals的峰值。这正是学习动态框架所揭示的现象。


Extension to LLM —— start from SFT

作者尝试将上述学习动态的框架扩展到语言模型的微调(fine-tuning)上。从监督微调(SFT)开始,其分解形式与学习动态框架非常相似,作者观察到该框架的关键部分包括A,K和G。在这个分解过程中,由于自回归特性,输入模型的数据是将X和Y合并在一起处理,X是问题,Y是回答。经过这样的处理后,整个框架可以帮助回答某些问题。

例如,对于同一个问题图片,当模型学习了一个响应(response)之后,其在其他响应上的自信度会如何变化。通过右上角的图,可以将MNIST与SFT这两种情况进行类比。数字4与数字9较为相像,因此图片正与图片也较为相似。图片图片即为DPO数据集中的优选与较少优选的响应,它们都是合理的响应,分别回答图片的问题,只是一个稍好,另一个稍差。而不相像的情况则是,对于某个问题随意答案,即答非所问,这时两个很不相像的回答。甚至换个问题后情况更加不相像。


在语言模型的训练过程中,预测空间图片极为庞大,因此无法像MNIST那样简洁地将十个类别全部显示并绘制热图。本文采取的策略是观察一些典型的响应,从图片出发,观察几类具有代表性的响应。首先是与图片语义上最相近的,如其改写版本。其次是一些图片响应,即对图片问题的不同回答,仅稍微逊色。此外,还包括一些离图片较远的响应,如与问题图片无关但语言上通顺的句子。再远一些则是一些不符合语法规则的响应,即那些随机的乱码,或者是一些正常回答的乱序版本。


接下来,作者开始探讨在实验层面上,先前所述的学习动态分析是否可靠。假设初始分布为灰色,经过几次监督微调(SFT)更新后变为蓝色,最终过拟合模型趋向于one-hot分布,变为红色。

首先,我们观察与图片非常接近或相似的区域。这一区域中的行为表现如何?通过实验发现,图片本身的蓝色线条持续上升,而其周边的响应线条则呈现先上升后下降的趋势。这符合了前述描述,具体原因在论文中有详细解释。

接下来,本文验证了两个相距较远的区域,即离图片非常远、非常不相似的区域的行为表现。这些区域的概率值较低,且规范化后发现其值非常小。此外,它们的概率只会下降而不会上升,这便是这些区域的特点。

第三个结论尤为有趣,本文观察了图片的情况,指的是答非所问的序列。这个序列相当于用第二个问题的答案来回答第一个问题。从图中看,这类蓝色线条持续上升,不会下降,尽管增长速度缓慢,但始终呈上升趋势。这可能提供了一种解释,即模型出现幻觉时,常会用另一个问题的结论或固定序列来回答当前的问题。

第四个结论与相似度有关。尽管两个句子在语义上毫无关联,模型有时也认为两者生成出的响应是相似的。例如,中间部分显示的都是由GPT生成的内容,在学习这些序列时,它们之间的影响很大,但在语义上却毫无关系。这可能是因为语言模型会在输出时有自己偏好的短语或者表达方式。


Squeezing effect and neg gradient——about DPO and RL

1.Similar Gradient from Model view

本文尝试将这一框架扩展到决策优化(DPO)以及强化学习(RL)领域。在进行扩展之前,本文提出一个关键问题:为什么先前的分析过程可以进行扩展?首先,需要找出不同语言模型微调算法之间的相似之处。研究发现,无论算法具体形式如何,其最终的梯度计算都会归于对于对数概率分布的导数上。我们之前了解了SFT的情况,而DPO算法虽然看起来复杂,但通过链式法则进行导数计算后,最终的梯度仍然在这一项上,某些变种算法也如此。

对于强化学习(RL),虽然其损失函数形式与对数概率不同,但经过简单处理后,这一对数概率仍然出现。在计算梯度时,前面的项实际上是一个固定值,例如学习率或权重。这使得本文能够使用一个统一的框架来理解各种算法。


2.Start with DPO

假设存在一个分布,如图中所示,绘制一些箭头,这些箭头由先前动态分析中的项提供。可以采用这种思路分析各种主流算法。在图中,作者重点分析简单的离线策略决策优化(Off-policy DPO)。首先对DPO的对数进行分解,发现其形式与监督微调(SFT)非常相似,都包含A,K与F这三项。主要区别在于DPO中正例与负例都会提供梯度,因此无法将两项合并。与SFT相比,DPO的最大区别在于此处,DPO会出现一个负向的梯度,即图中向下的箭头。接下来我会发现,DPO许多反常的表现都与这个负梯度相关。


3.Squeezing Effect

本文介绍了一种可以证明的“压缩效应”(squeezing effect):只要模型的最后一层采用softmax函数,即便是一个逻辑回归模型,在valley region上施加一个大的负梯度,其效应依然存在。具体来说,valley region指的是图中的这样一个区域。灰色曲线表示训练之前的分布。如果在这个valley region上施加一个很大的负梯度,首先,这个维度上的分布会显著下降。这种现象非常反直觉,有点类似于过拟合,但实际上不同于过拟合。过拟合通常指模型最终与标签对齐,而这里的压缩效应则与标签无关:它强化的是自己本身的某些信念。


4.NG in DPO

接下来,作者分析了负梯度在离线策略决策优化(Off-policy DPO)中的具体作用。首先观察DPO的行为,发现正例图片和负例图片的概率都在下降。作者还观察了一些改写形式,发现其下降幅度之间的关系较为复杂,但这些复杂关系印证了先前的分析逻辑,表明其合理性。同时,本文分析了另一个分布图片,在图中表示为黑色线。发现所有其他响应的概率均在下降,而这些概率被集中到了该分布上,这与先前分析的压缩效应(squeezing effect)相符。

此外,作者进行了其他实验来验证这一结果。这些图显示了两个模型在每个图中的训练过程。两个图中模型在第十个 epoch 开始进行DPO训练,而在此之前进行了SFT训练。结果显示,与仅进行一个 epoch 的SFT训练相比,进行十个 epoch 的SFT训练的压缩效应更强。这与之前的分析一致,即初始分布越尖锐,压缩效应越强


5.NG in RL

最后,本文简要分析负梯度在强化学习(RL)算法中的作用。尽管RL算法中也存在负梯度,但其影响与离线策略相比并不明显。原因有二:

首先,RL算法通常采用在线策略(On-policy),如图所示,压缩效应(squeezing effect)只有在施加负梯度于valley region时才会显著,而在在线策略采样区域则不会产生强烈影响。

其次,RL算法的损失函数形式天然避免了压缩效应。具体来说,对于如GRPO和PPO等算法,其损失函数采用的是min clip形式。相比单纯的clip操作,min clip形式确保在某些情况下不施加负梯度。

本文解释了这种机制,即当优势函数图片大于零时,损失函数表现为橙色线条;当图片小于零时,损失函数表现为蓝色线条。蓝色线条表示在非常小的概率区域避免负梯度,而在较大的概率区域则允许施加负梯度。因此,这种损失函数形式天然地避免了压缩效应,确保训练过程中远离可能导致问题的区域。


Summary

首先,本文阐述了为什么要研究学习动态(learning dynamic)。接下来,本文展示了相关分布,并利用这一框架绘制分布和箭头,分析了各种方法。最后,以离线策略决策优化(Off-policy DPO)为例,分析了负梯度带来的一些问题。为了帮助读者记住负梯度,文中绘制了相关图示。



编辑:王菁



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

抖个机灵,有没有可能模型觉得问题A和问题B的答案更“有趣”或者更“有创意”?毕竟有时候模型会为了追求流畅性和新颖性而牺牲准确性。所以,prompt里是不是可以强调一下“准确性”的重要性? 加个限定模版:“请根据已知信息,准确的回答问题A: {问题A的具体描述}”

从理论角度补充一点,挤压效应本质上和模型overconfidence有关。大家report preference时往往只有细微差别,reward model可能只是给preferred response非常小的优势,但DPO会无脑放大这个优势,最终导致次优解被squeeze。想缓解的话,可以考虑以下思路:
1. Calibration: 优化reward model,使其给出更准的reward打分。
2. Early stopping: 避免过度训练,在挤压效应开始显现之前停止训练。
3. Regularization: 在DPO loss中加入正则项,限制模型参数的变化。

这个有点像知识图谱里的错误关联,模型可能学到了一些错误的映射关系。除了prompt工程,可以考虑在训练过程中加入contrastive learning,让模型能够更好地区分不同的问题。 或者,也可以在解码的时候,使用一些约束条件,避免模型生成与当前问题无关的内容。

理论上是可以的!如果我们能把不同的微调算法都抽象成对数概率分布的优化问题,然后设计一个统一的优化器,就可以实现通用的微调框架。但挑战在于,不同的算法可能对优化器的要求不同,比如有些算法需要更精细的梯度控制,有些算法需要更强的探索能力。找到一个能够兼顾所有这些需求的优化器,难度很大。

我觉得最大的优势是可以简化微调流程,降低开发成本。不同的任务和数据集,只需要调整一些配置参数,就可以使用同一种框架进行微调。但劣势也很明显,通用性往往意味着牺牲了针对性。针对特定任务,专门设计的微调算法,往往能够取得更好的效果。通用框架可能很难达到这种性能。