文 / Google Brain 团队 Maithra Raghu
深度神经网络 (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 应用到他们的网络表示中,解释和理解他们的网络正在学习的内容。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。