一次卷积过程类似于下图,下面动图是GIF图(上下图数据一致,但是只看方法),不过是三维的(可以看做比二维的多一个颜色维,RGB)。如果将上下图结合来看,下图只看两维的话,下面第一行就是把目标图(需要识别的图)利用过滤器求积,步长是2(每次向右向下移动两格)。那么对上图的理解就是,有一个过滤器(曲线)对整个图进行每个局部的求积,从而找到与其对应的最相似的局部(积最大),每个layer层都有若干过滤器,过滤器的值需要机器学习进行一次一次迭代修改,从而让机器自己找到最理想的卷积核(过滤器)例如上图的曲线是一个代表性的,或者一个圆等等,第一层一般都是边界,没有具体语义。
第一层的卷积核人类还可以进行一点解释,但是随着层数的深入,人类越难越能理解机器的识别出这个图片的方法和思维(即三层四层,以及更往后的层数),这就是所谓的“黑盒子”,我们不知道自己训练的机器自己学出了什么,到底什么影响了机器识别出图片、语言等等。哪些(神经元)filter是好的哪些是坏的,是多了还是少了,专家经常只能靠自己的经验和不断的试错才能最终调试出最理想的层数,和每层过滤器最理想的个数(专家所能调出的最理想的,事实上可能还有更好的模型)
过滤器的个数需要专家自己去设定,多了少了都不好,一般是凭借经验,现在可视化是可以与其相结合,将“黑箱子”打开,从而让
卷积神经网络(CNN)作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没有人能够“打开”这个“黑盒”,从数学原理上予以解释。这对理论研究者,尤其是数学家来说当然是不可接受的,但换一个角度来说,我们终于创造出了无法完全解释的事物,这也未尝不是一种进步了!
当然,虽然无法完全“打开”这个“黑盒”,但是仍然出现了很多探索这个“黑盒”的尝试工作。其中一个工作就是今天我们讨论的重点:可视化CNN模型,这里的可视化指的是可视化CNN模型中的卷积核。
可视化工作分为两大类:
一类是非参数化方法:这种方法不分析卷积核具体的参数,而是先选取图片库,然后将图片在已有模型中进行一次前向传播,对某个卷积核,我们使用对其响应最大的图片块来对之可视化
而另一类方法着重分析卷积核中的参数,使用参数重构出图像。
这一篇文章着重分析第一类可视化方法。
最初的可视化工作见于AlexNet[1]论文中。在这篇开创Deep Learning新纪元的论文中,Krizhevshy直接可视化了第一个卷积层的卷积核
我们知道,AlexNet[1]首层卷积层(conv1)的filters是(96,3,11,11)的四维blob:96个神经元,3个颜色分类(RGB),11*11的卷积核。
这样我们就可以得到上述96个11*11的图片块了。显然,这些重构出来的图像基本都是关于边缘,条纹以及颜色的信息。但是这种简单的方法却只适用于第一层卷积层,对于后面的卷积核我们就无法使用这种方法进行直接可视化了。
最开始使用图片块来可视化卷积核是在RCNN[2]论文中