真实面经题目 · 原创解析
Transformer 和 CNN 的核心区别是什么,在视觉任务中如何从局部归纳偏置、全局建模、数据规模和计算成本做选择?
这题考的是能否把 CNN 和 Transformer 的差异讲到建模假设与工程选择:CNN 强局部归纳偏置、参数共享和高效滑动计算,Transformer 强全局关系建模和可扩展表征但更依赖数据与算力。
真实面经题目 · 原创解析
这题考的是能否把 CNN 和 Transformer 的差异讲到建模假设与工程选择:CNN 强局部归纳偏置、参数共享和高效滑动计算,Transformer 强全局关系建模和可扩展表征但更依赖数据与算力。
我会先从建模方式说区别。CNN 用卷积核在局部窗口滑动,天然有局部连接、权重共享和平移等变性的归纳偏置,所以很适合图像这种局部纹理、边缘和形状组合明显的信号,数据不大时也比较容易训练,计算复杂度相对可控。Transformer 的核心是 self-attention,把图像切成 patch 或 token 后直接建模 token 之间的关系,优势是全局依赖、长距离交互和统一多模态建模能力更强,但缺少 CNN 那么强的局部先验,通常更依赖大规模数据、预训练、正则和算力。视觉任务中怎么选,要看任务特征:如果是边缘端、实时检测、数据量有限、局部纹理和小目标很重要,CNN 或混合 CNN backbone 往往更稳;如果是大规模预训练、分类/检索/分割中的全局上下文、跨区域关系、多模态对齐或希望模型统一扩展,Transformer 更有优势。还要看计算成本:全局 attention 对 token 数敏感,高分辨率下成本高,需要窗口注意力、层次化结构、稀疏注意力或混合架构。成熟回答不是说谁替代谁,而是说明归纳偏置、数据规模、分辨率、延迟、内存和下游指标共同决定选择。
CNN 使用小卷积核在图像上滑动,同一个卷积核参数在不同空间位置共享。这带来强局部归纳偏置:模型默认相邻像素关系重要,边缘、纹理和局部形状可以层层组合成高级语义。权重共享也让参数效率高,并天然适应目标在图像中平移出现的情况。
Transformer 把输入表示成 token,通过 self-attention 计算 token 之间的相关性。用于视觉时,图像可被切成 patch token,也可以在特征图上做注意力。它不局限于固定卷积窗口,天然适合捕捉长距离依赖、全局上下文和跨区域关系。
CNN 把“图像局部结构很重要”写进模型结构,因此在中小数据集、标注有限或从头训练时通常更稳。Transformer 的先验更弱,表达自由度更高,但如果没有足够数据、预训练和正则,容易学不到可靠视觉结构。大规模预训练后,Transformer 的弱先验反而可能带来更强扩展性。
许多视觉任务需要远距离关系,例如遥远区域的上下文、场景布局、遮挡关系、实例之间交互、图文对齐和全局语义一致性。CNN 可以通过堆深网络、扩大感受野、FPN 或空洞卷积间接建模全局信息;Transformer 则可以用注意力更直接地建立 token 间关系。
CNN 的卷积计算随图像尺寸和通道数增长,工程实现成熟,硬件友好。标准全局 attention 对 token 数是二次复杂度,高分辨率视觉输入会带来显著显存和延迟压力。因此视觉 Transformer 常用 patch 降采样、窗口注意力、层次化结构、稀疏注意力或 CNN stem 来控制成本。
数据少、端侧部署、实时检测、小目标密集和强局部纹理任务,可以优先考虑 CNN 或混合架构;数据大、预训练充分、需要全局上下文、多模态统一或跨区域关系时,Transformer 更值得尝试。最终要用同一数据和部署约束比较准确率、mAP、鲁棒性、延迟、显存、吞吐和可维护性。
不是。它可以通过 patch embedding、位置编码、窗口注意力、层次化结构或卷积 stem 引入局部信息。区别在于 CNN 把局部先验强写入结构,Transformer 通常需要设计或数据学习这些结构。
因为它的结构先验相对弱,表达空间更自由,少量数据下不一定能学到稳定的边缘、纹理和空间层级。大规模预训练可以弥补数据效率问题,并释放全局建模和扩展能力。
高分辨率会产生大量 token,标准 self-attention 的计算和显存随 token 数二次增长,成本很高。因此常用窗口注意力、多尺度特征、稀疏 attention 或 CNN-Transformer 混合结构。
可以通过堆叠卷积层、下采样、空洞卷积、金字塔结构、全局池化或注意力模块扩大感受野。但这种全局建模通常是间接形成的,不如 self-attention 那样显式计算远距离 token 关系。
要固定数据、训练预算、输入分辨率和增强策略,比较主指标、长尾类别、小目标、鲁棒性、延迟、显存、吞吐和部署复杂度。不能只看论文最高分,也不能只看单机离线准确率。