5分钟搞懂大模型微调的原始能力退化问题

大家好啊,我是董董灿。

前段时间在星球弄了个"微调"的小专栏。但是因为一些事情耽误了,整体进度已经过半了,最近时间又充裕了,打算把微调的专栏再丰富完善,把这件事情搞完!

本文节选自星球《微调理论与实战》专栏。


微调,英文名叫做 Fine-tuning。

你可能听周围搞过微调的朋友说到过一个现象------微调后模型的能力可能会退化,这种情况听起来很奇怪:我明明是为了让模型变得更好,为什么模型的能力退化了呢?

这其实也算是微调的一个弊端吧,所以,在学习微调技术之前,你要对微调有技术有个感性的认识------

微调并非是万能的,有些时候,它会使模型的原始能力退化。

什么是模型的原始能力?

微调是指在一个已经训练好的大模型基础上,用特定领域的数据再重新进行训练,让它更适应某个具体任务。

所以说,微调本质上也是一种"训练"的过程。

比如,你拿一个已经预训练好的语言模型,喂给它一堆法律文档,想让它变成"法律专家";或者喂给他一些医疗数据,让它学会回答医学问题。

这个过程其实就是在教一个"通用的语言模型"重点强化某一技能。

模型的原始能力呢,其实就是大模型在微调之前具备的通用的知识和技能。

比如,它可能会写诗、翻译、回答历史问题,还能聊点天文地理,这些能力是大模型在海量数据上预训练(Pre-training)时学到的,覆盖面很广。

但问题来了:微调后,模型在特定任务上的技能变强了,却可能在其他任务上变弱了,甚至严重一点,可能会忘了它原来已经学会的东西。

这就是所谓的"原始能力退化"。

为什么会退化?

要搞懂退化原因,我们得从模型的学习过程讲起。

可以这么想象一下:大模型其实就是一个记忆有限的学生,虽然它的参数量很多("脑容量"很大),但也不是无限大。

微调其实是给这个学生开了补习班,逼着它学习一些新东西,结果呢?新东西学会了,旧知识可能就挤掉了。

这里简单提几个具体的原因,仅做了解即可:

1. 灾难性遗忘(Catastrophic Forgetting)

模型的"记忆"是靠参数(也就是模型的权重)存储的。

微调时,我们用新数据调整这些参数,让模型适应新的任务。

但这些参数本来是用来支持原始能力的,改动太多,原来的知识就被覆盖了。

你原来会背唐诗三百首,后来天天背英语单词,时间一长,唐诗可能就忘得差不多了。

这种现象被称为"灾难性遗忘"。

这种情况在微调的过程中会经常出现,在后面我们介绍"全参数微调"的时候,还会再一次提到这个问题。

说白了,模型的参数被篡改了,导致了能力退化。

2. 数据分布不平衡

大模型预训练时用的是海量、多样化的数据,可以覆盖各种场景,而微调时,通常只用一个很窄很专业领域的数据集(比如只有法律文本)。

这就会导致模型过度适应新数据,忘了如何处理其他类型的数据。

比如,当你把一个模型微调成了"法律专家"后,如果你再让它写诗,它可能就只会蹦出"根据《民法典》第XX条"之类的东西,也就诗意全无了。

3. 任务冲突

有时候,新任务和原始任务的目标不一样,甚至互相冲突。

比如,预训练时模型学的是"尽量生成多样化的回答",而微调时你要求它"严格按照格式输出"。

这种目标切换会让模型"迷失方向",丢掉原来的灵活性。

4. 过度微调(Overfitting)

微调如果做得太狠(比如训练轮次太多,或者学习率太高),模型会"死记硬背"训练数据,更极端的时候可能连训练数据中的"噪声"都背下来。

这种情况下,它在新任务上可能表现得很好,但在其他场景下完全不行,因为它失去了泛化能力。

有点类似于模型训练中的"过拟合"现象。

模型原始能力的退化有哪些表现呢?

这个其实很好理解,不再赘述,举几个模型原始能力退化的例子------

  • 语言能力变差:一个通用的语言模型微调后,可能忘了怎么生成流畅的对话,只会机械地回答特定问题。
  • 知识丢失:微调前它能告诉你很多通用知识,比如"太阳系有八大行星"。微调后如果你再问它同样的问题,模型可能一脸懵,回答的"驴唇不对马嘴"。
  • 创造力下降:微调前模型原本可以写故事、编段子,微调后可能只会输出干巴巴的句子。

也就是说,微调后模型变得"专精"了,但"全面"没了,这就是一种"原始能力退化"的表现。

怎么避免模型原始能力的退化?

虽然微调模型会出现能力退化的情况,但是你也不用太过于担心,退化不是不可避免的。

微调是个技术活,只要用对方法,就能让模型既学会新技能,又尽量保住它原有的能力。

下面是一些常见的技术,可以避免模型原始能力的退化:

1. 少调一点(控制微调范围)

微调时,不要把模型的所有参数(比如 7B 的模型中有 70亿的参数)都进行调整,可以只调整其中一部分(比如只调整注意力模块中的参数,或者在 transformer 架构中加个小的适配器模块等等,这就需要你对 transformer 架构有一定的的了解了)。

这样,模型的原始能力受影响就小得多。

这种只调整部分参数的方法叫"参数高效微调"(Parameter-Efficient Fine-Tuning, PEFT),比如 LoRA 和 Adapter。

PEFT 是目前非常流行的微调方法,效果好、算力需求低,也是本专栏会重点介绍的内容。

2. 混着学(多任务学习)

在微调时,不要给模型只投喂新数据,可以把原始数据和新数据混在一起进行训练。

这样模型既能学新东西,也不至于忘了原有的知识。比如,让模型一边学法律的新知识,一边复习一些诗歌和历史。

不过这种方式很少会使用,毕竟我们的目的就是让他更加专业。如果让他在学法律的过程中,还要复习诗歌和历史,那我们需要准备的数据集就会多很多------

徒增不少额外的工作量,不值得。

模型在微调时的原始能力退化,本质上是模型学习新东西时"顾此失彼"的结果,但通过合理的微调方法,我们可以在提升专业能力的同时,尽量保住模型的"全能"属性,这也可以认为是 PEFT 提出的一个背景(原因)吧。‍

🔥AI视觉入门与调优专栏:AI 视觉入门与调优专栏

🔥Transformer通关秘籍:Transformer 通关秘籍专栏

我创建了一个《小而精的AI学习圈子》的知识星球,星球上有很多高质量的技术专栏,你也可以在星球向我咨询和提问。

相关推荐
LYFlied几秒前
【算法解题模板】-解二叉树相关算法题的技巧
前端·数据结构·算法·leetcode
Ven%24 分钟前
【AI大模型算法工程师面试题解析与技术思考】
人工智能·python·算法
天勤量化大唯粉26 分钟前
枢轴点反转策略在铜期货中的量化应用指南(附天勤量化代码)
ide·python·算法·机器学习·github·开源软件·程序员创富
爱学习的小仙女!40 分钟前
算法效率的度量 时间复杂度 空间复杂度
数据结构·算法
AndrewHZ43 分钟前
【复杂网络分析】什么是图神经网络?
人工智能·深度学习·神经网络·算法·图神经网络·复杂网络
Swizard1 小时前
拒绝“狗熊掰棒子”!用 EWC (Elastic Weight Consolidation) 彻底终结 AI 的灾难性遗忘
python·算法·ai·训练
fab 在逃TDPIE2 小时前
Sentaurus TCAD 仿真教程(十)
算法
天赐学c语言2 小时前
12.19 - 买卖股票的最佳时机 && const的作用
c++·算法·leecode
菜鸟233号2 小时前
力扣78 子集 java实现
java·数据结构·算法·leetcode
yesyesyoucan2 小时前
在线魔方解谜站:从零入门到精通的智能魔方学习平台
学习·算法