真实面经题目 · 原创解析

Transformer 和 CNN 的核心区别是什么,在视觉任务中如何从局部归纳偏置、全局建模、数据规模和计算成本做选择?

这题考的是能否把 CNN 和 Transformer 的差异讲到建模假设与工程选择:CNN 强局部归纳偏置、参数共享和高效滑动计算,Transformer 强全局关系建模和可扩展表征但更依赖数据与算力。

出现于:阿里巴巴 · 算法

60 秒回答模板

我会先从建模方式说区别。CNN 用卷积核在局部窗口滑动,天然有局部连接、权重共享和平移等变性的归纳偏置,所以很适合图像这种局部纹理、边缘和形状组合明显的信号,数据不大时也比较容易训练,计算复杂度相对可控。Transformer 的核心是 self-attention,把图像切成 patch 或 token 后直接建模 token 之间的关系,优势是全局依赖、长距离交互和统一多模态建模能力更强,但缺少 CNN 那么强的局部先验,通常更依赖大规模数据、预训练、正则和算力。视觉任务中怎么选,要看任务特征:如果是边缘端、实时检测、数据量有限、局部纹理和小目标很重要,CNN 或混合 CNN backbone 往往更稳;如果是大规模预训练、分类/检索/分割中的全局上下文、跨区域关系、多模态对齐或希望模型统一扩展,Transformer 更有优势。还要看计算成本:全局 attention 对 token 数敏感,高分辨率下成本高,需要窗口注意力、层次化结构、稀疏注意力或混合架构。成熟回答不是说谁替代谁,而是说明归纳偏置、数据规模、分辨率、延迟、内存和下游指标共同决定选择。

考点 CNN 先验
难度 真实面经题
回答目标 让候选人能从模型先验和工程约束解释 CNN 与 Transformer:CNN 更强局部先验和效率,Transformer 更强全局关系和扩展性,视觉选型要按数据、分辨率、指标和部署成本权衡。

深入解析

01

CNN 的核心是局部卷积和权重共享

CNN 使用小卷积核在图像上滑动,同一个卷积核参数在不同空间位置共享。这带来强局部归纳偏置:模型默认相邻像素关系重要,边缘、纹理和局部形状可以层层组合成高级语义。权重共享也让参数效率高,并天然适应目标在图像中平移出现的情况。

02

Transformer 的核心是注意力关系建模

Transformer 把输入表示成 token,通过 self-attention 计算 token 之间的相关性。用于视觉时,图像可被切成 patch token,也可以在特征图上做注意力。它不局限于固定卷积窗口,天然适合捕捉长距离依赖、全局上下文和跨区域关系。

03

归纳偏置决定数据效率

CNN 把“图像局部结构很重要”写进模型结构,因此在中小数据集、标注有限或从头训练时通常更稳。Transformer 的先验更弱,表达自由度更高,但如果没有足够数据、预训练和正则,容易学不到可靠视觉结构。大规模预训练后,Transformer 的弱先验反而可能带来更强扩展性。

04

全局建模决定复杂场景上限

许多视觉任务需要远距离关系,例如遥远区域的上下文、场景布局、遮挡关系、实例之间交互、图文对齐和全局语义一致性。CNN 可以通过堆深网络、扩大感受野、FPN 或空洞卷积间接建模全局信息;Transformer 则可以用注意力更直接地建立 token 间关系。

05

计算成本和分辨率强相关

CNN 的卷积计算随图像尺寸和通道数增长,工程实现成熟,硬件友好。标准全局 attention 对 token 数是二次复杂度,高分辨率视觉输入会带来显著显存和延迟压力。因此视觉 Transformer 常用 patch 降采样、窗口注意力、层次化结构、稀疏注意力或 CNN stem 来控制成本。

06

选择应按任务约束而不是潮流

数据少、端侧部署、实时检测、小目标密集和强局部纹理任务,可以优先考虑 CNN 或混合架构;数据大、预训练充分、需要全局上下文、多模态统一或跨区域关系时,Transformer 更值得尝试。最终要用同一数据和部署约束比较准确率、mAP、鲁棒性、延迟、显存、吞吐和可维护性。

易错点

  • 把区别只说成 CNN 用卷积、Transformer 用 attention,没有进一步解释归纳偏置、全局建模和数据效率。
  • 认为 Transformer 一定全面优于 CNN,忽略小数据、端侧、实时和高分辨率场景的成本问题。
  • 认为 CNN 不能建模全局信息,忽略深层网络、金字塔、空洞卷积和注意力模块可以扩大感受野。
  • 认为 Transformer 不需要位置编码或空间设计,忽略视觉 token 本身需要位置信息和层次结构。
  • 只比较准确率,不比较延迟、显存、吞吐、输入分辨率、部署硬件和维护成本。
  • 把大规模预训练结论直接套到小数据从头训练场景,导致选型依据不成立。

面试官追问

Transformer 是否完全没有局部建模能力?

不是。它可以通过 patch embedding、位置编码、窗口注意力、层次化结构或卷积 stem 引入局部信息。区别在于 CNN 把局部先验强写入结构,Transformer 通常需要设计或数据学习这些结构。

为什么视觉 Transformer 通常需要更大数据或预训练?

因为它的结构先验相对弱,表达空间更自由,少量数据下不一定能学到稳定的边缘、纹理和空间层级。大规模预训练可以弥补数据效率问题,并释放全局建模和扩展能力。

高分辨率分割任务为什么不能直接用标准全局 attention?

高分辨率会产生大量 token,标准 self-attention 的计算和显存随 token 数二次增长,成本很高。因此常用窗口注意力、多尺度特征、稀疏 attention 或 CNN-Transformer 混合结构。

CNN 如何获得全局感受野?

可以通过堆叠卷积层、下采样、空洞卷积、金字塔结构、全局池化或注意力模块扩大感受野。但这种全局建模通常是间接形成的,不如 self-attention 那样显式计算远距离 token 关系。

实际项目中怎么做 backbone 选型实验?

要固定数据、训练预算、输入分辨率和增强策略,比较主指标、长尾类别、小目标、鲁棒性、延迟、显存、吞吐和部署复杂度。不能只看论文最高分,也不能只看单机离线准确率。