谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码

夏乙 编译自 Google Research Blog
量子位 出品 | 公众号 QbitAI

Google Research官方博客今天发文介绍了他们的一篇NIPS论文,提出了快速对两种表示进行比较的方法SVCCA,同时还开源了代码。

以下内容来自Google Research博客对这篇论文的介绍,量子位编译整理:

深度神经网络(DNN)在图像、语言理解和语音识别等领域都取得了史无前例的进展,但也带来了新的挑战。

和以前的机器学习方法相比,DNN在分类时更容易受到对抗样例(adversarial examples)的影响,在强化学习中更容易出现灾难性遗忘(catastrophic forgetting),在生成建模中更容易发生模式崩溃(mode collapse)。

为了构建更好的更强大的基于DNN的系统,模型的可解释性也非常重要。我们特别希望DNN有一个“表示相似性”的概念:我们能不能有效地确定两个神经网络所学到的表示是相同的?

在论文SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability中,我们提出了一个简单、可扩展的方法,来解决这些问题。

我们看到这种方法有两个专门的应用,一是比较不同网络所学习到的表示,二是解释DNN中隐藏层学习到的表示。另外,我们还开源了代码供同行们尝试。

我们设置的关键是将DNN中每个神经元解释为一个激活向量,如下图所示,神经元的激活向量是它基于输入数据产生的标量输出。

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第1张图片

 当DNN的输入分别为x1、x2、x3时,其中一个神经元的变化

例如,对于50个输入图像,DNN中的一个神经元会输出50个标量值,其中编码着它对每个输入的响应程度。这50个标量值组成了这个神经元的激活向量。(当然,在实际操作中,我们所用的输入远超50个。)

基于这种基本观察和一些其他构想,我们提出了奇异向量典型相关分析(Singular Vector Canonical Correlation Analysis,简称SVCCA),一种采集两组神经元,然后输出从两者中学习到的对齐特征映射的技术。关键的是,这种技术对神经元排列(对比较不同网络至关重要)等表面差异做出了说明,并且可以在其他直接比较方法不管用的情况下检测相似性。

比如说,我们在中型图像分类数据集CIFAR-10上训练两个卷积神经网络net1和net2,然后为了将这种方法的结果可视化,我们将神经元的激活向量与SVCCA的对齐特征输出进行比较。回想一下,一个神经元的激活向量是基于输入图像的原始标量输出。

可视化结果如下图所示,红色表示net1,绿色表示net2;横轴是按类别排列的图像,类别边界用灰色虚线表示,纵轴是神经元的输出值。

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第2张图片

上面左图展示了net1和net2中的最高激活(最大欧式范数)神经元。检查最高激活神经元一直是计算机视觉中解释DNN的一种常用方法,但是在上图所示的情况下,虽然net1和net2用相同的任务进行了训练,但两个网络中最高激活神经元没有明确的对应关系。

但是,在应用了SVCCA之后,如上面右图所示,我们可以看到两个网络学习到的潜在表示确实有一些非常相似的特征。注意最上面两行所显示的对齐特征映射,它们几乎是完全相同的,下面两行显示的第二高对齐特征映射也是。而且,右图这些对齐映射和类边界也显示出明确的对应关系,比如说我们可以看到,最上面一对输出在(从左往右数)第8类图像上为负,下面一堆对于第2类和第7类的输出为正。

SVCCA不仅可以用来在不同网络之间作比较,也可以用在同一个网络的不同时间段上,来研究网络中的不同层是如何收敛到最终表示的。

下图就显示了在net1各层的表示相似性随着时间而变化的情况。纵轴表示训练中的层,横轴表示训练完成的层。

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第3张图片

在左上角“0% trained”图中,横轴表示训练完成时net1层增加的深度,纵轴表示0%训练时增加的深度,每个小方块(i,j)表示100%训练的i层和0%训练的j层的表示,有多大的相似度。其中左下角的小方格是输入层,在0%和100%训练时表示完全相同,正和我们预期一致。

我们对CIFAR-10上训练的卷积神经网络和残差网络进行了可视化,选取了训练到0%、35%、75%和100%几个点进行比较。上图第一行是卷积神经网络,第二行是残差网络。

研究证实了神经网络是自下而上收敛的,接近输入的层先收敛,层数越高收敛时间越长。这也引出了一种更快的训练方法:冻结训练。

另外,这种可视化还有助于突出显示网络的属性。在第一行,有几个2×2的块,对应着批量标准化层,和之前的层在表示上是相同的。在第二行,训练快结束时,我们可以看到类似棋盘格的样式出现,这是由于网络的残差连接与先前的层有更大相似性。

截至目前,我们的努力集中在将SVCCA用于CIFAR-10,但通过应用离散傅里叶变换的预处理技术,我们可以将这种方法扩大到用于ImageNet那种规模的模型上去。

当我们把这种技术用到ImageNet训练的ResNet上时,可以看出潜在表示与不同类别对应的表示之间的相似性:

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第4张图片

SVCCA还有更多细节和其他应用,比如通过投射到SVCCA输出来压缩DNN、节约计算力的深度神经网络训练方法冻结训练等等,可以看Google的论文。

接下来对于SVCCA也有一些excited的探索,比如用到不同类型的架构上、不同数据集之间的比较、更好的可视化对齐方向等等。

最后附上论文和代码地址:

SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability

论文地址:https://arxiv.org/abs/1706.05806

代码地址:https://github.com/google/svcca

活动推荐

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第5张图片

 点击图片阅读原文

即可报名和获取更多详情


联想全国高校AI精英挑战赛,面向全国征集优秀AI相关领域技术与应用。此次将在全国8大赛区、260所高校开启项目收集和沟通评判,最终入围总决赛的8支参赛队伍,将获得联想创投投资。

加入社群

量子位AI社群11群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot4入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot4,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码_第6张图片

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


你可能感兴趣的:(谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码)