资讯专栏INFORMATION COLUMN

利用 SVCCA 解释深度神经网络

weapon / 1055人阅读

摘要:深度神经网络推动视觉语言理解和语音识别等领域取得了前所未有的进步。这个标量值随后将组成该神经元的激活矢量。绘图的轴包含按类别排序的图像灰色虚线表示类别边界,轴则是神经元的输出值。左图显示了和中的两个较高激活较大的欧氏范数神经元。

深度神经网络 (DNN) 推动视觉、语言理解和语音识别等领域取得了前所未有的进步。但是,这些成功也带来了一些新挑战。特别是,与许多之前的机器学习方法不同,DNN 在分类中容易受对抗样本的影响,在强化学习任务中容易出现灾难性遗忘,以及在生成式建模中容易发生模式崩溃。为了构建更好、更可靠的 DNN 系统,能够解释这些模型就显得尤为重要。具体来说,我们想要为 DNN 引入一种表示相似性概念:我们能够有效确定两个神经网络学到的表示在何时相同吗?

在论文“SVCCA:Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability”中:

https://arxiv.org/abs/1706.05806

我们引入了一种简单、可扩展的方法来解决这些问题。我们研究的两个具体应用是比较不同网络学到的表示和解释 DNN 中的隐藏层学到的表示。此外,我们还将代码开源,以便研究社区可以使用这种方法进行试验:

https://github.com/google/svcca

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

这里的 DNN 有三个输入:x1、x2、x3。看一下 DNN 内部的神经元(红色加粗,右图,这个神经元生成了一个标量输出 zi ,对应于每个输入 xi。这些值构成了神经元的激活矢量。

基于这一基本观察和一些公式,我们引入了“奇异矢量典型相关分析”(SVCCA),这种技术采集两组神经元,然后输出二者学到的对齐特征图。重要的是,这种技术会考虑神经元排序中的排列(对比较不同网络至关重要)等表面差异,并且能够检测其他更直接的比较无法检测的相似性。

例如,假设在 CIFAR-10(一个中等规模图像分类任务)上训练两个卷积神经网络(下面的 net1 和 net2)。为了将这种方法的结果可视化,我们比较了神经元的激活矢量与 SVCCA 输出的对齐特征。回想一下,神经元的激活矢量是输入图像上的原始标量输出。绘图的 x 轴包含按类别排序的图像(灰色虚线表示类别边界),y 轴则是神经元的输出值。

左图显示了 net1 和 net2 中的两个较高激活(较大的欧氏范数)神经元。检查较高激活神经元是计算机视觉领域解释 DNN 的常用方法,但是在这种情况下,net1 和 net2 中的较高激活神经元没有清晰的对应关系,尽管两者都是在同一个任务上训练的。不过在应用 SVCCA 后,如右图所示,我们可以看到两个网络学到的潜在表示确实有一些非常相似的共有特征。请注意,表示对齐特征图的最上面两行接近一致,次高对齐特征图(最下面两行)也是一样。此外,右图中的这些对齐映射还显示出与类别边界的清晰对应关系。例如,我们看到最上面的对为类别 8 提供负输出,而最下面的对为类别 2 和类别 7 提供正输出。

您不仅可以将 SVCCA 应用到不同的网络,也可以将它用于相同网络的不同时间,这就让研究网络中的不同层如何收敛到它们的最终表示成为可能。下图比较了 net1 中各层在训练中的表示(y 轴)和各层在训练结束时的表示(x 轴)。例如,在左上角的图(名称为“0% trained”)中,x 轴表示 net1 中的各层在 100% 训练后增加的深度,y 轴表示各层在 0% 训练时增加的深度。每个 (i,j) 方格随后可以告诉我们层 i 在 100% 训练后的表示与层 j 在 0% 训练时的表示之间的相似程度。左下角是输入层,在 0% 到 100% 训练状态下的表示一致,符合预期。我们对在 CIFAR-10 上训练的卷积神经网络(最上面一行)和残差网络(最下面一行)的多个训练点进行了比较,例如 0%、35%、75% 和 100% 训练状态。

显示卷积网络和残差网络在 CIFAR-10 上的学习动态的绘图。请注意,还可以看到附加结构:最上面一行的 2x2 块得益于批量归一化层,下面一行中的棋盘格样式则是由于存在残差连接。

我们找到了自下而上收敛的证据,接近输入的层先收敛,层越高收敛时间越长。这就引出了一种更快的训练方法 - 冻结训练。请参阅我们的论文了解详细信息。此外,这种可视化还有助于突出显示网络的属性。在最上面一行中,存在多个 2x2 块。这些块对应于批归一化层,与先前的层在表示上是相同的。在最下面一行中,当训练快要结束时,我们看到出现了类似棋盘格的样式,这是由于网络的残差连接与先前的层有更大的相似性。

目前,我们主要将 SVCCA 应用到 CIFAR-10 上。不过,利用预处理技术与离散傅里叶变换,我们还可以将这种方法扩大到 Imagenet 规模的模型。我们将这种技术应用到了 Imagenet Resnet 上,比较了潜在表示与不同类别对应表示之间的相似性:

不同类别的潜在表示的 SVCCA 相似性。我们在 Imagenet Resnet 中利用了不同的层,其中 0 表示输入,74 表示输出,并比较了隐藏层和输出类别的表示相似性。有趣的是,不同类别的学习速度不同:消防车类别的学习速度要快于不同犬种的学习速度。此外,两对犬种(哈士奇类对和㹴犬类对)的学习速度相同,这反映出它们的视觉相似性。

我们的论文介绍了目前研究成果的更多细节,也探索了不同的应用,例如,通过投影到 SVCCA 输出来压缩 DNN,以及冻结训练,这是一种更节省计算资源的深度神经网络训练方法。在探索 SVCCA 的过程中,我们发现了很多令人兴奋的新方向 - 其中,移动到不同的架构上、比较不同的数据集和更好地可视化对齐方向是我们很想尝试的领域。我们希望代码可以鼓舞许多研究人员将 SVCCA 应用到他们的网络表示中,解释和理解他们的网络正在学习的内容。

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4699.html

相关文章

  • DeepMind新成果:通过删除神经元来理解深度学习

    摘要:近日,发布了其关于神经网络可解释性的研究成果,他们通过删除网络中的某些神经元组,从而判定其对于整个网络是否重要。泛化性良好的网络对于删除神经元的操作更具适应性。通过删除单个神经元和神经元组,我们测量了破坏网络对性能的影响。 深度学习算法近年来取得了长足的进展,也给整个人工智能领域送上了风口。但深度学习系统中分类器和特征模块都是自学习的,神经网络的可解释性成为困扰研究者的一个问题,人们常常将其...

    邹立鹏 评论0 收藏0
  • 企业里的深度学习

    摘要:虽然为企业定制的深度学习框架可以提供重要的价值,但自己构建一个这样的框架会带来独特的挑战。目前,训练深度学习模型的较佳选择是图形处理单元。实际上,由于规模和管理方面的复杂性不可预测,许多深度学习项目的最终归宿都是数据科学实验。 深度学习是受到人类大脑启发而产生的机器学习(ML)算法的一种。这些算法也被称为神经网络,它们特别擅长从嘈杂的数据和曾经对机器完全不透明的数据里探测出模式。虽然神经网络...

    stonezhu 评论0 收藏0

发表评论

0条评论

weapon

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<