对cnn的分析
假设模型已经设定好,来分析cnn的工作原理。
1.分析在第二次卷积和池化做了什么,第k层的filter的作用是什么?
首先假设第二次卷积的第k个filter的输出是一个11*11的矩阵。用akij表示第k层第i行第j列的像素。
找到一个输入x,求与第k层最接近的输入x
定义激活函数ak为第k层元素的集合。
X*=argmax ak (通过梯度上升的方法进行计算)
结果:
这就是前12个filter的结果,这些都是某种纹路的图案,说明这个filter的作用就是寻找图像上是否存在该filter上类似的图案。
2.分析神经网络中,每一个神经元的作用是什么?
同样的原理,对神经元的输出进行分析。
定义第j个神经元的输出为aj
定义激活函数X*=argmax aj
前9个神经元得到的结果是上面9个方框,说明第一个神经元的作用就是识别出第一个黑色方框中的图案。
原因:flatten之后,神经元的作用是看到整张图的参数(而不是之前图的一部分),这样使某一个神经元最活跃的图案,不再是之前的条纹,而是固定的图案。
3.直接考虑输出会怎么样
设定第i个输出yi,找到使yi最活跃的输出。(输出是识别数字)
设定激活函数X*=argmax yi
结果: