微调是对特定能力的追求,对通用能力的妥协。
一、最简模型原理
经过充分训练的语言模型,在通用能力方面已经训练得很好了,比如语法、语序和语义理解等方面。示意图如下:
- 黑点部分为模型的能力
- 红色直线表示'已经充分训练后的 LLM':

如果我们追求'编码'能力,想微调一个模型,那么微调之后的 LLM 示意图如下:

一些通用能力,比如:语法能力、语序能力、语义能力,必将受到影响。但最令人无法接受的是:微调之后,我们无法确定哪些能力受到了影响。
我将从 5 个微调带来的问题来说明为什么不要微调,并给出了如何合理使用模型的最佳方案。
二、微调模型的 5 个问题
2.1、微调是对模型通用能力的妥协
对某些特定能力的加强,也是对某些通用能力的减弱,微调必然影响了通用能力。一个充分训练的模型,因为训练语料都是用了普通话和叙事表达逻辑,所以一个训练完成的模型必定有的通用能力大致有:语法、语序、语义、推理、叙事、逻辑、总结、思考等能力。
当我们微调模型去增加模型特定的能力时,这些通用能力必然受到影响,更严重的是:我们无法知道到底影响了什么通用能力。
比如:你想在一个基础 LLM 模型下,微调出一个医学模型,这个医学模型的目的是给患者诊断和开药方。为了提高医学模型能力,你给他很多'问诊开方'的预料案例,给 LLM 进行微调。结果是:微调之后的模型,当你输入给它一些患者病症描述,它就可以开药方了。但你无法确定的是它的通用能力,比如总结思考能力,是否是受到影响。而且还有一个问题是:它的药方开的真的合理吗?也许它只学到了'医生开药方的语言语调'。
所以有两个最恐怖的致命缺点:
- 你不知道微调的过程中,你降低了哪些通用能力(灾难性遗忘)
- 无法确定你真的想微调的能力是否真的提高了。
2.2、微调能力的未知
你不能评估一个系统,你就无法改良它。
想知道微调是否成功了,如果只通过一两个案例进行测试,未免太过草率。你需要建立评估标准,来确定两个事情:
- 通用能力没有受到影响
- 特定的微调能力确定有所提高
从第一个开始,如果你没有一个通用能力的衡量标准,比如你要微调 llama3.2 1B,你需要重跑标准测评 Benchmark,如下:

保证这些指标与 LLM 微调之前变化不是太多。这些通用能力的指标很多,如果个人或公司来测试需要花费很长很长的时间,所以,一般要找第三方来评测,但同样,最大的问题仍然是时间太长、成本太高。
第二个方面,如果你真想知道你的微调是否真的成功了,你需要构建你专属的测试集,比如你收集了 5k 个资料做成微调,起码要保留 1k(20%) 的数据进行评估,这部分可以使用更大一些的 LLM(比如 GPT)来进行评审。但最大的问题是:那 4k 训练数据和 1k 的测评数据到底怎么挑选呢?对于刚才说到的'医生开药方'的案例,假设你找到了 5k 的数据,留出来 1k 数据用于评测,4k 数据用于微调。案例中有治疗糖尿病的问诊开药方数据,有治疗高血压的问诊开药方数据,有治疗头疼的问诊开药方数据,起码你微调数据中要包含这 3 类数,测评集也包含这三类数据,这个数据划分又是个难题,最起码要做到微调数据与测试数据包含的 3 类数据的百分比是大致一样的吧。假设以上问题你都解决了,分类后你发现,建立的类别居然有 10 种,那就稀释了微调数据集的数量,因为每个类别只有 400 条(4k 除以 10),你也许要收集更多的测试,或者还有一个方案:构建多个微调模型,比如:糖尿病问诊模型,高血压问诊模型,头疼问诊模型等。。






