1. 什么是归纳偏置?
归纳偏置,英文叫:Inductive Bias。这个概念听起来有点抽象,但其实很好理解。简单来说,归纳偏置就是:模型在学习之前,结构本身已经带有的一些先验假设。
也可以理解为:模型默认认为数据应该具有某些规律。
举个简单例子:
如果我们认为图像中的局部纹理很重要,那么可以设计卷积核去看局部区域。如果我们认为同一种视觉模式可能出现在图像的不同位置,那么可以让同一个卷积核在整张图像上滑动。这些设计本身就是一种归纳偏置。也就是说,归纳偏置并不是坏事。相反,在数据量有限时,合理的归纳偏置可以帮助模型更快、更稳定地学习。
2. CNN 的归纳偏置体现在哪里?
CNN 之所以长期主导计算机视觉,一个重要原因就是它的结构非常适合图像。CNN 中至少包含三种非常重要的图像归纳偏置。
2.1 局部连接
CNN 的卷积核通常只看一个局部区域。例如,一个 3×3 卷积核每次只处理当前位置附近的 9 个像素点。这说明 CNN 默认认为:图像中的局部区域很重要。这和图像数据的特点非常吻合。因为图像中的边缘、角点、纹理、颜色变化,往往都发生在局部区域。
例如:
猫的胡须是局部纹理;
车轮边缘是局部形状;
树叶纹理也是局部模式。
所以 CNN 不需要从零开始学习"局部区域很重要"这件事。它的结构天然就把这个假设写进去了。
2.2 权重共享
CNN 的另一个重要特征是权重共享。同一个卷积核会在整张图像上滑动。这说明 CNN 默认认为:同一种视觉模式可以出现在图像的不同位置。
例如,一个检测边缘的卷积核,不管边缘出现在左上角还是右下角,都可以用同一组参数去检测。这带来两个好处:
第一,减少参数量。
第二,增强模型对位置变化的适应能力。
比如猫的耳朵可能出现在图像左侧,也可能出现在右侧,但 CNN 不需要为每个位置单独学习一套检测器。
2.3 平移等变性
CNN 还有一个重要性质:输入图像发生平移时,特征图也会相应平移。
简单来说,如果图像中的目标从左边移动到右边,卷积提取到的特征也会跟着移动。这对视觉任务非常重要。因为很多图像任务中,目标的位置并不固定。
例如:
狗可能出现在图像中心;
也可能出现在左下角;
也可能只露出一部分。
CNN 的结构天然适合处理这种位置变化。
3. ViT 的归纳偏置为什么更弱?
ViT 的设计思路和 CNN 不一样。
ViT 做的第一件事是:把图像切成 patch。然后把这些 patch 当成 token,输入 Transformer。也就是说,ViT 更像是把图像当成一个 token 序列处理。
对于 ViT-B/16:
输入图像大小:224 × 224
patch size:16 × 1
patch 数量:14 × 14 = 196
加入 class token 后:197 个 token
这些 token 进入 Transformer 后,会通过 self-attention 建模关系。但是相比 CNN,ViT 缺少很多强视觉先验。
3.1 ViT 不再逐像素滑动卷积
CNN 会在整张图像上滑动卷积核。而 ViT 一开始就把图像切成 patch。对于 ViT-B/16 来说,每个 patch 是:16 × 16 × 3
也就是说,一个 patch 内部的细粒度空间结构会被展平后映射成一个 token。虽然 Patch Embedding 可以学习 patch 内部的信息,但 ViT 并不像 CNN 那样在整个网络中持续使用局部卷积操作。所以 ViT 对局部纹理和边缘的建模,并没有 CNN 那么强的结构先验。
3.2 ViT 不天然具备强局部性
CNN 的卷积核天然关注局部邻域。而 ViT 的 self-attention 一开始就允许所有 token 之间交互。
这听起来是优点,因为它能直接建模全局关系。但从另一个角度看,这也意味着:模型并不天然知道相邻 patch 更可能相关。对于人类来说,图像中相邻区域通常关系更强。对于 CNN 来说,这种局部性被卷积结构天然编码了。但对于 ViT 来说,这需要通过数据学习。
3.3 ViT 需要学习空间关系
ViT 会加入 position embedding,告诉模型每个 patch 的位置。但是 position embedding 只是提供位置信息,并不等于模型天然理解二维图像结构。ViT 需要通过训练数据学习:
哪些 patch 是相邻的;
哪些 patch 属于同一个物体;
哪些远距离 patch 有语义关系;
哪些区域对分类更重要。
这些空间关系不是像 CNN 那样强行写入结构中的,而是更多依赖数据学习。所以,ViT 的归纳偏置更弱。
4. 小数据场景下,为什么 CNN 往往更稳?
如果数据量不大,一个归纳偏置强的模型往往更容易训练。原因很简单:数据少时,模型没有足够样本去学习所有规律,所以结构先验会非常重要。
CNN 已经默认假设:
局部区域很重要;
同一种特征可以在不同位置复用;
图像特征应该从低级到高级逐层组合。
这些假设大多数时候是合理的。所以即使数据量不是特别大,CNN 也能比较稳定地学习视觉特征。而 ViT 的结构更加通用。它不强制模型按照局部到整体的方式理解图像,而是让模型自己通过 attention 学习 token 之间的关系。这带来一个问题:如果数据量不够,ViT 可能学不到足够好的视觉规律。所以在小数据场景下,ViT 容易出现:
训练不稳定;
过拟合;
泛化能力不如 CNN;
需要更强的数据增强和正则化。
这就是为什么 ViT 原论文特别强调大规模数据预训练。
5. 大规模数据下,为什么 ViT 潜力更强?
既然 ViT 在小数据下不一定占优,那为什么它后来会成为视觉基础模型的重要结构?
原因在于:当数据规模足够大时,弱归纳偏置不一定是缺点,反而可能带来更强的可扩展性。CNN 的强归纳偏置在小数据场景下很有帮助。但是,这些结构假设也可能限制模型表达能力。例如,CNN 更偏向局部处理,而 ViT 可以更自由地建模任意 token 之间的关系。当数据规模非常大时,ViT 可以从数据中学习到:
局部纹理关系;
长距离依赖关系;
物体部件关系;
前景背景关系;
全局语义关系;
跨模态对齐关系。
也就是说,大规模数据可以弥补 ViT 归纳偏置不足的问题。当模型见过足够多图像后,它可以自己学习图像世界中的统计规律。这也是 ViT 在大规模预训练后表现强大的重要原因。