cs231n-(8)理解和可视化卷积网络

可视化卷积网络学到的内容

可视化卷积网络学到的内容已经有所研究,这里介绍相关工作。

可视化激活值和第一层权重

激活层
最直接的方法是前向传播过程中,可视化激活值。对于使用ReLU的网络,激活图看起来相对点状且密集(relatively blobby and dense),随着训练进行,激活图变得稀疏,激活值出现在某一区域。一个可能出现且容易注意到的问题是,可视化激活图为零(对于许多输入来说),这是dead filter,这可能是学习率过高导致。

cs231n09_01.jpeg
上图是AlexNet输入一张猫的图片后的激活图。左边是第一层CONV的得激活图,右边是第五层CONV值的激活图。每张激活图对应一个滤波器。可以看出激活图是稀疏的(大部分值为零)且在某些固定位置激活。

卷积/全连接滤波器
权重可视化。最常见的是可视化第一层的权重,因为它直接对应输入原始数据,后面层的权重也可以可视化。可视化权重比较有用,因为训练良好的网络,权重可视化后比较平滑,没有什么噪声。如果可视化后噪声很多,说明网络可能没有训练好,或者正则化强度不够导致了过拟合。

cs231n09_02.jpeg
左边是AlexNet权重可视化。左图对应第一个CONV权重,右图对应第二个CONV权重。左图权重平滑,说明网络训练良好。有彩色和灰度图是因为AlexNet包含两个数据流,一个是高频率的灰度图,一个是低频率的彩色图。第二层CONV的权重也是平滑,没有噪声。

寻找使网络“最激活”的图像

还有一种可视化技术,把很多图像喂给网络,跟踪一些神经元的激活值,查看那些图像能使得神经元激活值最大;通过这个图像就可以知道神经元在寻找什么样的图片。论文Rich feature hierarchies for accurate object detection and semantic segmentation就属于这一种。

cs231n09_03.jpeg
上图是AlexNet第5层池化层中神经元值对应的图。白色区域是神经元的感受视野。神经元对上半身、文字和高光亮相应较大。

ReLU神经元本身没有意义。可以把多个神经元当做空间的一个向量,代表图片中的一个patch。可以参考 Intriguing properties of neural networks

使用t-SNE嵌入

卷积网络可以看做逐渐把图片转换为线性分类器可分特征的过程。我们可以把图片嵌入到2维空间中,这样,低纬度表示时它们距离比高纬度表示更小。t-SNE就是最出名的一种嵌入方法。

为了完成嵌入,使用CNN提取特征(AlexNet中是在分类器前面的4096维的向量),把这些向量嵌入到t-SNE得到每个图片的2维向量。对应图片可以网格形式展示。

cs231n09_04.jpeg
临近的图像,高维空间表示也临近。注意到临近的图像是基于类别或语义的临近,而不是基于像素或颜色。更多参考t-SNE visualization of CNN codes

遮挡部分图像

当卷积网络分类图像时,怎么才能确定是识别了图像内容,而不是图像背景呢?一个研究方法是通过遮挡部分图像来确定网络对图像哪部分感兴趣。通过遮挡不同部分,对应正确类别概率可以可视化为2维热力图。论文Visualizing and Understanding Convolutional Networks中讲述了方法。

cs231n09_05.jpeg

上面三幅图像为输入图像,灰度部分为遮挡。下图是通过遮挡不同部分,得到对应正确类别概率生成的热力图。可以看出,遮挡关键部分,会使正确类别概率下降。

可视化数据梯度等

数据梯度Data Gradient
Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps

反卷积网络DeconvNet
Visualizing and Understanding Convolutional Networks

反向传播指导Guided Backpropagation
Striving for Simplicity: The All Convolutional Net

基于CNN重建原始图像

Understanding Deep Image Representations by Inverting Them

保留多少空间信息

Do ConvNets Learn Correspondence? (tldr: yes)

Plotting performance as a function of image attributes

ImageNet Large Scale Visual Recognition Challenge

Fooling ConvNets

Explaining and Harnessing Adversarial Examples

Comparing ConvNets to Human labelers

What I learned from competing against a ConvNet on ImageNet

### CS231N 卷积神经网络可视化资源 卷积神经网络(CNN)的复杂性抽象性使得理解其内部运作成为一项挑战。因此,近年来出现了大量的研究致力于开发各种CNN可视化技术[^3]。 #### 常见的CNN可视化方法概述 - **激活最大化**:通过调整输入图像以最大化特定神经元或特征图的响应,可以揭示该单元对哪些类型的图案敏感。 - **反向传播梯度(Gradient-based methods)**:这类方法利用误差信号相对于输入的导数来突出显示影响预测的关键区域。例如Grad-CAM就是一种流行的技术,它能够生成热力图指示重要部位。 - **去卷积网络(Deconvolutional Networks)**:这种方法试图重构引起高层特征激活的地图,并将其映射回原始像素空间,从而提供直观的感受野表示。 - **基于采样的方法(Sampling-Based Methods)**:如t-SNEPCA降维算法可以帮助探索高维度特征分布的空间结构,尽管这些不是严格意义上的“可视化”,但在分析隐藏层特性方面非常有用。 对于希望深入了解并实践上述任何一种或其他形式的CNN可视化的读者来说,《CS231n》提供了丰富的教学材料支持工具。具体而言,在课程网站上不仅包含了详细的理论讲解文档,还有配套的编程作业指导学生亲手实现一些基本的可视化功能[^1]。 此外,GitHub其他在线平台上有众多开源项目实现了多种先进的CNN可视化框架技术,可供进一步学习参考。比如TensorFlow官方提供的`tf-explain`库就集成了包括但不限于Grad-CAM在内的多个实用插件,方便快速集成到个人项目当中进行实验验证。 ```python import tensorflow as tf from tf_explain.core.grad_cam import GradCAM model = ... # Your trained model here data = ... # Input data to visualize explainer = GradCAM() grid = explainer.explain((data, None), model, class_index=0) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值