简要回答
CNN 用局部感受野滑动扫描图像,同一卷积核在全图权值共享,天然具有平移等变性,以远少于全连接的参数学到从边缘纹理到物体语义的层次特征。
标准回答
局部连接(Locality):每个神经元只关注局部 patch,符合图像「相邻像素强相关」的先验,避免全连接带来的参数爆炸。
权值共享(Weight Sharing):同一 kernel 扫过整张图,参数量与图像尺寸解耦,并带来平移等变性——目标平移后特征图也相应平移,利于检测/分割。
层次特征(Hierarchy):浅层学边缘、纹理;中层学部件;深层学语义(可用 Grad-CAM 等可视化验证)。典型栈:Conv → 激活(ReLU)→ Pooling/Stride 降采样 → 全局池化或 FC 分类。
与现代 ViT 对比:ViT 依赖大数据预训练做全局建模;CNN 在小数据、边缘部署(手机/NPU)场景仍常见。工业界也有 ConvNeXt、混合架构等折中方案。
工程落地:预处理(resize、normalize)、数据增强(翻转、裁剪)与 OpenCV 流水线常配合 PyTorch 训练。详见知识库 计算机视觉入门。
常见误区
⚠️ 常见踩坑
把「平移不变性」说成「旋转不变性」(需数据增强或专用结构);只会背 AlexNet 层数却不会解释 inductive bias;忽视 padding/stride 对输出尺寸的影响。
追问
追问 1:1×1 卷积有什么用?
跨通道线性组合(升维/降维)、在不扩大感受野的前提下做 channel mixing,后接激活引入非线性。Inception、ResNet bottleneck 中用于减参。
追问 2:CNN 和 ViT 如何选型?
题库专题:什么是卷积神经网络(CNN)?何时使用?数据少、需强归纳偏置、边缘算力紧 → CNN/ConvNeXt;有大规模预训练、追求全局上下文 → ViT/Swin。也可蒸馏:大 ViT 教小 CNN。
题库延伸:与本追问相关的专题题 → 什么是卷积神经网络(CNN)?何时使用?
追问 3:感受野如何计算?
逐层递推:第 l 层感受野 RF_l = RF_{l-1} + (k_l - 1) × ∏ 之前各层 stride,其中 k 为卷积核大小。直觉上 stride 和池化会成倍放大感受野,堆叠更多层、更大核或空洞卷积都能扩大它。小目标检测要保证浅层特征图感受野不过大,否则细节被淹没。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📰 AI 资讯
🛠️ AI 工具