设为首页 | 收藏本站欢迎来到深圳市启科网络有限公司!

已阅读

揭秘卷积神经网络热力图:类激活映射

作者:admin      来源:admin      发布时间:2020-01-15

目前在可视化方面,我们已经掌握了许多不同的技术。本文将介绍在卷积神经网络(CNN)中,针对图像的某些部位可视化从而做出判断的不同技术。

这张图片中,一只猫被红色高亮显示为“猫”类,表示网络在进行分类判断时正在查看正确位置。

视觉化神经网络正在查看的位置大有用处,因为它帮助我们理解神经网络是否在查看图像的适当部位,或者神经网络是否在进行误导。下列是一些神经网络在做分类决判断时可能进行误导和错误查看位置的例子:

· 卷积神经网络将一张图片分类为“火车”,而实际上它是在寻找“火车轨道”(这意味着它会错误地将一张火车轨道图片单独分类为“火车”)。

· 卷积神经网络将x光胸片分类为“高患病几率”,依据的不是疾病的实际表现,而是放在病人左肩上的金属“L”标记。重点是,这个“L”标记只有在病人躺下的时候才会被直接放在病人的身体上,而病人也只有虚弱到无法忍受才会躺下接受x光检查。

参考:Zech et al. 2018,Confounding variables can degradegeneralization performance of radiological 深圳网站建设 deep learning models.

· CNN可根据数据集中五分之一的马图像中出现的左下角源标记将该图像分类为“马”。但如果将这个“马的源标记”放在一幅汽车图像上,那么网络仍将该图像分类为“马”。

参考:Lapuschkin et al. 2019, Unmasking Clever Hans Predictors and Assessing What Machines Really Learn.

这张图显示了有关卷积神经网络可视化热力图的几篇论文之间的关系。文章左上角可见这篇文章的关键——类激活映射(CAM):

以下是完整类激活映射论文的链接:Zhou et al. 2016 “Learning Deep Features for DiscriminativeLocalization.”

在以上示意图中,可以看到一些通用的卷积层,形成了“倒数第二个卷积层”(即网络中倒数第二层,也是卷积层的最后一层)。在这个“倒数第二个卷积层”中存在K特征图。在这个示意图中,对于特征映射A1、A2和A3, K = 3。

全局池化层是通过对特征图中的数字求平均值,从而将特征图转换为单个数字。若有K=3个特征图,则在全局池化之后,我们将得到K=3个数字。这三个数字用上图中的三个小正方形表示:

因此,在全局池化中,对特征图Aij的元素进行求和,从i =1到u(全宽),从j = 1到v(全高),然后除以特征图中的元素总数,Z = uv。

请注意,为避免混淆绘图,图中并未显示全连接层中的每个权重。实际上,红色数字(由GAP(A1)输出)通过权重连接到每个输出类,绿色数字(由GAP(A2)输深圳网络公司出)通过权重连接到每个输出类,蓝色数字(由GAP(A3)输出)通过权重连接到每个输出类。

仅看“猫”输出类上,有三个权重,w1、w2和w3,这三个权重将全局池化输出连接到“猫”输出节点。使用上图所示的方程为猫类生成一个分数y^猫,对应于y^猫 = (w1)(红色)+ (w2)(绿色)+(w3)(蓝色)。

现在完成了整个类激活映射结构,从输入图像到分类数。最后一步是得到类激活映射可视化热力图,步骤如下:

这看起来很像计算y^猫分数的方法,但不同之处在于,我们不是将权重w1、w2和w3乘以特征图Ak上的全局池化层生成的单个数字,而是直接将权重乘以特征图。因此,虽然分数的输出是数字,但是类激活映射实际输出的是数字网格。而这个数字网格就是热力图!