cs231n 学习笔记(7)- 理解和可视化CNN

目录

1. Visualizing what ConvNets learn

2. Visualizing the activation and first-layer weights可视化激活值和第一层权重

2.1 Layer Activations 

2.2 Conv/FC Filters

3. Retrieving images that maximally activate a neuron 寻找使网络“最激活”的图像

3. Embedding the codes with t-SNE 使用t-SNE嵌入

4. Occluding parts of the image 遮挡部分图像

5. Visualizing the data gradient and friends 可视化数据梯度等

5.1 Data gradient

5.2 DeconvNet 反卷积网络

5.3 Guided Backpropagation 反向传播指导

6. Reconstructing original images based on CNN codes

7. How much spatial information is preserved?

8. Plotting performance as a function of image attributes

9. Fooling ConvNets

10. Comparing ConvNets to Human labelers           


1. Visualizing what ConvNets learn

为了提高神经网络的可解释性,有一些方法可以用来对卷积神经网络进行理解和可视化。本节将介绍一些相关工作和方法

2. Visualizing the activation and first-layer weights可视化激活值和第一层权重

2.1 Layer Activations 

最直接的可视化方法就是:在前向传播过程中,对激活值进行可视化。对于Relu网络,训练刚开始的时候激活图会是点状且相对密集(blobby and dense);随着训练的深入,激活图通常会变的更稀疏,且激活值集中出现在某一区域。注意,有时可能出现对于许多不同的输入,输出的激活图都为零的情况发生,这可能代表着出现了dead filter,可能是学习率过高的一个信号。

           

上图是向训练好的AlexNet网络输入一幅猫图像,每张小图形对应着一个滤波器的输出,左图是第一层卷积层激活图的可视化,右侧图是第五层卷积层激活图的可视化。注意,激活图中大部分值为0,是稀疏的,且激活部分集中在某些固定的位置。

2.2 Conv/FC Filters

第二种可视化方法是对权重进行可视化。最常见的是对第一层卷积层的滤波器进行可视化,因为这一层直接对应着原始的图像,其滤波器的可解释性最强。当然,也可以对更深层网络的滤波器进行可视化。之所以对权重进行可视化,是因为:通常来讲训练较好的网络会具有比较平滑,噪声比较少的滤波器;而当滤波器噪声较多时,可能标志着网络还没有被训练好,或者正则化强度过小导致过拟合。

          

上图中,左侧是AlexNet的第一层卷积层的滤波器的可视化;右图是第二层滤波器的可视化。注意到第一层的滤波器非常光滑,标志着网络训练良好。有彩色和灰度图是因为AlexNet包含两个数据流,一个是高频率的灰度图,一个是低频率的彩色图。第二层网络的滤波器的可解释性就差很多,但是可以看出的是这些滤波器依旧很光滑,结构很好,几乎没有噪声。

3. Retrieving images that maximally activate a neuron 寻找使网络“最激活”的图像

另一种可视化方法是:向网络中输入大量图像,看看那些图像能够最大程度的激活神经元,即:激活值最大。通过这些图像,理解神经元期望在感知域中找到什么样的图片。论文Rich feature hierarchies for accurate object detection and semantic segmentation就属于这一种。

             

上图是AlexNet第五个池化层的最大激活值对应的图像。白色框是激活值和对应的感知域。可以看到,神经元对上半身、文字和高亮区域响应较大。

其中的问题在于Relu 神经元本身么有意义。然而,可以将多个Relu神经元作为某个空间中的基向量,用来表示图像块。具体参考 Intriguing properties of neural networks

3. Embedding the codes with t-SNE 使用t-SNE嵌入

卷积神经网络可以看成组将将图像转换成线性分类器可分的表现形式。我们可以把图像放到二维空间中,这样它们在低维度空间的距离比高维度空间的距离更小。有多种方法可以实现将输入数据从高维空间映射到低维空间中进行表示,并保留其对应点之间的距离。其中t-SNE就是一种最出名的嵌入方法。

为了完成嵌入,我们使用一组图像,并用CNN提取特征(例如:AlexNet在最后一个FC层之前得到的4096维的向量)。我们可以把CNN提取出的特征输入到t-SNE中并得到降维后的2维向量。然后,将对应图片在一个网格中进行可视化:

              

上图就是基于CNN提取出的特征输入到t-SNE中降维的结果。图中相近的图片是CNN表示空间中比较接近的图像,代表CNN认为它们相似。注意,这个相似通常是基于类别或者语义上的相似,而不是像素和颜色的相似。更多请参考t-SNE visualization of CNN codes

4. Occluding parts of the image 遮挡部分图像

假设CNN将一幅图像分为dog。我们怎么能确定它确实是识别出了图像中的狗,而不是背景图像呢?一种方法是通过遮挡部分图像来确定网络对图像哪部分感兴趣,并绘制遮挡不同部分后,并将对应正确类别的概率可视化为2维热力图。具体见论文Visualizing and Understanding Convolutional Networks

               

上面三幅图像为输入图像,灰色部分为遮挡区域。下面三幅为遮挡不同区域,得到的正确类别概率所对应的热力图。可以看出,遮挡关键部分,如第一幅图中的狗头,会导致分出正确类别的概率下降。

5. Visualizing the data gradient and friends 可视化数据梯度等

5.1 Data gradient

Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps

5.2 DeconvNet 反卷积网络

Visualizing and Understanding Convolutional Networks

5.3 Guided Backpropagation 反向传播指导

Striving for Simplicity: The All Convolutional Net

6. Reconstructing original images based on CNN codes

Understanding Deep Image Representations by Inverting Them

7. How much spatial information is preserved?

Do ConvNets Learn Correspondence? (tldr: yes)

8. Plotting performance as a function of image attributes

ImageNet Large Scale Visual Recognition Challenge

9. Fooling ConvNets

Explaining and Harnessing Adversarial Examples

10. Comparing ConvNets to Human labelers

What I learned from competing against a ConvNet on ImageNet

 


           

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值