一个成熟的神经网络就应该有一点自己的想法了!

作者: AI悠米精 | 来源:发表于2019-05-10 10:24 被阅读86次

导读:为什么神经网络能做出决策?长久以来,这个黑盒问题一直困扰着我们。不过好在一些技术能帮助我们理解神经网络的决策过程。Hive是一家利用深度学习进行数据分析的公司,他们创造的模型grad-cam能帮助我们一窥神经网络的内部机制。

我们很想知道神经网络学到了什么、它是依靠什么来判断某张图片是有用的。利用grad-cam,我们研究了模型的预测:运动类型、行动/静止、毒品(drugs)、暴力、吸引点、种族、年龄等等。

很显然,在上面两个图片中,吸引力模型关注更多的是身体,也就是图片中部而非人脸。有趣的是,在训练中并没有加入任何边框信息,但模型自己就学会了定位。该模型在20万张图片上进行训练,研究团队Hive从中将其分成三类:hot、neutral、not。然后将每组中的分数合并,生成一个打分器,分数从0到10。可以点击这里,上传自己的照片试一试。

主要思想是在全局池化之前将Logit层应用到最后一个卷积层。这会创建一个地图,展示网络决策中每个像素的重要性。

上图最左,橄榄球运动员的照片告诉模型这是一个动作。分类器同样能识别中间的裸体图片和右边代表暴力的枪支。

上图右侧的图片中有一位穿着西装的男士,分类器将其认成“电视节目”而非“商业事物”,而这是帮助我们了解grad-CAM是如何解释模型决策的重要例子。

分类器还可以识别动画片。分类器的关注点往往在人物的边缘,同时还会加上背景,非常有趣。

CAM和GradCam

类别激活地图(CAM)最初是由Zhou创建的,它可以显示网络正在查看什么。对于每个类别,CAM可以标明图像中最重要的部分。

接着,Ramprasaath扩大了CAM的应用范围。具体来说,CAM可以处理全连接层和更加复杂的场景,例如问答。幸运的是,我们不需要修改网络就能计算grad-CAM。

最近,Chattopadhyay进一步改进了模型,提高了输出热图的准确度,改进后的模型成为Grad-CAM++,它能够更高效地处理多个类别中的对象,同时能识别出对象的整个轮廓,而非只对明显部位有反应。这样的结果是通过正偏导数的加权组合得到的。

以下是在TensorFlow上的安装方法

one_hot = tf.sparse_to_dense(predicted_class, [num_classes], 1.0)
signal = tf.multiply(end_points[‘Logits’], one_hot)
loss = tf.reduce_mean(signal)

然后我们计算了损失函数相对于最后一个卷积层的导数,并对这些梯度进行归一化。

output, grads_val = sess.run([conv_layer, norm_grads],
 feed_dict={imgs0: img})

之后运行图形来计算最后一个卷积层的输出和归一化的梯度。

weights = np.mean(grads_val, axis = (0, 1)) # [2048]
cam = np.ones(output.shape[0 : 2], dtype = np.float32) # [10,10]

计算每个10×10网格的梯度均值作为权重(假设输入的是299×299的图片)。由于在最终的10×10的卷积层上有2048个输出通道,因此有2048个权重。

cam = np.ones(output.shape[0 : 2], dtype = np.float32) # [10,10]
for i, w in enumerate(weights):
 cam += w * output[:, :, i]

生成10×10的粗略输出作为平均梯度值和最终卷积层的加权总和。

将cam通过RELU,只取积极的分类结果。然后我们将地图的粗略输出调整为适合输入的大小并显示出来。

最后,主要功能为TensorFlow的slim模型和预处理功能。通过它们计算出grad-CAM的输出,并将其与输入照片混合。在下面的代码中,我们使用softmax概率最大的类别作为grad_cam的输入。除此之外,我们还可以选择任意一个类别,例如:

该模型以99%的概率将图片预测为“酒精”,0.4%的概率是“赌博”。但是当把predicted_class从酒精转换成赌博后,我们可以看到,尽管赌博的概率很低,但它仍然能清楚地定位图片中表示赌博的地方。

结语

给大家送一波福利:人工智能学习资料,有意向的可以加我V,回复:【学习资料】来领取整理好100G的学习资料

相关文章

  • 一个成熟的神经网络就应该有一点自己的想法了!

    导读:为什么神经网络能做出决策?长久以来,这个黑盒问题一直困扰着我们。不过好在一些技术能帮助我们理解神经网络的决策...

  • 写给自己的信

    我有很多缺点,也有很多优点。 缺点就是我不够自信,优点就是我相信我的优点。 长大了想法就应该成熟一点,人也要稳重一...

  • 选择

    每个人都是独立的个体,有些自己独特的想法和感受。面对同一件事,不同的人就应该有不同的选择,做出了选择就应该为自己的...

  • 在大学,就应该有要挣钱的想法了

    想要赚钱是不丢人的,如果你大一就有了想要赚钱的想法,那说明你成熟了,懂得了作为一个成年人要学会养活自己,承担责任了...

  • 好的想法就应该有行动相伴~

    今天看《手把手教你买基金》这本书时,提到了72法则,意思是72/年化收益率=资产翻一倍的时间。 也有人说,72法则...

  • 成熟

    随着年龄的增长,以为长大便是成熟。以为有了想法,便是成熟,有了一点成果,便是成熟。 可2020年关发生的系列事情,...

  • 关于神经网络的一点想法

    以前谈过的一个问题. 比如经典的数字识别问题.给定feature和对应的结果,实际上就是一个拟合问题. 当时基于的...

  • 一点不成熟的想法

    ①人生的祸福、顺逆、毁誉基本都是同时存在的,永远分不开。 有多少痛苦就有多少幸福,反之亦然。有多少顺境,就有多少逆...

  • 男人的样子

    男人就应该成为家庭的后盾,就应该有他自己的样子,就应该扛起事来,就拿儿子开始,我可以着急,可以难过,甚至可以哭啼,...

  • 男人的样子

    男人就应该成为家庭的后盾,就应该有他自己的样子,就应该扛起事来,就拿儿子开始,我可以着急,可以难过,甚至可以哭啼,...

网友评论

    本文标题:一个成熟的神经网络就应该有一点自己的想法了!

    本文链接:https://www.haomeiwen.com/subject/tjeooqtx.html