为何CNN需使用Affine层及Affine-ReLU层而非仅用Conv-ReLU-(Pooling)层?
关于CNN中Affine层的两个问题解答
问题1:为何卷积神经网络(CNN)要使用Affine层?
- 卷积层和池化层的核心是捕捉局部空间特征(比如边缘、纹理、物体局部部件),但它们的感受野有限,无法直接对所有局部特征做全局关联整合。Affine层(全连接层)的神经元会连接前一层的所有输入,能把分散在各个局部的特征捏合到一起,建立全局层面的特征关联。
- 大部分CNN的最终任务是分类、回归这类需要输出固定维度结果的任务,Affine层可以把卷积/池化后高维度的空间特征,转换成与任务匹配的输出维度(比如分类任务的类别数),完成从特征提取到最终预测的落地转换。
问题2:为何CNN要采用Affine-ReLU层组合,而非仅使用Conv-ReLU-(Pooling)层?
- 若全程只用Conv-ReLU-Pooling,网络的全局特征整合能力会严重不足:卷积层始终在处理空间维度的特征,哪怕用1×1卷积,也只是对单个空间位置的特征做变换,无法像Affine层那样直接对整个特征图做全局关联计算。
- Affine层配合ReLU能更高效地完成高维特征的非线性压缩与变换:先通过Affine层把空间特征拉平成一维向量,再用ReLU引入非线性,让模型能学习到更复杂的全局特征映射,同时大幅降低后续计算的复杂度(相比一直堆叠卷积层,全连接层的参数和计算量在这个阶段更可控)。
- 看示例结构就能明白:前面的Conv-Pooling堆完后,先用Affine层把特征拉平,再通过ReLU激活,最后输出分类结果。如果全用卷积替代,要么需要把特征图压缩到1×1的尺寸(池化到极致),要么用大量1×1卷积模拟全连接,反而会让网络结构更冗余,计算效率更低。

内容的提问来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

