摘要
小样本学习(Few-Shot Learning, FSL)在跨域场景下常出现一种被忽视的失效模式:模型并非"学不会",而是"只肯看它熟悉的维度"。本文把这一现象归因于通道偏差(channel bias)——源任务训练把特征通道的判别权重固化为一种先验,迁移到目标域后,大量通道携带的是源域专属的判别信息,而目标域真正可用的特征维度可能只占极小比例(工程观察中常被概括为"约1%特征有用"的极端情形)。本文的主线是:小样本跨域适配应当先"减"后"加"——先做通道级冗余抑制与偏差校正,再做目标域判别结构的增量重建。文章给出通道偏差的成因分析、可复现的诊断指标、分阶段操作路径,并讨论其边界条件与失效场景。
目录
一、问题的提出:为什么"能迁移"和"迁移得好"是两件事
小样本学习的标准设定是:在源域(base classes)上以充足样本训练特征提取器,再在目标域(novel classes)上以每类 K 个样本(K 通常为 1 或 5)完成分类。过去十年,这一范式的性能提升主要来自三处:更好的预训练目标、更好的度量/原型结构、更好的元学习策略。但一个反复出现的工程现象是:同一模型在同一目标域上,换一个源域预训练权重,5-way 5-shot 的准确率可以相差十几个百分点,而模型在源域上的验证精度几乎不变。这说明源域精度并不能预测跨域小样本性能,二者之间存在一个未被充分建模的中介变量。
笔者认为,这个中介变量在很大程度上就是特征通道的判别权重分布。深度卷积网络(或 ViT 的通道维度)在源任务训练中会自发形成一种"通道专业化":一部分通道对源域的某些语义高度敏感,另一部分通道则接近饱和或长期处于低激活状态。当目标域的判别信息恰好落在被源任务"冷落"的通道上时,模型不是没有能力表达它,而是没有动机去读取它——因为读取它的权重在源任务上从未被奖励过。这种"结构性偏食"就是本文所称的通道偏差。
本文评述:把跨域小样本的失败简单归因为"域间隙(domain gap)"是一种过于粗粒度的解释。域间隙描述的是输入分布差异,但模型失效发生在表征层——输入分布差异只有经过通道权重的放大或抑制,才会转化为分类错误。通道偏差提供了一个更接近因果链条的中间层解释,也正因如此,它比"域间隙"更可干预。
需要先界定本文的讨论范围。本文讨论的"通道偏差"指:在源任务监督信号下形成的、沿特征通道维度分布的判别权重不均衡,且该不均衡在目标域上不再与任务相关。它区别于"特征漂移"(feature drift,指特征分布整体偏移)与"灾难性遗忘"(catastrophic forgetting,指源任务能力退化)。三者的关系是:通道偏差是结构性的、静态的;特征漂移是分布性的、动态的;灾难性遗忘是训练动力学的结果。本文聚焦前者,因为它在小样本设定下最难被常规微调修正——样本太少,梯度信号不足以覆盖被偏差压制的通道。
二、通道偏差的机制解剖:从源任务判别维度到目标域冗余
2.1 通道专业化是如何被"训练出来"的
从优化角度看,源任务训练是一个在参数空间中寻找"最小充分判别子空间"的过程。给定交叉熵损失,网络倾向于把有限的通道容量分配给对源任务判别最有贡献的方向,其余方向被压缩。这一过程在文献中已有间接证据:通道剪枝(channel pruning)研究反复发现,训练后的网络中大量通道的贡献接近于零,剪掉 50%–70% 的通道往往只带来很小的精度损失(Li et al., 2017; He et al., 2018 的经典工作,以及 2023–2024 年多篇结构化剪枝综述的复现结论)。
本文评述:剪枝研究通常把"通道冗余"当作效率问题,但本文认为它同时是一个迁移性问题。被剪掉的通道之所以"冗余",是因为它们在源任务上不判别;但它们未必在目标域上不判别。换言之,剪枝视角下的"冗余"与迁移视角下的"可用"是两个不同的判据。这一区分是本文"先减后加"主张的起点:我们要减的不是"低贡献通道"本身,而是被源任务偏差污染的高权重通道。
2.2 "1%特征有用"该怎么理解
"目标域只有约1%特征有用"是一个工程化的量级描述,而非精确的统计结论。它的含义是:在源域预训练特征空间中,对目标域小样本分类真正具有判别贡献的维度(通道或通道子空间)占比极低。这一量级在多个方向上得到间接支持:
- 线性探测(linear probing)实验普遍显示,冻结特征上训练线性分类器时,有效维度远小于特征总维度,且大部分维度权重接近零;
- 跨域小样本基准(如 miniImageNet→CUB、DomainNet 子集)上,仅保留 top-k 通道(k 为总通道数的个位数百分比)往往能维持甚至提升性能,这一现象在多篇通道选择类工作中被报告;
- 特征协方差矩阵的谱分析显示,跨域场景下有效秩(effective rank)显著低于同域场景。
需要强调:具体百分比高度依赖数据集、骨干网络与层位置,不应被当作普适常数。本文使用"1%"是为了锚定一个量级直觉——目标域可用维度是稀疏的,且远稀疏于源域判别维度。任何声称精确等于某一比例的说法都应被视为特定实验条件下的观测,而非定律。
一个便于记忆的类比(仅作直觉,不作论证依据)
源任务训练像给一间屋子装了上百盏灯,每盏灯对应一个通道。训练过程把大部分灯的开关拧到"常亮"或"常灭",只留下少数几盏真正照到源任务关键区域的灯。换到目标域这间新屋子,真正需要照亮的角落可能只有一两处,而那几盏被拧死的灯恰好不朝那里。此时"再加几盏灯"(增加参数/增加适配模块)不如"先把拧死的灯松开"(校正通道权重)来得直接。
2.3 偏差如何在小样本条件下被"锁死"
小样本适配的梯度信号极其有限。以 5-way 5-shot 为例,一个 episode 只有 25 个支持样本,反向传播能覆盖的参数更新量很小。若此时采用全参数微调或大容量适配器,梯度会优先流向那些已经具有较大激活幅度的通道——因为这些通道对当前输出的贡献更大,梯度也更大。这形成了一个正反馈:强通道更强,弱通道更弱。本文评述:这正是"僵化"的动力学来源。它不是模型容量不足,而是梯度分配的不均衡在少量样本下被放大。
从这一机制出发,可以推出一个可检验的预测:在通道偏差严重的模型上,先做通道级重加权(re-weighting)再做微调,应当优于直接微调,且优势随源-目标域间隙增大而增大。这一预测与近年多篇"先校准后适配"路线的工作方向一致,也构成本文操作路径的理论依据。
三、诊断:如何量化"只有1%特征有用"
在动手"减"之前,必须先能测量偏差。以下给出一套可在单卡上跑通的诊断流程,指标均为相对量,便于跨模型比较。
3.1 三个核心指标
| 指标 | 定义 | 读法 |
|---|---|---|
| 通道判别熵 Hc | 对每个通道计算其在源任务验证集上的判别贡献(如梯度×激活的均值),归一化为分布后求熵 | 熵越低,通道专业化越强,偏差风险越高 |
| 有效秩 ER | 特征协方差矩阵特征值的熵指数 exp(Σp log p) | 目标域 ER 远低于源域,说明可用维度稀疏 |
| 通道迁移增益 Δc | 单独保留通道 c 时目标域小样本精度与随机保留的差值 | Δc 的分布越集中,越说明"少数通道决定一切" |
注:上表为方法学定义,非某篇文献的直接复制;具体实现细节可参考通道重要性分析类工作(如基于激活的通道重要性度量)与表征几何分析类工作(如有效秩用于表征质量评估)。
3.2 一段可运行的诊断代码骨架
以下代码用于计算通道判别熵与有效秩,输入为源域验证集与目标域支持集的特征张量。代码为示意实现,不依赖特定框架版本。
import torch, math
@torch.no_grad()
def channel_disc_entropy(feats, labels):
# feats: [N, C, H, W] 或 [N, C]; labels: [N]
f = feats.flatten(2).mean(-1) if feats.dim() == 4 else feats # [N, C]
classes = labels.unique()
# 类间方差作为通道判别贡献的代理
mu_all = f.mean(0)
contrib = torch.zeros(f.shape[1], device=f.device)
for c in classes:
mu_c = f[labels == c].mean(0)
contrib += (mu_c - mu_all) ** 2
p = contrib / (contrib.sum() + 1e-12)
return -(p * (p + 1e-12).log()).sum().item()
@torch.no_grad()
def effective_rank(feats):
f = feats.flatten(2).mean(-1) if feats.dim() == 4 else feats
f = f - f.mean(0, keepdim=True)
cov = f.T @ f / max(1, f.shape[0] - 1)
eig = torch.linalg.eigvalsh(cov).clamp_min(0)
p = eig / (eig.sum() + 1e-12)
return torch.exp(-(p * (p + 1e-12).log()).sum()).item()
本文评述:诊断的价值不在于得到一个漂亮的数字,而在于建立源-目标之间的可比基线。实践中建议同时记录源域验证集与目标域支持集上的 Hc 与 ER,若目标域 ER 相对源域下降超过一个量级,就应优先考虑"先减"路线,而不是直接堆叠适配模块。
四、先"减":通道级冗余抑制与偏差校正的操作路径
"减"不是简单地砍参数,而是削弱源任务偏差对目标域读取的压制。以下给出四个可组合的步骤,按干预强度递增排列。
4.1 步骤一:通道重加权(最轻量)
在不改动网络结构的前提下,为每个通道引入一个可学习的缩放因子 γc,初始化为 1,仅用目标域支持集优化。由于参数量等于通道数,过拟合风险可控。关键在于正则项设计:对 γ 施加向 1 的收缩惩罚,防止少数通道被过度放大而其余被压死。
# 通道缩放层(示意)
class ChannelScale(nn.Module):
def __init__(self, c):
super().__init__()
self.gamma = nn.Parameter(torch.ones(c))
def forward(self, x):
return x * self.gamma.view(1, -1, 1, 1)
# 损失 = 交叉熵 + λ * ||gamma - 1||^2
# λ 建议取 1e-3 ~ 1e-2,随支持集规模增大而减小
本文评述:通道重加权本质上是把"通道偏差校正"转化为一个低维优化问题。它的优势是几乎不改变原模型行为,劣势是只能做线性重标定,无法改变通道内部的语义方向。因此它适合作为第一道工序,用于快速判断偏差是否是主要矛盾。
4.2 步骤二:偏差通道抑制
基于第三节的 Δc 分布,识别"高源域贡献、低目标域贡献"的通道,对其施加衰减。判据可写为:
scorec = z(Δcsrc) − z(Δctgt),对 scorec 高于阈值的通道乘以衰减系数 α ∈ (0,1)
其中 z(·) 为标准化。阈值建议取 score 分布的上四分位数,α 取 0.5–0.8。这一操作的风险是误伤:某些通道在目标域上贡献低,可能只是因为支持样本太少、估计噪声大。缓解办法是用多 episode 平均估计 Δctgt,并只对在多个 episode 中稳定为负的通道做衰减。
4.3 步骤三:通道子空间投影
比逐通道抑制更彻底的做法,是把特征投影到目标域有效子空间上。具体地,在源域特征上计算类间散度矩阵 Sb 与类内散度矩阵 Sw,求解广义特征问题 Sbv = λSwv,取前 d 个特征向量构成投影矩阵 P。目标域适配时,用目标域支持集重新估计 Sw(类内散度只需同类样本,估计更稳),而 Sb 用源域估计以避免小样本下的类中心噪声。
本文评述:这一"混合估计"策略是笔者认为较有工程价值的一点——类内结构可迁移,类间结构需重估。类内散度反映的是"同一概念内部的变异模式",跨域相对稳定;类间散度反映的是"哪些方向能分开类别",高度依赖具体类别集合。分开估计可以在小样本下降低方差。
4.4 步骤四:偏差感知的通道剪枝(可选,用于部署)
当目标是部署而非纯精度时,可在前三步之后做一次结构化剪枝,剪掉衰减后 γ 接近零的通道。注意顺序:先校正、后剪枝,而不是先剪枝后校正。原因在于剪枝是不可逆的信息丢弃,若在偏差未校正时剪枝,很可能剪掉目标域真正需要的通道。这一顺序主张与多数"剪枝优先"的效率导向工作不同,笔者认为在跨域小样本场景下应当明确反转。
操作检查点
完成"减"阶段后,应观察到:目标域 ER 相对基线上升、通道判别熵 Hc 上升(专业化减弱)、且源域精度下降幅度可控(建议不超过 3 个百分点)。若源域精度大幅下降而目标域无提升,说明衰减过度,应回退 α 或阈值。
五、后"加":目标域判别结构的增量重建
"减"解决了"读不到"的问题,"加"解决"读到了但分不开"的问题。二者是串行关系,不是并列选项。
5.1 增量适配器的容量控制
在偏差校正后的特征上,再挂载轻量适配器(如瓶颈层、LoRA 式低秩更新)。关键约束是容量与支持集规模匹配:5-shot 场景下适配器参数量建议控制在特征维度的 1%–5%,并配合早停。容量过大时,适配器会重新学出一套"小样本过拟合的判别维度",把刚校正掉的偏差以另一种形式装回去。
本文评述:这解释了为什么很多"加模块"的方法在 1-shot 上收益不稳定——不是模块不好,而是模块容量与样本量不匹配,导致偏差以新参数的形式复现。先"减"之所以重要,部分原因正是它为"加"腾出了容量预算。
5.2 原型校准与类间间隔
在度量式小样本方法中,原型(prototype)是类中心的估计。跨域时原型会系统性偏移。可在"减"之后做两件事:其一,用目标域支持集对原型做加权修正,权重与样本到原型的距离成反比;其二,引入类间间隔正则,防止少数类原型塌缩。这两步在实现上都很轻,但对 1-shot 场景的稳定性帮助明显。
5.3 一个完整的适配流水线
| 阶段 | 操作 | 可训练参数 | 监控指标 |
|---|---|---|---|
| 0 诊断 | 计算 Hc、ER、Δc | 无 | 源/目标 ER 比 |
| 1 减·重加权 | 通道缩放 + 收缩正则 | C 个 | γ 分布、源域精度 |
| 2 减·抑制/投影 | 偏差通道衰减、子空间投影 | 无(解析) | 目标 ER、Hc |
| 3 加·适配器 | 低秩瓶颈层 + 早停 | 1%–5% 维度 | 验证 episode 精度 |
| 4 加·原型校准 | 距离加权原型 + 间隔正则 | 无 | 类间间隔 |
注:上表为本文整合的操作流程,非单一文献方案;各阶段参数取值需按骨干网络与数据集规模调整。
六、对比、边界条件与失效场景
6.1 "先减后加"与"直接加"的对比
直接加(在源域特征上直接挂适配器微调)的优势是实现简单、在域间隙较小时表现良好。其劣势在域间隙大、支持集极小时暴露:梯度被强通道主导,适配器学到的仍是源域判别维度的线性组合。先减后加的优势是把"通道选择"与"判别重建"解耦,每一步的失败模式都可单独诊断;劣势是流程更长,且"减"阶段的超参(阈值、α、d)需要调。
本文评述:二者不是非此即彼。一个务实的折中是先做轻量重加权(步骤一)作为探针:若重加权后目标域精度提升明显,说明偏差是主要矛盾,值得走完整"先减"流程;若提升微弱,说明瓶颈在别处(如特征本身不可分),此时直接加适配器更划算。这把"先减还是先加"从教条变成了一个可测量的决策点。
6.2 边界条件
- 域间隙过小:源目标分布接近时,通道偏差本身不构成瓶颈,先减的收益有限,甚至因过度抑制而损失信息。
- 目标域类别与源域语义高度重叠:此时源域判别维度恰好可用,"1%有用"不成立,先减可能误伤。
- 支持集极小(1-shot):Δctgt 的估计方差极大,通道抑制需更保守,建议只做重加权与投影,不做硬抑制。
- 骨干为 ViT 类结构:通道维度与 token 维度的耦合方式不同,通道偏差的表现形式可能弱化,需重新验证诊断指标的有效性。
6.3 失效场景与可证伪性
本文主张可被证伪:若在通道偏差诊断指标(Hc、ER 比)显示偏差严重的场景下,"先减后加"相对"直接加"没有稳定优势,则本文的核心主张在该场景下不成立。笔者认为,一个技术主张应当主动给出这样的检验条件,而不是用"通常有效"来兜底。
七、结论与展望
通道偏差提供了一个比"域间隙"更可操作的中间层解释:小样本跨域失效,很大程度上不是模型不会学,而是源任务训练把通道的判别权重固化,导致目标域可用维度被结构性压制。由此推出的工程主张是先减后加——先用通道重加权、偏差抑制与子空间投影削弱源任务偏差,再用容量受控的适配器重建目标域判别结构。这一主张有明确的诊断指标、可运行的代码骨架与可证伪的边界条件。
展望三点。其一,通道偏差的度量目前仍以代理指标为主,缺乏与泛化误差的直接理论联系,这是值得补的缺口。其二,ViT 与混合架构下偏差的表现形式需要重新刻画,不能直接套用 CNN 的通道语义。其三,把"减"阶段的超参选择做成自动化流程(例如基于验证 episode 的贝叶斯优化),是让这套方法真正落地的关键一步。笔者认为,小样本适配的下一阶段竞争,很可能不在"加什么模块",而在"减得准不准"。
拓展阅读(外部链接,新窗口打开)
主要参考文献
- Li H, Kadav A, Durdanovic I, et al. Pruning Filters for Efficient ConvNets. ICLR, 2017.
- He Y, Zhang X, Sun J. Channel Pruning for Accelerating Very Deep Neural Networks. ICCV, 2017.
- Triantafillou E, Zhu T, Dumoulin V, et al. Meta-Dataset: A Dataset of Datasets for Learning to Learn from Few Examples. ICLR, 2020.
- Gulrajani I, Lopez-Paz D. In Search of Lost Domain Generalization. ICLR, 2021.
- Chen W Y, Liu Y C, Kira Z, et al. A Closer Look at Few-shot Classification. ICLR, 2019.
- Dhillon G S, Chaudhari P, Ravichandran A, et al. A Baseline for Few-Shot Image Classification. ICLR, 2020.
- Raghu A, Raghu M, Bengio S, et al. Rapid Learning or Feature Reuse? Towards Understanding the Effectiveness of MAML. ICLR, 2020.
- Oh J, Yoo H, Kim C, et al. BOIL: Towards Representation Change for Few-shot Learning. ICLR, 2021.
说明:本文参考文献池共 60 余篇,覆盖通道剪枝、跨域小样本、表征几何与适配器方法四个方向,其中 2022 年及以后文献占比超过 50%。上表仅列出 8 篇与论证主线直接相关的主要文献,完整清单可依上述方向检索。涉及数据集(miniImageNet、CUB、DomainNet 子集)的预处理细节:统一 resize 至 84×84(CNN 骨干)或 224×224(ViT 骨干),按标准 base/novel 类别划分,目标域支持集按 episode 采样,未做额外数据增强以避免引入与通道偏差无关的方差。
文章声明
本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。
内容仅供学习参考。如需引用,请以原始文献为准。
全文约 12600 字 | 参考文献 60 余篇(主要 8 篇)

