文章目录
本文为《A Survey of Large Language Models》系列笔记的一部分,原论文链接:arxiv2303.18223
在完成预训练之后,LLM 的能力还可以根据具体目标进一步进行调整。
两种主要的后训练方法:
-
指令微调(Instruction Tuning):主要用于增强或激活 LLM 的任务能力。
-
对齐微调(Alignment Tuning):主要用于使 LLM 的行为更加贴近人类价值观和偏好。
指令微调(Instruction Tuning)
进行指令微调的流程如下:
-
收集或构建格式化的指令示例(instruction-formatted instances);
-
使用这些格式化的示例,以监督学习的方式对 LLM 进行微调。
格式化样本构建
一个指令格式化的样本(instruction-formatted instance)由以下几个部分组成:
-
任务描述(instruction):说明模型应该执行什么任务;
-
可选的输入(optional input):模型需要处理的数据;
-
对应的输出(corresponding output):期望的模型回答;
-
少量示例(optional demonstrations):可选的几个示例,帮助模型理解任务格式和预期答案。
格式化 NLP 任务数据集
近期的一些工作在这些标注数据集中添加了人工撰写的任务描述(task description),以解释任务目标,从而帮助大语言模型(LLMs)理解任务。
经过指令微调后,LLMs 能够很好地泛化到其他未见过的任务,只要这些任务带有合适的任务说明。“任务说明”是 LLM 泛化能力的关键因素。PromptSource 用于高效地创建、分享和验证不同数据集的任务说明。
格式化日常聊天数据
公开的 NLP 数据集存在指令多样性不足或与真实人类需求不匹配的问题。
InstructGPT 提出了一种方法:将真实用户提交给 OpenAI API 的查询语句作为任务指令。此外,为了进一步丰富任务类型,还请人工标注人员创作一些贴近现实生活的任务指令。
接着,另一个小组的标注人员为这些任务指令编写响应内容。最后,将一条指令(即收集的用户查询)与相应的输出(即人工撰写的回答)配对组成一个训练样本。
考虑到目前高质量公开聊天数据的缺乏,一些研究开始收集用户的聊天请求作为输入数据,并使用 ChatGPT 或 GPT-4 生成响应作为输出数据。一个著名的数据集示例是 ShareGPT 的对话数据。
格式化合成数据
为了减少人工标注或手动收集的负担,已有一些半自动的方法,这些方法通过将已有样本输入大语言模型(LLM)来合成多样化的任务描述和训练实例。
Self-Instruct 方法仅需 175 条实例作为初始任务池。之后,它随机选取几条实例作为示范(demonstration),并提示 LLM 生成新的任务指令和对应的输入输出对。经过质量和多样性筛选后,这些新生成的实例会被加入任务池中。
然而,Self-Instruct 方法生成的样本可能过于简单或缺乏多样性。WizardLM 的 Evol-Instruct 提升样本复杂性与多样性;Self-Align 引入人类偏好准则,过滤不合格合成数据;
构建指令数据集的关键因素
指令的规模化
已有大量研究表明,扩大任务数量可以显著提升大语言模型(LLMs)的泛化能力。但是达到一定水平后提升不再明显。
提高任务描述在长度、结构、创造性等方面的多样性也会带来好处。关于每个任务的数量,少量实例通常就可以饱和模型在该任务上的泛化性能。
格式设计
自然语言格式的设计对大语言模型(LLMs)的泛化性能有很大影响。我们可以在现有的数据集中添加任务描述和可选的示例(demonstrations)到输入输出对中。任务描述是最关键的部分。适当数量的示例(exemplars)作为演示可以带来显著提升。
将其他成分(如:避免事项、理由、建议等)加入指令中,可能效果不显著甚至适得其反。推理的数据集中,加入思维链示例(CoT)可以激发LLMs的逐步推理能力。使用CoT与非CoT示例混合训练,能在多种推理任务上取得良好表现。
指令质量改进
数据质量对指令微调的模型性能至关重要。精心设计提示词可以提升指令的复杂性与多样性;知识分类体系有助于更精细的指令生成。
指令选择
面对海量指令数据,高质量筛选至关重要。现有工作主要采用两类方法:
-
利用质量评估指标(metrics);
-
使用大语言模型(LLM)作为评判模型(judge model),对所有指令进行打分排序,然后选择得分较高的指令样本。
在指标方面,困惑度(perplexity)和其他启发式指标(如长度)被广泛使用。还有用IFD等复杂指标计算的。
为了保证所选指令的多样性和代表性,也有研究引入了基于多样性的采样方法(diversity-aware sampling)。
若已知具体下游任务数据,还可以使用跨样本梯度相似性(cross-instance gradient similarity)来衡量每个指令样本对目标任务的贡献。
指令微调策略(Instruction Tuning Strategies)
与预训练不同,指令微调通常更高效,因为它只使用中等数量的样本进行训练。由于指令微调可以视为一种监督学习过程。它在多个方面与预训练存在差异,比如:
-
训练目标:使用的是序列到序列的损失函数(sequence-to-sequence loss);
-
优化配置:通常使用更小的 batch size 和学习率。
下面是四个需要重点考虑的地方。
数据分布的平衡
由于指令微调涉及多个任务的混合训练,因此在微调过程中平衡不同任务的比例是非常重要的。
-
被广泛采用的方法是将所有数据集合并后,均匀地对样本进行采样。(examples-proportional mixing strategy)
-
提高高质量数据集的采样比例,通常可以提升模型性能。
-
为了防止较大的数据集占据主导地位,常常设置样本上限(maximum cap)来限制每个数据集在微调中所包含的最大样本数量,几千到几万个样本。
目前的指令数据集往往聚焦于增强大模型在某一方面的能力,因此单个数据集通常无法带来模型能力的全面提升。因此,推荐使用多种指令数据集的混合。
将指令微调与预训练结合
将原始预训练数据和指令微调数据混合使用,有助于模型训练更加稳定;此外,与其采用分开的两阶段流程(即先预训练,再指令微调),有些研究尝试使用多任务学习的方法,从头开始训练模型。
多阶段指令微调
在指令微调中,常用的指令数据主要有两种类型:任务格式的指令和日常聊天类的指令。
除了仔细混合不同种类的数据外,还可以采用一种叫做“多阶段指令微调策略”(multi-stage instruction tuning)的方式:
-
首先使用大规模任务类指令对 LLM 进行微调;
-
然后在第二阶段再用聊天类指令数据进行微调;
-
为了避免模型遗忘第一阶段学到的能力(即“能力遗忘”问题),第二阶段可以适当继续加入一些任务类指令数据。
实际上,这种多阶段的策略也可以应用于其他类型的指令微调设定,比如可以设计多个微调阶段,每一阶段的任务在难度和复杂度上逐渐提升。
其他方法
多轮对话的数据处理
如果将整段对话拆分为多个“上下文-回复”对进行训练,拆分得到的训练样本中会重复出现对话中的内容(如之前的发言),导致训练资源浪费。改进的方案可以将完整的对话一次性送入模型,利用一个“损失掩码(loss mask)”机制,让模型只在机器人回复部分计算损失。
为 LLM 建立“自我身份”意识
将 LLM 部署于现实应用中,通常需要它了解自己的“身份”。一方面可以在指令数据训练时构造身份描述。另一方面可以在推理阶段对输入加前缀提示,告诉对话的身份背景。
拼接多个样本形成长序列,尽可能接近模型的最大输入长度(max length),以提高训练效率。也是一个方法。
指令微调的效果
性能提升
指令微调是一种普适的能力增强方法,适用于各类语言模型(包括小型预训练语言模型)。因为它的数据集非常小,所以它是一种低成本、高收益的模型增强手段。
任务泛化能力
指令微调能显著增强 LLMs 在真实任务场景中的解决能力。解决重复生成和只完成部分任务而没有完全响应用户指令的问题。经指令微调的 LLM 还能将任务能力泛化到不同语言的相关任务上。
领域专精化
为了让通用型 LLM 成为专业领域的“专家”,指令微调是一种非常有效的方法。包括医学,电商,法律,金融和算术计算。
对齐微调
背景与评估标准
背景
语言建模目标仅关注预测下一个词,而没有考虑人类的价值观或偏好。导致其输出有害、误导或带偏见的内容;或者输出虚假信息;或者追求了不准确的目标。
提出了“人类对齐”(Human Alignment)的概念,即让语言模型的行为符合人类的期望。
与原始的预训练或指令微调(instruction tuning)不同,对齐需要考虑全然不同的标准,包含:有用性(Helpfulness)、诚实性(Honesty)、无害性(Harmlessness)。
这里有一个新的术语,对齐代价(Alignment Tax):指 LLM 为了符合人类价值而可能在某些能力上产生损失的现象。
对齐标准
有三个最具代表性的对齐标准被广泛采用于现有研究文献中:
-
有用性(Helpful)
-
诚实性(Honest)
-
无害性(Harmless)
有用性(Helpfulness)
LLM 应该明确地尝试帮助用户解决任务或回答问题,并且尽可能简洁高效地完成。
因为很难精确定义和衡量用户的意图,实现“有用”行为的对齐对 LLM 来说是一个挑战。
诚实性(Honesty)
一个对齐到“诚实”的 LLM 应该向用户呈现准确的内容,而不是捏造信息(避免 hallucination)。
诚实性相比有用性和无害性更客观,因此“诚实对齐”可能在开发上对人工干预的依赖更小。
无害性(Harmlessness)
要做到无害,LLM 生成的语言不应具有冒犯性或歧视性,识别隐蔽的恶意请求。理想情况下,当模型被诱导执行危险行为(如犯罪)时,应该礼貌拒绝。
有害的标准具有很强的主观性,而且是基于人类认知制定的,难以直接作为 LLM 的优化目标。
实现方式
在现有研究中,常见的实现方式之一是 Red Teaming(红队测试):即通过人工或自动化手段对 LLM 进行对抗性测试,诱导其生成有害内容,然后更新 LLM 以防止其产生此类输出。
人类反馈收集(Collecting Human Feedback)
在预训练阶段,LLM 是基于语言建模目标,在大规模语料库上进行训练的。然而,这个过程无法纳入人类对 LLM 输出的主观和定性评价(称之为 human feedback)。
在这一部分,我们将讨论如何挑选人类标注员团队,用于收集反馈数据。
人类标注员的选拔
在人类反馈数据生成中,当前主流方法是人工标注,因此选择合适的标注员至关重要。为了提供高质量反馈,标注员通常需要具备一定教育水平和出色的英语能力。然而这些仍旧会产生偏差和低质量反馈。
为解决这一问题,InstructGPT [66] 在标注员选拔中增加了筛选环节:
-
研究人员先亲自标注一小部分数据
-
测量标注员与研究人员之间的一致性
-
选出一致性最高的标注员进行后续标注
还有会引入 “超级评审员”(super raters) 的方法:
-
先评估所有标注员的表现
-
选择表现优异(高一致性)的作为 super raters
-
在后续研究中优先让 super raters 与研究人员合作
此外,在标注 LLM 输出时,为了提高标注质量,还应为标注员提供详细的说明,并即时给予指导。
人类反馈收集方法
基于排序的方法(Ranking-based approach)
早期标注员只选择最佳输出(粗粒度评价),不考虑更细粒度的对齐标准。后使用 Elo 评分系统,通过比较候选输出得出偏好排序(preference ranking)。
基于问题的方法(Question-based approach)
人工标注者可以通过回答研究人员设计的特定问题提供更详细的反馈,这些问题涵盖了对齐标准以及对大语言模型的额外约束。WebGPT利用此来收集该gpt是否收集了有用的搜索信息。
基于规则的方法(Rule-based approach)
Sparrow不仅选择标注者认为最好的回答,还使用一系列规则来检测模型生成的回答是否符合“有用、正确、无害”的对齐标准。这样可以获得两种人工反馈数据:(1)通过成对比较模型输出质量获得的响应偏好反馈;(2)通过收集人工标注者评估(即一个分数,用来表示生成输出在多大程度上违反了规则)获得的规则违规反馈。
RLHF(Reinforcement Learning from Human Feedback)
RLHF 使用强化学习(Reinforcement Learning, RL)算法(近端策略优化 Proximal Policy Optimization, PPO)来根据人类反馈训练奖励模型(Reward Model),并让 LLM 学习如何最大化该奖励。
RLHF 系统
RLHF 系统主要由三个关键组件组成:一个需要对齐的预训练语言模型(LM)、一个从人工反馈中学习的奖励模型(RM),以及一个用于训练 LM 的强化学习(RL)算法。
奖励模型提供(经过学习的)指导信号,这些信号反映了人类对 LM 生成文本的偏好,通常以标量值的形式表示。奖励模型可以有两种形式:
-
基于人类偏好数据微调过的语言模型;
-
从零开始训练的语言模型。
RM通常不同于LM。
近端策略优化(PPO)是现有研究中用于模型对齐的广泛应用的 RL 算法。
步骤
1. 监督微调(Supervised fine-tuning, SFT)
通常需要收集一个监督数据集,其中包含输入提示(指令)和期望输出,用于对 LM 进行微调。这些提示和输出可以由人工标注者为特定任务编写,同时确保任务的多样性。
这一步是可选的。
2. 奖励模型训练(Reward model training)
第二步是利用人工反馈数据训练奖励模型(RM)。具体流程是:使用 LM 对采样得到的提示生成一定数量的输出文本,然后邀请人工标注者对这些输出对进行偏好标注。标注形式可以多样化,其中一种常见方式是对生成的候选文本进行排序。
接着,RM 被训练成可以预测人工偏好的输出。在最新研究中,响应对的偏好标注已由 AI 代理(通常是对齐过的大语言模型)替代人工完成,这种方法被称为来自 AI 反馈的强化学习(RLAIF)。这样做的好处是增加模型的有用性。
3. 强化学习微调(RL fine-tuning)
在此步骤中,LM 的对齐(即微调)被形式化为一个强化学习问题。在该设定下:
-
策略( π \pi π):预训练 LM 充当策略,输入提示后输出文本;
-
动作空间( a a a):词汇表;
-
状态( s s s):当前已生成的 token 序列;
-
奖励( r r r):由 RM 提供。
为了避免与初始 LM偏离过大,通常会在奖励函数中加入惩罚项。例如,InstructGPT 使用当前 LM 与初始 LM 输出结果的 KL 散度作为惩罚。
第二步和第三步可以多轮迭代,以更好地对齐 LLM。
由于 RL 算法的不稳定性,最新研究将 RL 微调替换为另一种监督微调。
RLHF 的实用策略
奖励模型训练优化
使用更大的奖励模型(如与原始模型规模相当或更大)通常效果更好,因为大规模奖励模型在评估 LLM 输出质量时表现更优。
用已预训练的聊天模型初始化 RM,可减少信息不匹配。用基于人工标注对齐数据集中输入提示的优选回复的语言模型损失 LM loss 正则化防止大模型 RM 过拟合。
相比于单个RM,用多 RM 分别优化不同对齐标准,再用均值/加权融合,提高灵活性效果更佳。
强化学习训练优化
建议在 RL 训练前对语言模型进行充分的监督微调,以保证其有较好的模型能力。
对 LLM 进行“最佳输出”微调方法很有用,具体步骤:
-
给定一个提示,LLM 先通过采样算法生成 N 个输出;
-
奖励模型从中选出最优候选,供 LLM 学习;
-
在最佳样本上微调 LLM 直至收敛;
-
最后再进行 RL 训练以进一步提升性能。
高效训练技巧
将 RM 单独部署,通过 API 与 LLM 协作,可以降低单机负载。
由于 RLHF 需要 LLM 生成多个候选输出,与其多次调用采样解码过程,不如使用束搜索(beam search),一次解码即可生成多条候选响应。
过程监督的 RLHF(Process-Supervised RLHF)
RL 训练的监督方式主要有两种:结果监督信号(outcome-supervision signals)和过程监督信号(process-supervision signals)。
-
结果监督 RLHF:用一个定量分数来评估 LLM 生成的完整文本质量。
-
过程监督 RLHF:对生成内容的每个独立组成部分(如句子、单词或推理步骤)进行评估,利用细粒度的监督信号来引导训练,帮助 LLM 修正不理想的生成内容。
下面讨论过程监督的RLHF的两个方面。
获取细粒度监督信号
OpenAI 发布了一个细粒度标注数据集 PRM800k。包含数学题和标注的推理,每个数学题的推理步骤被标记为正面、负面或中性。
考虑到人工标注的成本与效率,一些方法尝试自动化中间推理步骤正确性的标注,例如用强大的 LLM 直接替代人工标注者;使用蒙特卡洛树搜索(MCTS)。
在获得细粒度监督信号后,现有研究通常用它来训练过程监督奖励模型(PRM),这些模型能在 RLHF 过程中生成步骤级奖励(如基于句子或基于 token 的奖励)。
使用 PRM
现有研究主要将这些细粒度信号用于评估 LLM 回复中的各个部分,然后引导 LLM 调整生成行为,使其最大化整体回复的奖励。
专家迭代(expert iteration)是一种有效的 RL 算法,被用于通过学习专家策略来改进基础策略。专家迭代通常包括两个阶段:
-
策略改进(policy improvement):专家策略在 PRM 指导下进行系统搜索,生成样本;
-
蒸馏(distillation):将第一阶段由专家策略生成的样本用于监督微调,从而改进基础策略。
除了专家迭代,PRM 还可用于:
-
对 LLM 生成的最终答案候选进行重新排序;
-
在逐步推理中选择更优的中间推理步骤。
无 RLHF 的对齐
RLHF有许多缺点。首先,RLHF 需要同时训练多个语言模型,这在算法上步骤繁琐,在实际中也占用大量内存。此外,RLHF 常用的 PPO 算法相当复杂,并且对超参数非常敏感。
越来越多的研究探索直接用监督微调来优化 LLM 以符合人类偏好。
概述
非 RL 对齐方法的基本思想是直接在高质量的对齐数据集上,通过监督学习微调 LLM。这种方法基本假设在数据集中,已经注入或包含了防止不安全行为的反馈或黄金规则,因此 LLM 可以通过合适的微调策略,从这些示例数据中直接学习对齐的行为。
实现这种方法的两个关键问题是对齐数据集的构建和微调损失函数的设计。
在损失函数方面,与原始的指令微调损失相同对 LLM 进行微调,同时也可以引入辅助学习目标以提升对齐效果。
在数据集构建方面,对齐数据集可以由已对齐的 LLM 自动生成,或对现有示例进行改进。此外,还可以复用已有的奖励模型筛选高评分的回答。
对齐数据收集
基于奖励模型的方法
-
RAFT:使用基于人工偏好数据训练的奖励模型对 LLM 的回答进行排序,收集高分回答用于监督微调。
-
Quark:根据奖励分数将 LLM 的回答分为不同分位区间(quantiles),并给每个分位区间分配一个特殊的奖励标记(reward token)来表示该分位的奖励水平。随后,在条件约束为最高奖励标记的情况下,引导 LLM 生成高质量回答。
-
ILF:给定初始答案及相应的人工反馈,先让 LLM 生成改进版答案,然后利用奖励模型选择与反馈最匹配的答案进行后续训练。
基于 LLM 的生成方法
RM需要大量人工标注的数据,成本高。因此,一些研究探索利用强大的 LLM 自动生成与人类对齐的数据。
Constitutional AI 基于人类设定的原则,会批判自己有害的回答,并反复修改,最终得到对齐的回答。
Self-Align先生成多样化指令,再用原则+示例引导生成有用、合乎伦理的对齐数据。
FIGA用对比学习结合正/负样本(改进前后回答)训练,使模型理解有效的细粒度改进。
基于 LLM 的交互方法
Stable Alignment 构建了一个由多个 LLM 智能体组成的模拟交互环境,在其中 AI 智能体不断相互交流并获得改进反馈。具体流程是:当一个中心智能体收到指令时,它会生成一个回答,并将其分享给邻近的其他智能体。这些“评论”智能体会生成反馈,包括对该回答的评分和修改建议。然后,中心智能体根据这些建议修改原始回答。
监督式对齐微调策略
在获得对齐数据之后,设计合适的微调策略对于直接对齐同样关键。一个直接的方法是基于对齐数据,使用传统的序列到序列(sequence-to-sequence)目标来优化 LLM。下面是一些改进方案。
主训练目标
由于对齐数据通常由输入指令和输出回答组成,主要训练损失仍是序列到序列学习的传统交叉熵损失(cross-entropy loss)。在此基础上有一些改进。
CoH:在标注的优质回答前加上 “A helpful answer:”,在差回答前加上 “An unhelpful answer:”,并且通过特殊掩码只对回答部分的 token 计算损失。
Quark:将模型回答按对齐质量分成不同分位区间,并在每个回答前加上一个表示该分位奖励水平的特殊奖励 token。
这些方法基本都采用最大似然(MLE)目标。
直接偏好优化(Direct Preference Optimization, DPO)
DPO 提出用策略模型将原始的奖励建模目标仅依赖于策略模型进行重构,从而没有RM了。
已有研究提出了若干改进策略以提升效果或效率:
-
将正样本和负样本的优化分解为两个独立部分;
-
在目标函数中移除参考模型的概率项。
-
FIGA 设计了 token 级别的对比损失,
辅助优化目标(Auxiliary optimization objectives)
一些研究提出了辅助训练损失来增强对齐数据的学习(除了交叉熵):
-
排序损失(Ranking loss):由于每条指令的多个回答都可由奖励模型打分,可以用排序损失训练模型保持这些回答的相对顺序。
-
潜空间距离与正则化:潜空间中的距离评估模型输出与人类偏好的相似性,并引入特定的校准与正则化损失,以基于人类偏好数据调整候选序列。
-
指令-回答相关性对比学习:将正确的指令-回答对的概率提高,同时降低错误的指令-回答对的概率。
SFT vs RLHF
指令微调(instruction tuning)是用格式化的示例数据(指令与期望输出配对)训练预训练语言模型的过程。在LLM中,它也被称为SFT。
由于 SFT 与 RLHF 是 LLM 的两种主要适配微调方法,理解它们之间的联系与差异很重要。
两者的整体比较
文本生成问题可以形式化为基于强化学习的决策过程。给定一个提示作为输入,LLM 的任务是生成与提示匹配的文本补全,这一过程是逐步完成的,一个一个token生成的。目标是生成高质量文本。
总体而言,RLHF 与 SFT 都是优化上述 LLM 决策过程的不同训练方法:
-
RLHF:先训练奖励模型,再用 RL(如 PPO)改进 LLM。
-
SFT:采用教师强制(teacher forcing)方式,直接最大化示例输出的似然。
SFT 是基于示例数据的局部优化(token 级损失),而 RLHF 是基于人类偏好的全局优化(文本级损失)。
SFT 的优缺点
优点:
-
在各种基准测试中,SFT 已被证明能有效提升 LLM 的性能。
-
能显著增强任务泛化能力,并能灵活赋予特定功能(如建立聊天机器人的身份)。
缺点:
-
SFT 不能注入新能力。
-
当演示数据超出 LLM 原有知识或能力范围时,可能会引发幻觉(hallucination)。用更强模型蒸馏弱模型时也会有这个问题。
-
SFT 依赖示例数据的风格、质量与偏好,不同标注者之间的差异会影响学习效果。
-
在 SFT 阶段,高质量指令数据(而非数量)是有效训练 LLM 的首要因素。
RLHF的优缺点
优点:
-
研究表明 RLHF 有助于减少有害回答、提升模型能力。
-
(LLaMA 2 显示) RLHF 能同时提升 helpfulness 和 harmlessness 分数;
-
RLHF 中的人类主要提供偏好标注,能在很大程度上减少 SFT 中的标注差异问题。
-
偏好标注比编写演示数据更容易,且标注者能评价比自己产出更优的生成内容,从而探索更广的状态空间。
-
本质上,RLHF 通过对比自生成的好与坏回答,引导 LLM 学习正确策略,而非被动模仿外部示例,因此能缓解 SFT 的幻觉问题。GPT-4就已证明 RLHF 对减少幻觉的重要作用。
局限性:
-
继承了经典 RL 算法的缺点,如样本效率低、训练不稳定。
-
在 LLM 适配中,需要一个强大的 SFT 模型作为初始检查点才能高效获得好效果。
-
人类标注者需参与复杂的迭代优化流程(如提示选择、奖励模型训练与 PPO 训练的调度、超参数设置),这些细节都会显著影响性能。
参数高效模型适配(Parameter-Efficient Model Adaptation)
由于 LLM 拥有海量模型参数,执行全参数微调的成本非常高。在本节中,我们将探讨如何对 LLM 进行高效微调。
参数高效微调方法(Parameter-Efficient Fine-Tuning Methods)
高效微调方法目前主要有四种:适配器微调(adapter tuning)、前缀微调(prefix tuning)、提示微调(prompt tuning) 和 LoRA。

FFN:feed-forward network
MHA:multi-head attention
Adapter Tuning(适配器微调)
适配器微调在 Transformer 模型中加入小型神经网络模块(称为 adapter)。首先将原始特征向量压缩到更小的维度(经过非线性变换),然后再恢复到原维度。adapter模块会被集成到每一层 Transformer 中,通常串行插入到两个核心部分(注意力层和前馈层)之后。adapter也可以并行,也就是大于1个。微调时,只优化适配器模块的参数,原始语言模型的参数被冻结。
Prefix Tuning(前缀微调)
前缀微调在语言模型的每一层(即K,V) Transformer 前面加上一组前缀(trainable continuous vectors,可训练连续向量),这些前缀是任务特定的,可看作虚拟 token 嵌入。推理时,给每个输入都加上相同的 learned prefix 向量。
直接训练不稳定而且参数量大,而是训练一个较小的可学习向量表(prefix embedding table),然后用一个 小 MLP 把它映射到 K/V 参数空间。
Prompt Tuning(提示微调)
与前缀微调不同,提示微调主要是在输入层加入可训练提示向量。任务特定的提示嵌入与输入文本嵌入结合,再输入到语言模型。
代表方法:
-
P-tuning:提出自由形式组合上下文、提示和目标 token,可应用于理解和生成任务,并用双向 LSTM 学习软提示 token 表示。
-
Prompt tuning:直接在输入前加提示前缀,训练时只学习提示嵌入。
特点:由于这种方法在输入层只引入很少的可训练参数,其性能高度依赖于底层语言模型的容量。
LoRA
LoRA 在每个全连接层施加低秩约束来近似更新矩阵,从而减少在下游任务适配中需要训练的参数量。
假设要优化一个参数矩阵 W W W,更新过程可以写成一般形式:
W ← W + Δ W W \leftarrow W + \Delta W W←W+ΔW
LoRA 的基本思想是冻结原始矩阵 W ∈ R m × n W \in \mathbb{R}^{m \times n} W∈Rm×n,同时用低秩分解矩阵来近似参数更新 Δ W \Delta W ΔW,即:
Δ W = A ⋅ B ⊤ \Delta W = A \cdot B^\top ΔW=A⋅B⊤
其中, A ∈ R m × k A \in \mathbb{R}^{m \times k} A∈Rm×k 和 B ∈ R n × k B \in \mathbb{R}^{n \times k} B∈Rn×k 是用于任务适配的可训练参数,且 k ≪ min ( m , n ) k \ll \min(m, n) k≪min(m,n) 为降低后的秩。
LoRA 的主要优点是显著节省内存与存储开销(如显存 VRAM 占用)。此外,只需保留一份大型模型的副本,就可以为不同下游任务维护多组任务特定的低秩分解矩阵来实现适配。
另外,一些研究还探讨了如何更合理地设定秩 k k k,例如:
- 基于重要性得分的分配方法
- 无搜索的最优秩选择方法
LLM 的参数高效微调
一项实证研究 [407] 检验了不同微调方法对语言模型的效果。他们在三个开源 LLM上比较了上面四种高效微调方法。这些高效微调方法在困难任务上表现不及参考基线 GPT-3.5,但在简单任务上可达到相当的性能。总体来看,LoRA 在这些方法中表现相对较好,同时所需的可训练参数显著更少。
PEFT(parameter-efficient fine-tuning)库已在 GitHub 发布,包含多种常用高效微调方法,该库支持多种语言模型(如 GPT-2、LLaMA)以及多种视觉 Transformer 模型(如 ViT 和 Swin Transformer)。
大多数方法主要在小规模的预训练语言模型上测试,而不是在 LLM 上。
9850

被折叠的 条评论
为什么被折叠?



