业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

选自Google Research

作者:Maithra Raghu

机器之心编译

参与:李泽南、路雪

SVCCA 是谷歌大脑提出的一个简单、可扩展的工具,可以帮助开发者获知各类深度神经网络在训练过程中模型内部的表征,为开发者们带来洞见。该工作的论文已经被 NIPS 2017 大会接收,在下周举行的大会上,谷歌还将更深入展示新工具的特点。

深度神经网络(DNN)促使计算机视觉、语言理解和语音识别领域出现了前所未有的进步。但是这些成功也伴随着新的挑战。尤其是,和之前很多机器学习方法不同,DNN 易受分类中的对抗样本、强化学习任务中的灾难性遗忘,以及生成模型中的模式崩溃的影响。为了构建更好、更鲁棒的 DNN 系统,解释这些模型就尤为重要了。具体来说,谷歌希望能有适合 DNN 的表征相似性(representational similarity)的概念:我们能够高效确定两个神经网络具备相同表征的时间吗?

谷歌发布的论文《SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability》中介绍了一个简单、可扩展的方法来解决这些问题。两个特定应用是:对比不同网络学得的表征;解释 DNN 隐藏层学得的表征。此外,谷歌开源了代码以便研究社区可以用该方法进行实验。

项目地址:http://github.com/google/svcca

该设置的关键是将 DNN 中的每个神经元解释为一个激活向量。如下图所示,神经元的激活向量是它在输入数据上生成的标量输出。比如,有 50 个输入图像,DNN 中的一个神经元将输出 50 个标量值,将每个输入对应的值进行编码。这 50 个标量值组成了该神经元的激活向量(当然,实践中输入远远多于 50 个)。

业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

该 DNN 有三个输入 x_1、x_2、x_3。看一下 DNN 内的神经元(右图红色),该神经元生成标量输出 z_i,对应每个输入 x_i。这些标量值构成了该神经元的激活向量。

基于这一基础观察和一些公式,谷歌引入了 Singular Vector Canonical Correlation Analysis(SVCCA),该技术采用两套神经元,然后输出二者学得的对齐特征图。关键是,该技术证明了神经元排序中的排列(对比较不同网络至关重要)等的表面区别,并且能够检测其他更直接的对比无法检测的相似性。

业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

左图展示了 net1 和 net2 中两种最高激活(最大的欧式范数)神经元。检查最高激活神经元是计算机视觉领域中解释 DNN 的常用方法,但是在该示例中,net1 和 net2 中的最高激活神经元没有清晰的对应关系,尽管二者实在同一个任务上进行训练的。然而,使用 SVCCA 后(右图),两个网络学得的隐藏表征确实有很多相似的特征。注意上面两行表示对齐的特征图接近一致,次高的对齐特征图也是一样(下面两行)。此外,右图中的对齐映射还表明类界限(class boundary)的明确对应,如上面两行对 Class 8 给出了负输出,下面两行对 Class 2 和 Class 7 给出了正输出。

你可以对多个网络使用 SVCCA,此外,你还可以对单个网络使用 SVCCA,研究随着时间的变化,网络中不同的层如何收敛至最终表征。下图对比了 net1 在训练 (y-axes) 时的层表征和训练 (x-axes) 结束时的层表征。例如,左上(「0% trained」)中,x 轴表示 net1 在 100% 训练后层的增加深度,y 轴表示 net1 在 0% 训练时层的增加深度。每个 (i,j) 方格表明 100% 训练网络中层 i 的表征与 0% 训练网络中层 j 的表征之间的相似度。左下是输入层,在 0% 和 100% 训练状态下表征一致。谷歌研究者在 CIFAR-10 数据集上对卷积网络(第一行)和残差网络(第二行)的多个训练点上进行了对比,如 0%、35%、75% 和 100%。

业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

图中显示了 CIFAR-10 上的卷积和残差网络的学习动态。注意附加结构也是可见的:上面一行的 2×2 block 是由于批规范层而形成的,而下面一行的棋盘格则是因为残差连接。

谷歌的研究人员找到了「自下而上」收敛的证据,接近输入的层先收敛,层越高收敛时间越长。这种现象引出了一个更快的训练方法「冻结训练(Freeze Training)」,详情请参考论文。此外,这种可视化也有助于突出网络的属性。上面一行有很多 2×2 block,对应于批规范层,它们与先前层的表征是相同的。下面一行中,当训练趋近结束时,我们可以看到出现了棋盘格式纹理,这是由于网络的残差连接,表明它们与之前的层有了更多的相似性。

目前,研究人员主要将 SVCCA 应用在 CIFAR-10 上。如果利用离散傅里叶变换的预处理技术,这种方法可以延展到 ImageNet 这样尺度的模型上去。谷歌将这一技术应用在了 ImageNet 的 ResNet 上,对比了隐藏表征与不同类别对应表征之间的相似性:

业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

不同类别隐藏表征之间的 SVCCA 相似性。研究人员使用了不同层数的 ImageNet ResNet,0 表示输入,74 表示输出,比较了隐藏层和输出类之间的表征相似度。有趣的是,不同的类别有着不同的学习速度:消防车类别的学习速度要快于不同犬种的学习速度。此外,两个犬种(哈士奇类和梗犬类)的学习速度相同,这反映出它们的视觉相似性。

谷歌的论文中详细论述了目前该研究成果的更多细节,同时也探索了不同应用。如通过投影在 SVCCA 输出来压缩 DNN,和冻结训练方法(一种更节省运算量的深度神经网络训练法)。在探索 SVCCA 的过程中,研究人员发现了很多令人兴奋的新方向——如移动到不同类型的架构上、对比不同的数据集,以及更好的可视化对齐方式。谷歌计划在下周于加州长滩举行的 NIPS 2017 大会上发布这些结果。

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

业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

论文链接:http://arxiv.org/abs/1706.05806

我们提出了一种新的技术:奇异向量标准关联分析(Singular Vector Canonical Correlation Analysis,SVCCA),一种快速比较两种表征的工具。这种方法既能在仿射变换中保持固定(允许不同层和网络之间的比较),又能快速计算(可以在不同层和网络之间进行更多计算比较)。我们使用这一工具来测量层间的固有维度,发现了很多案例中存在一些不必要的过参数化;我们也探究了整个训练过程中的学习动态,发现神经网络收敛至最终表征的过程是自下而上的;我们也可以使用该工具显示网络中特定类别信息形成的位置;我们可以利用这一方法找到新的训练方法,大大节省计算资源,并减少过拟合。业界 | 解释深度神经网络训练全过程:谷歌发布SVCCA

原文地址:http://research.googleblog.com/2017/11/interpreting-deep-neural-networks-with.html

本文为机器之心编译,转载请联系本公众号获得授权

?------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

点击「阅读原文」,在 PaperWeekly 参与对此论文的讨论。