资讯动态

自监督学习如何提升大模型推理的概念抽象能力

发布时间:2026/10/18 14:52:27 来源:尧图企业网站定制
很多人问过我一个问题大模型现在这么强到底算不算真的会推理我的回答往往让人失望——很多看似推理的行为本质上还是记忆和检索。你拿一个训练数据里没见过的组合去问它它要么一本正经地胡说要么直接性能滑坡。真正的推理需要一种叫“概念抽象”的能力能从具体例子中抽取出不变的规律再把这个规律挪到新场景里去用。比如看到几只不同品种的猫你能抽象出“猫”这个概念再推理出面前这只新动物大概也是猫。这件事对人类来说很自然对现在的AI来说却很难。我最近围绕“自监督学习提升AI推理的概念抽象能力”这个方向做了一系列实验和调研想把这些经验整理出来。这篇文章不是论文复现指南也不是PPT大纲而是我自己从问题定义、目标设计、训练实操到排查坑点的一线记录。适合想知道“为什么模型会推理”“概念抽象到底能不能学出来”的算法工程师和研究生也适合想用自监督方法提升模型泛化能力的实践者。1. 为什么推理需要概念抽象1.1 记忆型推理和抽象推理的差别先说一个简单的例子。给模型看一组图形题第一排是红圆、蓝圆、红方第二排是蓝方、红方、蓝圆让它判断第三排第一个位置该放什么。一个大模型可能因为之前见过类似的题目直接给出正确答案。但你再给它换一种没见过的颜色组合比如黄圆、绿圆、黄方它可能就懵了。这说明它记住的是“某个具体的排布模式”而不是“颜色与位置交替”这条规则。我把前者叫记忆型推理后者叫抽象推理。记忆型推理依赖的是训练数据覆盖度只要数据里出现过类似模式模型就能用统计相关性糊弄过去。抽象推理依赖的是概念抽取能力模型得先把图形分解成颜色、形状、位置这几个独立属性再搞清楚属性之间的约束关系最后把这个约束关系应用到新组合上。这里面每一步都不简单。经常有人拿学生备考来类比一个靠背题应付考试的学生换一套新题就露馅一个真正理解原理的学生哪怕题型再怪也能找到切入点。现在的AI推理系统更像前者它缺乏的不是计算量而是把具体经验提升为一般规律的那一步。1.2 当前推理模型的瓶颈到底在哪现在主流的大模型基本都是自回归架构训练目标是预测下一个token。这个目标优化的是“当前语境下哪个词最可能跟着出现”而不是“当前语境下哪个概念在逻辑上成立”。指令微调和强化学习虽然能让模型更听话、更符合人类偏好但它们主要解决的是意图对齐问题并不会让模型突然获得概念抽取能力。我在实际测试中经常发现一个现象模型在链条比较短的推理任务上表现还不错一旦链条变长就开始出现“前面对、后面错”的情况。比如让它推理一个多步逻辑问题它前面两步分析得头头是道第三步突然把概念关系搞反了。这说明模型每一步都在靠上下文猜并没有一个稳定的概念表示在支撑它。问题出在什么地方出在表示空间。如果模型把一个对象编码成一大堆特征混合在一起的向量那它很难单独提取出“颜色”这个因素去做关系比较。而概念抽象的基础恰恰是把不同属性拆开、把同一属性的不同实例归到一起。在现在的训练范式下没有任何一个损失函数在显式地鼓励模型往这个方向学。1.3 自监督学习为什么与这个概念天然匹配自监督学习和概念抽象有一个共通点都不依赖人工标注而是从数据本身找结构。一个孩子认识“猫”不是靠有人指着猫说“这是猫”而是靠无数次看到不同形态的猫慢慢发现它们之间共享某种不变的东西。自监督学习也是如此它通过构造伪任务逼模型去发现数据里“什么东西变了、什么东西没变”的规律。以对比学习为例它的核心思想是同一个样本在经过不同变换之后应该被视为正样本对要求模型把它们映射到相近的位置不同样本之间是负样本对要求映射到不同的位置。这个过程本质上就是让模型学会“不管颜色怎么变、视角怎么变只要本质相同就应该归为一类”。这种不变性和概念抽象的底层逻辑是一致的。掩码重建也是一个道理。你把一个图形遮掉一半要求模型预测被遮住的另一半模型的表示就必须包含图形的结构信息——哪些属性在一起出现、哪些属性之间有强约束。这些结构信息正是推理时做关系比较的原料。所以自监督学习不是凭空造了一个新概念而是给“概念学习”一个可行的优化路径。2. 概念抽象的目标怎么定义自监督信号设计2.1 对比学习把概念表征成簇对比学习是最直观的一类自监督信号。你要让模型把同一个概念的不同实例放到表示空间的相近位置把不同概念的实例推开。训练完以后你会发现表示空间里出现了明显的簇结构红色的物体聚在一起方形的物体聚在一起甚至“又红又方”的会落在两个簇的交叠区域。这种结构天然支持概念判断。这里有一个关键参数温度系数τ。我自己的经验是τ调小会让簇变得更紧凑因为损失函数对负样本的惩罚更重模型必须把正样本拉得足够近才能降低lossτ调大则相对宽容表示空间会更松散。对概念抽象来说簇太散等于概念边界模糊所以我一般倾向用较小的τ比如0.1左右。但对比学习有个隐藏问题如果增强方式太简单模型可能走捷径。比如你只是把图形平移几个像素模型不需要理解概念也能轻易判断“这是同一张图”。所以在做概念抽象时增强策略要想清楚。我常用的是组合式增强颜色扰动、形状插值、局部遮挡、随机裁剪这样模型无法靠单一线索蒙混过关。2.2 掩码重建逼模型推断被遮住的成分掩码重建的思路比对比学习更直接把数据的一部分遮住让模型补全。图像的MAE把75%的patch都遮掉模型必须从剩下的patch里推断整体结构。这种方式对概念抽象很有价值因为想要补全被遮住的部分模型必须先理解对象的结构关系而不是认出某个具体纹理。不过这里要提醒一句重建目标太强模型反而会去关注像素级纹理削弱抽象能力。拿图像来说如果模型只学会了把遮住的地方修补得看起来合理并没有把“颜色”和“形状”拆成独立概念那对推理的帮助有限。所以我在做实验时更推荐“掩码属性”而不是“掩码像素”也就是说不遮像素而是遮掉某个对象的颜色属性让模型去预测这个属性与其他属性的关联。这种属性级掩码可以用在表格化或结构化数据上也可以用在合成图形上。比如给定三个图形遮住第三个的颜色模型要预测它是红色还是蓝色前提是它学懂了序列里的规则。这个任务比像素重建更抽象训练出的表示也更干净后续接推理头的时候效果明显更好。2.3 隐空间解耦把概念属性拆开对比学习和掩码重建是在“表示空间”里做文章隐空间解耦则是直接希望表示空间的各个维度对应不同的概念属性。最经典的做法是β-VAE通过对KL散度加一个大于1的系数β逼模型把信息压缩到独立的隐变量维度里。调大β之后隐空间的维度会逐步解耦某几个维度管颜色某几个维度管形状某几个维度管位置。实际做的时候β值不能盲目放大。β太大重建质量会崩模型干脆把所有信息丢到无关的维度里β太小解耦效果不明显。我习惯从小到大扫几个值观察重建质量和解耦指标的变化。你可以用互信息或干预实验来评估解耦程度锁定某个隐变量维度把值改掉看输出是否只改变某个属性。三种自监督信号各有侧重我做了个简单对比方法核心思想适合解决什么问题主要风险对比学习正样本靠近负样本推开同一概念聚簇不同概念分开容易走捷径需要精心设计增强掩码重建遮住部分信息预测缺失部分理解属性间的依赖结构过于关注像素纹理抽象不足隐空间解耦让隐变量维度独立把颜色、形状等属性拆开β难调重建与解耦需要平衡这三个方向不是互斥的我的实验里经常把对比学习和属性掩码结合使用对比学习负责聚簇掩码属性负责建立属性间的关系约束最终在关系推理任务上效果最好。3. 实验设计与训练实操3.1 数据构造用合成数据把概念控制住研究概念抽象第一步是把概念定义清楚。真实世界的数据太复杂你根本说不清模型到底从哪里学到的“红色”这个概念。所以我强烈建议起步阶段用程序化生成的合成数据把属性控制在两三个维度上把规律设计得明确透明。我当时用的是一套自研的图形序列数据每次生成一组图形每个图形由颜色红/蓝/绿、形状圆/方/三角、大小大/小三个属性决定然后按照人工设计的规则生成序列。比如规则可以设定为“颜色从第一个到第三个呈现循环形状每隔两个变化一次。因为生成程序是可控的我可以在训练集里只出现部分属性组合在测试集里设计另外一部分组合。这样能精确测量模型到底有没有学到抽象规律而不是死记硬背。数据设计要遵循两条准则第一训练集和测试集的概念不重叠至少不完整重叠第二测试集要包含“属性重排”的情况。举个例子训练集里出现“红色圆形”和“蓝色方形”测试集里放“蓝色圆形”和“红色方形”这种组合泛化测试比单纯换一个没见过的新颜色要难得多也更接近真实推理场景。3.2 模型改造骨干、投影头、概念头与关系模块模型结构上我采用了一套比较标准的组合骨干网络负责提取特征这里用了一个小型的视觉Transformer或者ResNet骨干后面接一个两层MLP投影头用于自监督预训练阶段的对比损失计算在预训练完成后投影头会被丢掉取而代之的是一层线性概念头把骨干输出映射成概念向量。真正承担推理任务的是一个关系模块。我的做法是把两个样本的概念向量做拼接和差值再喂进一个MLP输出表示它们之间关系类型的向量。这个模块让模型不是孤立地看某个对象而是成对比较对象从中提取关系规律。对于更复杂的多步推理可以参考关系网络的思路把多对象两两配对再把关系向量汇聚成一个全局表示。有一个细节是预训练和微调的衔接。自监督预训练阶段只训练骨干和投影头概念头和关系模块是不存在的。预训练结束后我再冻结骨干随机初始化概念头和关系模块用少量有标签数据对这两个模块做监督微调。这一步至关重要——如果预训练后直接解冻全部参数预训练学到的概念表示会被有标签样本扰动得面目全非。3.3 一套可复现的训练参数配置我把实验中比较稳定的参数组合整理成了表格给想快速上手的人一个参考起点参数项推荐值说明骨干网络ViT-Small 或 ResNet-18规模够用即可不要一上来就上大模型投影头两层MLP维度128输出维度不必太大128足够表达概念温度系数τ0.1让正样本簇更紧凑Batch Size256过小会导致负样本信息不足优化器AdamW对比学习用LARS也行但AdamW对新手更友好学习率3e-4配合warmup预训练和微调可以分开设置预训练轮数200 epochs合成数据不需要太久真实数据适当延长掩码比例70%这个比例在视觉任务上普遍有效微调策略骨干冻结只训练概念头和关系模块防止破坏预训练表示温度系数和Batch Size的关系容易被忽略。对比学习里面负样本对是从同一个Batch里采的Batch太小意味着模型能看到的“其他概念”太少很难把不同概念推远。如果你实验资源有限可以把Batch控制在128但相应地要把τ调大一些否则Loss会非常不稳定。3.4 一个小实验的完整记录我用上面这套配置跑过一个具体实验。数据集是合成的图形序列总共设计了200种不同的概念规则每种规则生成20条序列训练集包含其中150种规则测试集包含剩下50种并且测试规则里刻意使用了训练集中出现过的颜色和形状但组合方式完全不同。预训练阶段我用无标签的图形序列做对比学习加掩码属性预测自监督训练到150个epoch时用线性探针检查表示质量——这里的线性探针是拿训练集里一小部分有标签数据临时训练一个线性分类头看概念属性是否已经线性可分。结果发现颜色属性分类准确率达到了94%形状也接近90%。这说明表示空间里确实形成了清晰的簇。微调阶段只用了200条带标签序列经过10个epoch后在测试集上的推理任务准确率是78.3%。作为对比随机初始化的基线只有41.6%直接从零有监督训练的结果是62.5%。自监督预训练比随机初始化高出了36个百分点比有监督预训练还高了15个百分点。最让我意外的是自监督预训练出来的模型在新组合上的表现比有监督预训练更稳定因为它没有见过任何标签信息反而不会把某些属性绑定在一起。这个实验规模不大但足够说明问题概念抽象能力的提升不是靠更多标签数据而是靠合适的自监督信号让表示空间先形成结构。表示空间一旦有结构后续推理模块只需要学会在结构上做操作即可。4. 常见问题与排查技巧实录4.1 训练不稳定Loss异常震荡做对比学习最常遇到的就是Loss震荡。明明代码没问题数据也没问题但Loss曲线像心电图一样上下跳。我踩过这个坑后来定位到几个因素。首先是温度系数和学习率不匹配。τ太低模型对负样本的惩罚太严厉梯度容易爆炸学习率再一高训练必然震荡。我的排查方法是先把τ调到0.2如果Loss稳定下来再慢慢调低到0.1。其次是Batch Size太小。自监督对比学习特别依赖Batch内的负样本数量Batch从64涨到256Loss明显平滑很多。最后是把梯度裁剪加上设置最大梯度范数为1.0能有效防止训练中期出现尖峰。还有一个容易被忽视的点如果你用了掩码重建加对比学习的联合损失两个损失的尺度可能差很多倍。不要直接相加先把两个损失的权重分别调通再用一个可学习的权重参数去平衡。4.2 表示坍缩所有样本都挤在一起表示坍缩是对比学习最著名的失败模式模型找到了一条捷径把所有输入都映射到同一个输出这样正样本对的距离变成0Loss直接降到很低但表示完全没有意义。判断方法很简单你计算一下表示向量的均值标准差如果接近0说明模型在偷懒。坍缩的根本原因是负样本提供不了足够的梯度压力。比如增强太弱模型随便编码一下就能让正样本靠近它没必要费力去保留概念信息。解决方向有两个一是把增强调强让模型没法轻松区分正样本对二是加显式的均匀性约束比如VICReg里面的方差项要求每个维度的表示在Batch内保持一定方差。我用VICReg的方差项做正则坍缩问题基本没有再出现过。如果坍缩已经发生不要指望继续训练能自动恢复直接重置模型参数调整增强策略后重新开始。在坍缩问题上我花了不少时间才意识到早期诊断比后期补救重要得多。4.3 评估指标不可信组合泄露和分布重叠比训练不收敛更隐蔽的问题是评估指标虚高。有一次我改进了一个版本测试准确率从78%跳到83%当时还挺高兴后来一查发现测试集里有一部分序列和训练集生成的种子相同。也就是说模型见过类似的序列评估结果根本不代表抽象能力。我后来立了一个规矩测试集不仅要保证概念规则不重叠还要做一次“组合泄露”检查。具体做法是把训练集和测试集分别统计一遍属性组合频率凡是测试集里出现过的组合如果在训练集里也有就要么删掉要么单独记录。组合泛化能力应该在“训练集从未见过的属性组合”上测评这是硬性条件。另外我还会做干预测试作为辅助验证固定住推理模块改动表示空间里某一个维度看下游预测是否按预期变化。如果改动颜色维度只影响颜色相关的推理结果说明概念确实被抽象出来了如果改动之后所有预测都乱了说明表示还是纠缠在一起的。4.4 概念抽象能力没有提升怎么办你的实验设置看起来没问题损失函数也收敛了但推理准确率就是上不去。遇到这种情况我建议按顺序检查几个环节。先检查表示质量。把预训练完成的骨干特征拿出来用线性探针测一下概念属性分类准确率。如果探针准确率也很低说明问题出在自监督预训练阶段增强策略或损失设计需要调整。如果探针准确率很高但下游推理表现差说明问题出在推理模块的设计上。推理模块的学习也许不够充分或者投入的有标签数据太少了。很多时候我遇到的都是第二种情况。概念头和关系模块在有标签数据上微调时因为数据太少只训练2个epoch就过拟合了而测试集又是新组合表现自然差。这时候可以适当增加微调轮数或者在推理模块前面加一个离散瓶颈层强制模型把概念向量量化成离散符号。我在实验里加了离散瓶颈后推理准确率又涨了几个点模型对这种“先识别概念再应用规则”的推理模式确实更友好。5. 一点个人体会踩过几次坑之后我的体会是概念抽象能力不是靠堆数据和模型硬生生顶上去的它需要自监督信号去引导表示空间形成结构。实验里最有价值的往往不是最终准确率而是你如何设计数据分布和评估方式。你费尽心思让模型在“新组合”上能够泛化这个过程本身就是在逼模型练抽象能力。如果后面继续做我会往多模态和更复杂的关系抽象方向推比如让模型从视频里抽取“动作改变”这种动态概念。自监督在这里的优势会更大因为视频里天然有无穷多的变换。最后提醒一句在“新组合”上测出来的提升才算真提升换汤不换药的测试方式只会浪费你的时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑