卷积神经网络的可视化理解
Visualizing and Understanding Convolutional Networks
卷积神经网络的可视化理解
Zeiler, M.D., Fergus, R. (2014). Visualizing and Understanding Convolutional Networks. In: Fleet, D., Pajdla, T., Schiele, B., Tuytelaars, T. (eds) Computer Vision – ECCV 2014. ECCV 2014. Lecture Notes in Computer Science, vol 8689. Springer, Cham. https://doi.org/10.1007/978-3-319-10590-1_53
参考了同济子豪兄【精读AI论文】ZFNet深度学习图像分类算法
方法
使用标准全监督卷积神经网络,通过一系列层,将输入图像映射到输出类别的特征向量。
层结构:
- 通过一系列可学习卷积核对前一层输出进行卷积
- 通过非线性激活函数(relu)
- [可选] 局部的巨大池化操作
- [可选] 特征图间的归一化
实验设置:
- 数据集 : $ {x, y} $ , y 是类别标签的离散变量
- 交叉熵损失函数,比较网络输出和真实标签
- 网络参数(卷积核、FC层的权重偏置)通过loss反向传播训练,通过梯度下降法更新
利用反卷积进行可视化
- 为了理解卷积神经网络的操作,需要理解中间层的特征活动。
- 通过将这些活动回馈到输入像素空间,来展示输入模式引起特征图中的特定激活。
- 反卷积网络(用于无监督学习)。本文中反卷积不具有学习能力,而是作为已训练好网络的探针。
流程,如下图:
- 输入图像传给卷积神经网络,计算特征
- 为了检查给定的convnet激活,将层中的所有其他激活设置为零,并将特征映射作为输入传递到附加的反卷积层
- 通过 (i) unpool, (ii) rectify and (iii) filter 操作在底层重构引起选择给定激活的活动。
- 重复上一步骤中操作,直到到达输入像素空间。
- Unpooling:反池化。卷积神经网络中最大池化操作是不可逆的。通过记录池化区域中最大值的位置,来获取近似的池化操作的逆。如下图:
- Rectification:修正。卷积神经网络使用 relu 非线性函数来确保特征映射始终为正。为获取每层中有效的特征重构,也使用 relu 非线性来传递重构信号。
- Filtering: 滤波器(卷积核)。卷积核对上一层特征映射进行卷积。为反演这一过程,反卷积使用相同卷积核的转置用于纠正映射。
- 此外,在整个重构过程,没有使用归一化操作。
网络结构
- 输入 224x224,进行 卷积操作
- Layer 1-5:
- relu 激活函数
- 3x3 最大池化, 步长为2
- 归一化操作
- 卷积操作
- 两层全连接层
卷积神经网络可视化
特征可视化图
- 第一层: 网络中特征的层次性
- 第二层:颜色、边缘信息
- 第三层:更复杂的不变性,捕获相似纹理、文本信息
- 第四层:显著变化,更具类别特性
- 第五层:整个物体
训练过程特征演化
在给定特征图中,向后投影到输入像素空间中的最强激活(在所有训练实例中)的训练过程
- 低层特征在前几个 epoch就能收敛
- 高层特征需要相当多的epoch才能收敛
架构选择
11x11,步长 4 的卷积核出现混叠伪影。 —> 7x7,步长 2
遮挡实验
模型是否真正识别出图像中物体的位置
实验
1. ImageNet
2. 去除一些层
3. 模型泛化(迁移学习)
- 少量的数据便可达到很好的性能
- 数据集有差异时,上述不有效
4.网络中不同层的特征对分类是否有效
- 用 SVM 代替 softmax 层