【读点论文】可视化卷积ZFNet

Visualizing and Understanding Convolutional Networks

  • 主要工作是AlexNet的可视化,以及在此基础上做了一些分析,对于理解卷积神经网络很有裨益。

  • 知道图像能够进行分类,但是不知道为什么图像能够进行分类。这篇关于ZFNET就解释了图像能够进行分类的种图像各部分对语义的相关性。

  • 在医疗影像,自动驾驶等领域,我们需要对设计的模型赋予可解释性

    • 比如肿瘤的判定具体是图像的哪些地方导致的判定结果。
    • 网络的各个层次之间分别是提取了什么样的特征?每一个卷积核和feature map分别是对哪些特点感兴趣,对图像的遮挡会对结果产生什么样的影响。图像不同部位之间具有相关性嘛?
  • ZFnet是2013年图像分类大赛的冠军

    • 主要工作

      • 直观了解和分析CNN学到的特征(中间层特征对应什么样的图像)
      • 可以找到提升模型的办法(观察中间层特征,分析模型可以改进的地方)
      • 分析CNN的遮掩敏感性(遮住某一块区域后对分类结果的影响)
    • AlexNet是2012年图像分类大赛的冠军,能够取得冠军主要原因有

      • 大规模的结构化数据集
      • GPU硬件算力的支持
      • DropOut等模型正则化方法
    • 研究方法

      • 局部敏感性分析
      • 局部相关性分析
      • deconvnet
        • 提供了一个无参数研究图像不变性的方法,能够表明每个中间层的feature map,模式对那种特征感兴趣
    • 其它研究法

      • 梯度上升,使得激活feature map最大的原图。需要谨慎的初始化
      • 用海森矩阵的数值解表明最优响应的不变性。但是神经网络的高层特征很难简单用二阶近似去表示
    • 网络结构

      • ZFNet的网络架构是在AlexNet基础上修改而来,与AlexNet相比,差异不大:

        • ​ 第1个卷积层,kernel size从11减小为7,将stride从4减小为2(这将导致feature map增大1倍)
        • ​ 为了让后续feature map的尺寸保持一致,第2个卷积层的stride从1变为2
          在这里插入图片描述
      • 网络中可训练的参数有:卷积核的权重,全连接层的权重

多分类交叉熵函数
  • 在二分类问题中,损失函数为交叉熵损失函数。对于样本(x,y)来讲,x为样本 y为对应的标签。在二分类问题中,其取值的集合可能为{0,1},我们假设某个样本的真实标签为yt,该样本的yt=1的概率为yp,则该样本的损失函数为:

    • 在这里插入图片描述
  • 在多分类问题中,损失函数也是交叉熵损失函数,对于样本(x,y)来讲,y是真实的标签,预测标签为所有标签的集合,我们假设有k个标签值,第i个样本预测为第K个标签的概率为pi,k,一共有N个样本,则总的数据集损失函数为:

    • 在这里插入图片描述
可视化方法
  • 主要是通过deconv的方法将某一层特征图的Top-k激活反向投射到原图像上,从而判断该激活值主要识别图像的什么部分。

    • 卷积神经网络通过逐层卷积将原始像素空间逐层映射到特征空间,深层feature map上每个位置的值都代表与某种模式的相似程度,但因为其位于特征空间,不利于人眼直接观察对应的模式,为了便于观察理解,需要将其映射回像素空间
  • 要求针对每一层都必须有对应的逆向操作。

    • 对于MaxPooling层,在前馈时使用switch变量来记录最大值来源的index,然后以此近似得到Unpooling
    • 对于Relu层,直接使用Relu层。而对于conv层,使用deconv,即使用原来卷积核的转置作为卷积核
    • 反向重建过程如下图所示:
      • 在这里插入图片描述
特征分析
  • 作者对AlexNet的各层的Top-9激活值进行了可视化,如下图所示:

    • 在这里插入图片描述

      • layer 2对应边、角、颜色的识别
      • layer 3具有更多的不变性,捕获了一些纹理特征
      • layer 4显示了类别的重要差异,比如狗的脸啊,鸟的脚等等。
      • layer 5则开始关注目标整体。
      • 对于神经网络的认识,底层网络专注于识别低级特征,更高层网络通过对下层低级特征的组合抽象形成更高级的特征
    • 作者利用这种可视化方法,找出了原AlexNet结构的问题(比如第一层缺少中频信息,第二层由于步长太大导致了一些叠加效应等等)并对结构进行了改变,之后进行了对比,发现改变之后的模型top-5性能高于原网络。作者还进行了遮挡敏感性和一致性分析

    • 训练过程的特征演化[6个特征]、[1,2,5,10,20,30,40,64轮次]

      • 在这里插入图片描述

        1. 随着训练的迭代,特征图的变化,每一层里面的8列表示不同epoch时的特征图。
        2. 列出的特征图是,对于该层的某个feature map,在所有训练集中激活最强的那个样本的feature map。
        3. 可以看到,低层的特征图收敛地比较快,而高层的特征图要到后面的epoch才开始变动。
        4. 有效果突变,表示能够使filter激活最大的特征图变了
    • 平移不变性,不具有旋转不变性

      • 在这里插入图片描述
    • 遮挡实验

      • 在这里插入图片描述

      • 在这里插入图片描述

      • 不同图像的指定目标局部块之间是否存在一致性的关联,作者认为深度模型可能默认学习到了这种关联关系。作者通过对五张不同的狗的图像进行局部遮挡,然后分析原图和遮挡后的图像的特征之间的汉明距离的和值,值越小说明一致性越大。实验表明,对不同的狗的图像遮挡左眼、右眼和鼻子之后的汉明距离小于随机遮挡,证明存在一定的关联性。

    反卷积实现可视化:
    • 作者以标准的有监督的cnn模型为基础,在每个卷积层后面附加了一个反卷积层,反卷积层可以看成是卷积层的逆过程,同样包含有卷积核以及pooling函数(或者说是逆函数),反卷积层的作用就是将输出特征重新映射为输入信号

    • 这个过程,主要包含三个操作:

      • unpooling
      • 矫正
      • 反卷积
    实验
    • 作者进行了网络结构尺寸调整实验。去除掉包含大部分网络参数最后两个全连接层之后,网络性能下降很少;去掉中间两层卷积层之后,网络性能下降也很少;但是当把上述的全连接层和卷积层都去掉之后,网络性能急剧下降,由此作者得出结论:模型深度对于模型性能很重要,存在一个最小深度,当小于此深度时,模型性能大幅下降。

    •  链接:https://www.jianshu.com/p/0718963bf3b5
      
反池化
  • 池化是不可逆的过程,然而我们可以通过记录池化过程中,最大激活值的坐标位置。
  • 只把池化过程中最大激活值所在的位置坐标的值激活,其它的值置为0,当然这个过程只是一种近似,因为我们在池化的过程中,除了最大值所在的位置,其它的值也是不为0的。
反激活
  • 这个过程就是使用relu函数的逆过程,正向计算中采用relu函数保证了非负性,这个约束在反过程中依然有效,反激活过程和激活过程没有什么差别,都是直接采用relu函数。
反卷积
  • 采用了正向卷积计算中的卷积核转置,与矫正过的输出特征卷积。
总结
  • 揭示了这些特征远远不是随机的、无法理解的模式。
  • 显示了许多直观上令人满意的特性,如合成性、增加的不变性和我们在上升层时的类别区分。
  • 还展示了如何使用这些可视化来调试模型的问题,以获得更好的结果
  • 通过一系列遮挡实验证明,该模型虽然经过分类训练,但对图像中的局部结构高度敏感,并且不仅仅使用广泛的场景上下文。对模型的消融研究表明,对网络的最小深度,而不是任何单个截面,对模型的性能至关重要。
    • 消融研究:消融研究通常是指删除模型或算法的某些“功能”,并查看其如何影响性能。

系列遮挡实验证明,该模型虽然经过分类训练,但对图像中的局部结构高度敏感,并且不仅仅使用广泛的场景上下文。对模型的消融研究表明,对网络的最小深度,而不是任何单个截面,对模型的性能至关重要。

  • 消融研究:消融研究通常是指删除模型或算法的某些“功能”,并查看其如何影响性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值