谷歌推出神经网络可视化库Lucid,推进模型的可解释性工作
近日,谷歌在 distill 上发文《The Building Blocks of Interpretability》探讨了如何结合特征可视化和其他可解释性技术来理解神经网络如何做出决策,同时谷歌还发布了 Lucid(及其 GitHub),一套研究神经网络可解释性的基础架构和工具和 colab notebooks,使得借助 Lucid 再现文中的可视化变得极其简单。
2015 年,谷歌可视化神经网络理解图像方式的早期尝试导致了迷幻图像(psychedelic images)的产生。不久之后,谷歌开源了 DeepDream 代码,从而衍生出一种小型艺术流派,产生的作品令人惊叹。但是谷歌并未放弃 DeepDream 背后的研究思路,并尝试解决深度学习中最令人激动的问题之一:神经网络的自身运行方式是什么?
去年,谷歌在线上期刊 Distill 上介绍了这些技术如何展示神经网络中单个神经元的行为,而不是 DeepDream 中给神经网络带来有趣的部分。这使我们看到网络中神经元如何检测所有事物(纽扣、布片、建筑),及其如何构建成为更复杂的神经网络层。
GoogLeNet 神经元可视化。更高层中的神经元表示更高级的思想。
尽管可视化神经元令人兴奋,但是这项研究遗漏了一些重要的东西:这些神经元与神经网络实际行为之间的关系。
今天,谷歌发布《The Building Blocks of Interpretability》,这篇新的 Distill 文章探讨了如何结合特征可视化和其他可解释性技术来理解神经网络如何决策。这种结合允许我们稍微「站在神经网络内部」,看到神经网络在某一具体时刻如何决策,及其如何影响最终输出。例如,我们可以看到神经网络如何检测耷拉的耳朵,以提高其判断一张图像是「拉布拉多犬」还是「比格犬」的概率。
谷歌探索了理解神经网络中哪些神经元处于激活状态的技术。如果我们询问哪些神经元被激活,通常会得到一些没用的答案,如「神经元 538 有一点兴奋」,而这对专家来说也没有什么帮助。谷歌的技术通过可视化每个神经元,使事情变得更加有意义,能够看到「耷拉的耳朵检测器被激活」。这可以说是神经网络的 MRI 了。
谷歌同样可以缩小图像,展示如何按照不同层对图像进行「观察」。这允许看到网络从检测简单的边连接到细致的纹理、三维结构,再到高级结构(如耳朵、鼻子、头和腿)的转换。
这些见解本身已经非常令人振奋了,但是当把其与神经网络的最终决策联系起来时,事情更加让人激动。我们不仅看到网络检测出耷拉的耳朵,还看到这一检测如何提高图像被标注为拉布拉多犬的概率。
除了论文之外,谷歌还发布了 Lucid,一个建立在 DeepDream 上的神经网络可视化库。Lucid 是研究神经网络可解释性的一套基础架构和工具。具体来说,它提供顶尖的特征可视化技术实现和灵活的抽象,使探索新的研究方向变得非常简单。除了更艺术化的 DeepDream 图像,Lucid 还允许进行上述的特征可视化。
谷歌还发行了 colab notebooks,它们使得用 Lucid 再现谷歌文章中的可视化变得极其简单。只要打开 notebook,点击按钮运行代码即可,无需安装。
在 colab notebooks 中,你可以点击按钮运行代码,并查看下方结果。
GitHub 地址:https://github.com/tensorflow/lucid
这一工作只是触及用某些可能的接口帮助理解神经网络的表面。期待社区的下一步动作,并为共同致力于加深对人们对神经网络的理解而感到兴奋。
原文链接:https://research.googleblog.com/2018/03/the-building-blocks-of-interpretability.html