微信扫码
与创始人交个朋友
我要投稿
当前,越来越多的研究指出,长文本模型(Long-context Model, LCM)在输出时可能会遇到多种问题,其中最为突出的是幻觉(Hallucination)和指令不遵循(Instruction Unfollowing)现象。以下面的示例来说明:
首先,模型会接收到一段详细的背景信息,例如关于美剧《老友记》(Friends)的某个情节的描述。然后,可能会有用户提出这样的问题:“在《老友记》中,Rachel和Monica的职业分别是什么?”根据背景信息,正确的回答应该是Rachel是一名服务员(waitress),而Monica是一名厨师(chef)。然而,长文本模型有时会出现幻觉现象,错误地告诉你Rachel是一名护士(nurse),或者完全忽视问题,转而讲述一段毫不相关的内容,比如“Jackey喜欢游泳”(当然,这种情况出现的概率相对较低)。总的来说,幻觉现象是最常见的问题。
针对长文本模型所表现出的这些问题,可以借鉴先前的研究,将它们统称为长文本领域的不对齐/偏差现象(Misalignment Phenomenon)。近期,众多研究工作揭示了长文本领域中存在的Misalignment现象(LongHalQA[1], L-CiteEval[2])。
在深入探讨长文本模型(Long-context Model, LCM)的非对齐或偏差现象之前,有必要先梳理一下目前的研究进展。
一个较为底层且广泛接受的解释是,长文本模型中包含了检索头(Retrieval Head[3]),这些检索头专门负责根据输入的问题定位长上下文中的关键片段,然后模型可以根据这些关键片段进行回复。(本人也通过这篇论文受益匪浅)。长文本模型出现偏差无非只有两种原因:1)检索头没有定位到关键信息;2)检索头定位到关键信息,但是模型没法处理这些关键信息有效输出。
很简单,训练是最好的方法。然而,遗憾的是,之前大多数长文本模型的研究都集中在如何更好地扩展模型的上下文窗口(Long Context Scaling),即让模型能够“看到”更多的信息。相比之下,关于如何在已有长上下文窗口的模型上获得更好的效果(Long Context Alignment),相关的研究工作却相对较少。这方面的研究主要集中在制作更高质量的“长文本指令数据”,例如Long Alpaca,或者通过LongLoRA、PoSE等高效微调方法来提升长文本模型的效果。
但问题在于,这些方法主要还是集中在监督式微调(Supervised Fine-Tuning, SFT)阶段。众所周知,针对非对齐问题,SFT可能只能做到“哪里不足补哪里”,其收益相对有限。最终,可能还是需要借助强化学习(Reinforcement Learning)这一大杀器来有效地对齐模型,这一点在下面的实践中也会进行详细阐述。
最近,我们在长文本处理领域尝试了一种新的强化学习对齐策略,名为LOGO(Long cOntext aliGnment via efficient preference Optimization)。
Arxiv & Project 传送门(Code还在整理,近期在开发和贡献OpenRLHF[4]库,应该大概率集成或者继承OpenRLHF库之后再Release,月底之前会release出一版本code):
论文:https://arxiv.org/abs/2410.18533
项目:https://github.com/ZetangForward/LCM_Stack
在介绍LOGO方法之前,我们先展示一个preview:该策略仅需在0.3B个token上进行训练,就能够显著提升Llama-3-8B-Instruct模型在长文本实际任务中的表现(这里我们选取的是LongBench数据集),甚至逼近GPT-4这种强闭源模型。
通过图2,我们还能发现一个问题:图(b)中模型的Retrieval Score都大差不差,说明这些模型都能很好的定位长上下文中的关键信息,但是输出结果(Recall Score)确大相径庭。这也和上面的猜想联系起来了:长文本模型可以定位关键信息,但是没法很好的处理结果,换句话说,不知道什么样的结果是对的,什么样的结果是错的。
在长上下文场景下,采用强化学习进行训练(题主这里采用的是偏好对齐,DPO[5])需要考虑两个问题:
LOGO分别从建模目标(Training Objective),长偏好数据构建(Long-Dependency Preference Data Construction) 以及 高效训练(Efficient Training)三个方面介绍了长文本场景下的强化学习训练方法(下面的内容和原文的讲述思路不太一样,但是内容是一样的)。
在长上下文场景下,基于强化学习的对齐策略面临着显存和训练数据的双重挑战。近期很多工作表明,直接使用DPO会出现严重的Reward Hacking和生成能力退化的现象,为了解决这个问题,他们在DPO公式的基础上加了很多约束项,这样不仅让DPO变得更加难以训练和优化,在长文本场景下,也加剧了训练部署的困难。我们主要参考了一个Reference-Free且对生成模型友好的训练目标函数:SimPO[6]。SimPO的目标函数可以写成:
其中 是策略模型(待优化的模型), (奖励差异的缩放因子)和 (目标奖励边际)是用来区分偏好和非偏好响应的超参数。
考虑到偏好数据构建的困难,LOGO采取了一种折中策略,即不特定标注错误类别,而是将所有错误都视为负样本。这样,通过扩大负样本空间,一方面避免了标注的困难,另一方面可能使模型更好地学习。因此,LOGO的目标函数可以写为:
这里 是一个偏好数据中的负样本数目,即一条训练数据中包含一条正样本和个负样本。最后,考虑到Reward Hacking和生成能力退化的问题,我们加了一个SFT的正则项(通过 去控制相对强度)优化目标函数:
有了上述的建模目标,构建对应的偏好数据则方便和简单许多,因为我们压根不需要考虑特定的错误类型(题外话:让模型生成错误答案还是非常简单的)。具体可以参考下面这个示意图:
简单来说分为三个步骤:
最后就是如何部署高效的训练了。一方面,通过上述的Reference-Free 训练目标函数和位置编码合成的策略可以大大减少所需的GPU显存大小,LOGO采用了LoRA(Low-Rank Adaptation)训练方法,这是一种参数高效的微调技术,它通过在预训练模型的权重上添加低秩矩阵来实现微调,而不是直接修改原始权重。在叠满这些buff之后,所有的训练仅仅在一台A800的机器上完成,且在16小时的训练时间之内,就可以让Llama-3-8B-Instruct在长文本任务上的性能得到提升和改善。
真实任务上的效果 这里我们采用了LongBench
合成任务上的效果,测试LOGO的长文本窗口扩充的能力
短文本任务上的效果,这里我们挑选了MMLU、TruthfulQA、ARC三个常用的测试集,分别覆盖了多种语言任务、事实核查和多项选择问答等不同的挑战。我们发现,如果全量训练模型(下面中间图红色的箭头),长文本模型可能会在长文本任务上取得不错的性能,但这种训练方式往往会导致模型在短文本任务上的能力下降。这种现象可以被看作是“对齐税”。LOGO通过使用LoRA训练方法,有效地避免了全量训练可能带来的问题,所以所以原始的能力非但没有丢失,还小涨了一点。
(部分)分析实验:不同长文本对齐算法之间的比较。我们比较了两种标准的SFT策略:一种是在整个序列上施加交叉熵(CE)损失,另一种是仅在最终预测上施加CE损失。实验结果显示,这两种方法都会导致模型性能达到一个瓶颈。一方面,这可能是由于训练数据的质量所限;另一方面,CE损失仅推动模型输出接近真实标签,但并未教会模型如何避免错误答案。反观LOGO,可以当模型获得一个持续增长的效果,同时,我们还通过检索头计算了Retrieval Score,越大的Retrieval Score表明模型可以定位到更多的重要信息。这表明,LOGO甚至还激活了检索头的能力。
随着人工智能技术的不断进步,长文本模型在理解和生成自然语言方面展现出了巨大的潜力。然而,这些模型在处理长文本时常常会遇到幻觉和指令不遵循等问题,这些问题限制了它们在实际应用中的有效性。
在探索长文本对齐的征途上,位置编码的激活(窗口扩充技术)已经被很好的解决。同时,我们已见证令人振奋的进展,如o1-preview模型的问世,它们在长推理链和真实使用场景中展现出了卓越的性能。然而,这一领域的研究与应用仍然面临着诸多挑战和未知,随着模型推理能力越发被重视,未来的研究可能会集中在如何进一步提升这些模型的推理能力和效率,以及如何将它们更好地集成到实际应用中等。
最后,我依然保持着这个观点: 长文本模型的研究应该从“更长上下文”的竞赛中跳出来,转而探索如何使模型在给定的上下文中做出更精准、更符合人类思维方式的回应。这可能涉及到模型的理解和推理能力的进一步提升,以及如何让模型的决策过程更加透明和可解释。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-07-11
2024-07-11
2024-07-09
2024-09-18
2024-06-11
2024-07-23
2024-07-09
2024-07-20
2024-07-12
2024-07-11