Deep Learning-CNN可视化

关于CNN可视化:

  1. 卷积核filter可视化
  2. feature map可视化

 

卷积核filter可视化

<1>借助反向decode的过程实现filter可视化

所谓filter可视化,不是简单的从filter的weights和biases从看出filter的样子,而是应该从filter的机制出发,去理解filter到底“看到了什么内容,``想看到什么内容``” 

对于CNN,作为model对应了一个function set,而不断训练CNN中params的过程就是在不断逼近true function的过程。所以当CNN中params固定时,整个model对应的就是一个function,其对应的就是一个映射。类似于AE中encode和decode的过程,对于某一层的feature map,对应的可以认为是AE中的code。所以要想知道filter到底看到的是什么,就可以借助这个decode的想法反向推回image,也就是将feature map反映射回image,从而实现可视化filter看到的内容。但是decoder也需要有输入code,即这个feature map。如何选择输入又是一个问题。换句话说,想要知道的不仅仅是filter看到了写什么,而是filter想看到些什么。进而,要想知道filter想看到什么,首先要知道什么时候filter是看到了他想看的。从filter实现对上一层输出的feature map或者是原始image进行卷积计算并产生输出的过程中可以知道filter实际上是在寻找搜索区域中与其本身所描述的内容相一致的那部分内容。也就是说,当filter遇到搜索区域中与其所描述的内容相一致的内容时,filter会产生大的输出,也就是产生很大的响应。所以,要想知道filter想看到什么—>filter看到什么内容时会兴奋,即产生大的响应—>给一个filter很大的响应,fix filter的params不进行update,借助decode的实现,反向推出image,这个所得到的image也就是filter想要看到的内容。

 

<2>使用gradient ascent的方法实现filter可视化

实际上和<1>异曲同工。只不过这里采用的是自动学习decode过程中经历的deconv、depool、derelu等结构的params。这里实际上和模型前向训练(得到尽可能小的loss)时一样都是一个优化问题。这里的优化函数对应于模型前向训练过程中的损失函数。所以这里的目标是为了得到一个尽可能大的output。

这里和前向的模型训练有几点不同:

  • 1)该过程的target是前向过程中input的data,而不是weights和biases值。所以在该过程中改变的是输入input的值,而网络结构中的params的值是保持不变的。
  • 2)这里需要的是一个尽可能大的output,对应的就是filter的响应,要尽可能大。而不是loss function希望他尽可能地小。

所以借助使用gradient descent算法对前向网络中的weights和biases进行更新的思想,使用gradient ascent算法对网络的input进行更新,从而得到能使filter产生很大响应的feature map。从而得到filter想要看到的内容,即input。

可以发现,上述两个方法,都有一个很重要的部分,那就是如何定义一个“具有很大响应的feature map”

 

feature map可视化

<1>借助反向decode的过程实现feature map可视化

本质上就是为了得到原图像。但是需要一个decode的过程是因为这个过程通常发生在一个特定的情景下:一次得到多个图像的feature map,并且要找出响应最大的feature map对应的图像,如果能够做到对每一个任意指定的feature map都能找到原图像时,那完全没必要做decode。但是如果很难从输入的数据集中找到每个feature map对应的图像的话,则需要借助decode的过程反向得到尽可能逼近于原图像的图像。在找到feature map中最大响应的位置可以使用maxpooling,得到一个[1, 1, num_ch]的tensor,其中num_ch为输入maxpooling层的tensor的深度。之后decode的过程中,输入的就是这个经过maxpooling的输出tensor,并需要经过depooling的过程(在depooling的过程中,一些信息会丢失)。

 

<2>直接对feature map进行可视化

重点是要解决高维度的问题,此时可以借助t-SNE来实现降维,从而实现可视化。

 

2.1.找出feature map中响应最大的部分所对应的图像块

<1>

因为已知feature map是由原图像经过某个映射得到的,所以找出对应的图像块,即在原图像中crop出对应的图像块。现在主要是存在两个问题:1)最大响应部分的位置如何获取。2)需要crop出的图像块尺寸是多少。

  • 对于1)可以通过maxpooling来得到最大响应位置在feature map中的位置,再加上比例的缩放关系来获取最大响应在原图像的对应位置
  • 对于2)可以通过感受野尺寸在不同层次下的缩放关系来得到在原图像中需要crop出的图像块的尺寸。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值