卷积神经网络就像一个黑盒子,如何才能解释这些filters是如何工作的呢?
可视化第一层的各个filters,可以看出他们都在搜寻一些点、线、角这样的特征,和人的视觉系统前几层的工作原理很像。
但是我们将中间几层的weights可视化之后,就没有什么可解释性了。
因此我们来关注一下最后一层,包含了4096维的特征。
用这个网络跑许多张图片,然后收集他们最后一层的特征,找最邻近特征的图片排列在一起。
上图可以看出,左边的是直接拿原始像素进行邻近匹配,因此都是背景、姿势、朝向等比较相近的图片。而右边是根据4096维特征进行邻近匹配的,因此就算大象有的朝左边,有的朝右边,都会被匹配为最邻近的,证明这4096维特征在分类问题上是非常有意义的。
为了更直观的查看这4096维特征的邻近匹配,可使用一些降维方法,将他们映射到二维平面,可使用PCA或者T-SNE。可以清楚地看到不同类别的分类情况。
还有一个思路是可视化激活函数层。查看每一个单元都在寻找什么特征。比如绿框标出来的那个单元在寻找人脸。这里使用的是ReLU,白色表示激活的部分,黑色表示没有被激活,不是想要寻找的特征。
为了得出每个单元在寻找什么样的特征,可以输入剪裁过后的特征明显的图片,比如眼睛、鼻子等等,来看哪一种特征可以使这个激活函数最大化。
还有一个方法是,用一个方框挡住图片的某一部分,通过网络得出它在对应类别下的概率值,然后在整张图的范围移动这个方框,得出各个地方的概率值,画出图像。
右边那列可见,红色代表概率值低,黄色代表概率值高。
概率值低代表这个被遮住的部位对于该类判别起到很大的影响,因此可以得出该网络都是根据哪些部位的特征来决定进行分类的。
还有一种方式是saliency maps,摆动每一个像素,看看这个像素多大程度上影响了最后的预测概率值。就可以知道图片的哪个部分最能影响结果的判定。
这个的出来的saliency map甚至还可以做segmentation。
领取专属 10元无门槛券
私享最新 技术干货