问题:
精调过程中模型倾向于遗忘预训练的泛化能力,以获得针对特定任务的专业能力(speciality)。
方案:
作者比较了不同的方法来缓解这种遗忘,包括持续学习方法(L1、L2正则化、知识蒸馏)、模型平均方法(Wise-FT)和参数高效精调方法(LoRA)。结果显示L1、L2、知识蒸馏和Wise-FT可以有效缓解泛化能力的遗忘。其中Wise-FT表现最好,可以很好平衡专业性和泛化性。
另外的LoRA的表现不稳定,当精调任务难以适应时,其遗忘程度严重。作者分析这可能与LoRA依赖低秩结构有关。
之前方案:
- L1正则化:在损失函数中添加L1范数正则化项|θ - θ0|,θ为精调后的参数,θ0为预训练参数。这个项惩罚θ与θ0的距离,迫使θ不能离θ0太远,从而保留预训练的知识。
- L2正则化:同样在损失函数中添加L2范数正则化项||θ - θ0||22,起到类似效果,限制θ的改变幅度。
- 知识蒸馏:利用预训练模型作为老师模型,精调后的模型作为学生模型。在训练学生模型时,添加损失函数项||fθ(x) - fθ0(x)||22,迫使学生模型的输出与老师模型相似,从而保留预训练知识。
上述方法实质上都是通过正则化的方式,约束精调过程中参数或输出不能与预训练参数或输出差距太大,起到保留预训练泛化知识的作用。作者的实验结果显示,相比于纯粹精调,这些方法可以明显改善模型在非精调数据集上的泛化性能,证明它们确实能够有效缓解泛化能力的遗忘。尤其是L2正则化和知识蒸馏的效果很好。
Wise-FT
- Wise-FT的思想很简单,就是在预训练参数θ0和精调后的参数θ之间做线性插值。
- 即生成新的模型参数:θ' = αθ0 + (1-α)θ,这里α是0到1之间的系数。
- α控制了预训练参数和精调参数的比例。当α接近1时,模型参数更偏向预训练参数,可以保留更多预训练的泛化知识。
- 当α接近0时,模型参数更偏向精调参数,可以获得更好的精调性能。
- 选择一个适当的α,可以平衡预训练泛化能力和精调特定任务的能力。
- 作者的实验结果显示,Wise-FT确实可以在保持足够精调性能的同时,明显改善模型在其他数据集上的泛化能力。
- 在视觉语言模型和语言模型上,Wise-FT都表现出色,优于其他正则化方法。
- 这表明 通过模型参数的简单线性插值,就可以有效地达到防止泛化能力遗忘的目的。
Wise-FT为什么有效:
神经网络的激活函数存在非线性,但权重空间中的线性插值为什么有效?
- 深度神经网络的参数通常非常高维,每个维度(每个参数)的变化量相对整个参数空间来说是很小的。
- 神经网络中的参数一般比较稀疏,每个参数对最终输出的影响较小。即每个维度对最终结果的贡献不大。
- 微小变化后参数之间的相互作用和非线性会有很多抵消的效应。单个维度的非线性会被其他维度抵消。
- 小范围内的非线性变化可以用线性来逼近,近似为线性的效应。
- 预训练模型和fine-tuned模型的参数变化范围有限,不会跨越到非线性剧烈变化的区域。
- 预训练模型和fine-tuned模型 Optimization轨迹有一定重合,使得权重混合后的解依然在相对低误差的区域。
- 权重混合实现了模型集成,不同模型的误差可以相互抵消,起到增强泛化的作用。