Hinton等人新研究:如何更好地测量神经网络表示相似性
https://www.toutiao.com/a6692998683081835012/
近期很多研究试图通过对比神经网络表示来理解神经网络的行为。谷歌大脑 Simon Kornblith、Geoffrey Hinton 等人的一项新研究引入了 centered kernel alignment (CKA) 作为相似性指数,并分析 CKA、线性回归、典型相关分析(CCA)等相关方法之间的关系,证明 CKA 优于其他相似性指数。
在机器学习的很多任务中,深度神经网络可以自动从数据中学习强大的特征表示。尽管深度神经网络在多种任务中取得了令人印象深刻的进展,但如何理解和描述神经网络从数据中学习到的表示仍未得到充分研究。之前的工作(例如 Advani&Saxe (2017)、Amari et al. (2018)、Saxe et al. (2013))在理解神经网络训练过程的理论动态方面取得了一些进展。这些研究虽然很深刻,但却存在基础局限性,因为它们忽略了训练动态过程和结构化数据之间复杂的相互作用。事实上,神经网络表示会比损失函数提供更多机器学习算法和数据之间的交互信息。
谷歌大脑的这篇论文研究了测量深度神经网络表示相似性的问题。测量表示相似性的有效方法可帮助回答许多有趣的问题,包括:(1)基于不同随机初始化训练得到的相同架构深度神经网络是否学习相似的表示?(2)不同神经网络架构的各个层之间是否可以建立对应关系?(3)相同的神经网络架构从不同的数据集中学习的表示有多相似?
该论文的主要贡献有:
- 讨论了相似性指数的不变性及其对测量神经网络表示相似性的影响。
- 引入了 centered kernel alignment (CKA) 作为一种相似性指数,并分析 CKA、线性回归、典型相关分析(CCA)等相关方法之间的关系。
- 证明了 CKA 能够确定基于不同随机初始化和不同宽度训练的神经网络的隐藏层之间的对应关系,而以前提出的相似性指数在这些场景下是不适用的。
- 验证了网络越宽学习到的表示越相似,并且前几层的相似性比后几层更容易饱和。该研究证明了神经网络中的前几层而非后几层能从不同的数据集中学习到相似的表示。
问题描述
令 X∈R^(n×p_1) 表示 n 个样本的 p_1 个神经元的激活矩阵,Y∈R^(n×p_2) 表示相同的 n 个样本的 p_2 个神经元的激活矩阵。假设这些矩阵已经过预处理使得矩阵的每一列均值为零。在不失一般性的情况下,我们假设 p_1≤p_2。
为了可视化和理解深度学习中不同因素的影响,研究者设计和分析了标量相似性指数 s(X,Y),它可用于比较神经网络内和神经网络之间的表示相似性。
论文:Similarity of Neural Network Representations Revisited
论文地址:https://arxiv.org/pdf/1905.00414.pdf
最近一些工作试图通过比较层之间和不同训练模型之间的表示来理解神经网络的行为。该论文研究了基于典型相关分析(CCA)对比神经网络表示的方法,证明 CCA 属于一类测量多元相似性的统计方法,但是 CCA 和其他对可逆线性变换具备不变性的统计方法都无法测量维度高于数据点个数的表示之间的相似性。
该研究介绍了一个相似性指数,它可以测量表示相似性矩阵之间的关系,并且不受上面的这种限制。该相似性指数等价于 centered kernel alignment (CKA),并且也与 CCA 紧密相关。不同于 CCA,CKA 可以可靠地识别基于不同初始化训练的网络学习得到的表示之间的对应关系。
相似性指标的不变性是针对什么变换而言的?
相似性指标的不变性及其对测量神经网络表示相似性的影响是很重要的。该研究认为,相似性的直观概念和神经网络训练的动态过程都要求相似性指标对正交变换和各向同性缩放(isotropic scaling)是不变的,而不是可逆线性变换。
比较相似性结构(Similarity Structure)
与直接比较一个样本在两个表示中的多变量特征(比如通过回归的方法)不同,该研究的主要观点是:首先分别测量每个表示中的每对样本之间的相似性,然后比较相似性结构。在神经科学中,表示样本之间相似性的矩阵被称为表征相似性矩阵(Kriegeskorte et al., 2008a)。下文证明了,如果使用内积来测量相似性,那么表征相似性矩阵之间的相似性可以简化成成对特征相似性的另一个直观概念。
基于点积的相似性。下面是一个将样本之间的点积与特征之间的点积关联的简单公式:
Hilbert-Schmidt 独立性准则(HSIC)。从等式 1 可以推出,对于均值为 0 的 X 和 Y 有:
令 K_ij = k(x_i , x_j ) , L_ij = l(y_i , y_j ),其中 k 和 l 是两个核函数。HSIC 的经验估计是:
Centered Kernel Alignment. HSIC 对各向同性缩放不具备不变性,但可以通过归一化使其具有不变性。归一化后的指标称为 centered kernel alignment (Cortes et al., 2012; Cristianini et al., 2002):
相关的相似性指标
在测量神经网络表示之间的相似性的背景下,研究者简要回顾了线性回归、典型相关和其他相关方法。表 1 总结了实验中使用的公式、指标及其不变性。
表 1:各种相似性指标的总结。
Q_X 和 Q_Y 分别是 X 和 Y 的正交基。U_X 和 U_Y 分别是对 X 和 Y 做奇异值分解后按奇异值降序排列的左奇异向量。|| · ||∗ 表示核范数。T_X 和 T_Y 是截断单位矩阵,利用 T_X 和 T_Y 选出的 X 和 Y 的左奇异向量可以使累积方差达到某个阈值。
线性回归。线性回归是关联神经网络表示的一种简单方法。它可以将 Y 中的每个特征拟合为 X 中特征的线性组合。一个合适的汇总统计量是该拟合所能解释的方差比例:
典型相关分析(CCA)。典型相关分析是求两个矩阵的基,使得当原矩阵被投影到这些基上时,相关性最大。对于 1≤i≤p_1,第 i 个典型相关系数ρ_i 由下式给出:
SVCCA.当 X 或 Y 的条件数很大时,CCA 对扰动敏感。为了提高鲁棒性,奇异向量 CCA 方法 (singular vector CCA, SVCCA) 对 X 和 Y 的奇异值分解截断后使用 CCA。
Projection-Weighted CCA. Morcos 等人 (2018) 提出了一种不同的策略来降低 CCA 对扰动的敏感性,他们称这种方法为「投影加权典型相关分析」(PWCCA):
结论
该研究首先研究了一种基于 All-CNN-C 的类 VGG 卷积网络。图 2 和表 2 说明只有 CKA 方法通过了完整性检查,而其他方法则表现得很差。
图 2:CKA 揭示了基于不同随机初始化训练的 CNN 的不同层之间的一致关系,而 CCA、线性回归和 SVCCA 则无法揭示这种关系。
表 2:不同方法基于最大相似性识别基于不同初始化训练的 10 个结构相同的 10 层 CNN 网络中对应层的准确率,其中排除了 logits 层。
CKA 可以揭示神经网络表示中的异常。图 3 展示了具有不同深度的卷积网络各层之间的 CKA,其中卷积网络的各层分别重复 2、4 和 8 次。从中可以看出,深度加倍可以提高准确率,但是深度增加太多反而会降低准确率。
图 3:CKA 揭示深度过深的神经网络的表示会出现异常。上图:在 CIFAR-10 上训练的不同深度深度网络的各层之间的线性 CKA。每个小图的标题显示了每个网络的准确率。8 倍深度神经网络的后几层与最后一层类似。下图:在相同神经网络的各层上训练的 logistic 回归分类器的准确性与 CKA 一致。
CKA 还可用于比较在不同数据集上训练的网络。图 7 展示了在 CIFAR-10 和 CIFAR-100 上训练的模型在其前几层中生成了类似的表示。这些表示需要训练,而且这些表示与未经训练的网络生成的表示之间的相似性要低很多。
图 7:CKA 显示了在不同数据集(CIFAR-10 和 CIFAR-100)上训练的模型产生了类似的表示,这些表示与未经训练的模型产生的表示差异很大。左图显示了在 CIFAR-10 测试集上不同模型的同一层之间的相似性,而右图显示了在 CIFAR-100 测试集上的相似性。CKA 是每种类型的 10 个模型的均值(45 对)。
从可视化的角度看,RSM 方法比 CKA 汇总统计更有用,因为 RSM 方法不会将相似性汇总为单个数字,而是提供了更完整的 CKA 测量结果信息。图 8 展示了,对于较大的特征向量,XX^T 和 Y Y^T 作用相似,但是使之成立的子空间的秩远低于激活函数的维度。
图 8:基于随机初始化训练的两个 10 层神经网络的共享子空间主要由最大特征值对应的特征向量张成。每行表示不同的网络层。平均池化层只有 64 个神经元。
Hinton等人新研究:如何更好地测量神经网络表示相似性的更多相关文章
- Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用?
Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用? 2019年07月06日 19:30:55 AI科技大本营 阅读数 675 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Adam作者大革新, 联合Hinton等人推出全新优化方法Lookahead
Adam作者大革新, 联合Hinton等人推出全新优化方法Lookahead 参与:思源.路.泽南 快来试试 Lookahead 最优化方法啊,调参少.收敛好.速度还快,大牛用了都说好. 最优化方 ...
- 开学收好这 17 种工具 App,让你新学期学习更有效率
开学啦!不管是想勾搭学长还是想讨好学妹,相信同学们对新学期.新同学或者新学校都已经满怀期待了.但是,除了帅气逼人的学长和青春靓丽的学妹,你们可不能忘记上学的首要任务还是学习噢. 那么,为了帮助同学们更 ...
- iOS 10正式发布:十大新功能,更注重人性化
6月14日凌晨消息,苹果公司举行2016年WWDC全球开发者大会,介绍了watch OS.tv OS.OS X以及iOS 10系统的新特性. 据苹果介绍,iOS 10在锁屏.Siri.地图等十个各方面 ...
- Neuromation新研究:利用卷积神经网络进行儿童骨龄评估
近日,Neuromation 团队在 Medium 上撰文介绍其最新研究成果:利用卷积神经网络(CNN)评估儿童骨龄,这一自动骨龄评估系统可以得到与放射科专家相似或更好的结果.该团队评估了手骨不同区域 ...
- Tomcat 7 的七大新特性(更容易将Tomcat内嵌到应用去中去 )
Tomcat的7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述TOMCAT 7中七个最显 ...
- Azure 媒体服务换新锁,更安全更方便,新钥匙请收好!
不知道有多少人已经把家里的门锁换成了数字化的指纹锁?沿用了几百上千年的传统门锁,在技术的帮助下无疑变得更方便,不用带钥匙,还能远程控制和操作,最重要的是,终于不用担心「衣果(luǒ)着」出门扔垃圾,风 ...
- SQL-表的操作(创建表,删除表,更改列,插入新行,更改行的值,删除表中数据)
一,操作表及列 1.创建表: CREATE TABLE test (ID int PRIMARY KEY IDENTITY,Name varchar(20) ) 2.删除表 DROP TABLE t ...
- Java 8 新特性-Stream更优雅的处理集合入门
Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...
随机推荐
- (转载)IOCP 浅析
转自:http://www.ibm.com/developerworks/cn/java/j-lo-iocp/#author 郭 仁祥, 软件工程师, IBM 简介: 传统的 Server/Cli ...
- HearthBuddy中_settings.txt的更详细参数解释
https://tieba.baidu.com/p/5275382967 默认的配置不是很合理,花了点时间读了下silverfish(也就是兄弟用的AI)的代码后也尝试修改了些参数,有没有效果仁者见仁 ...
- Linux字符编码默认为UTF-8,如出现乱码可设置为GBK
Linux字符编码默认为UTF-8,如出现乱码可设置为GBK1.手动更改profile文件的命令: vi /etc/profile 也可以修改 /etc/sysconfig/i18n 文件,如 LAN ...
- 实体类(VO,DO,DTO)的划分
实体类(VO,DO,DTO)的划分 (2011-12-21 15:50:27) 转载▼ 标签: it 经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度 ...
- leetcode84 柱状图
O(n^2) time 应用heights[r]<=heights[r+1]剪枝: class Solution { public: int largestRectangleArea(vecto ...
- 通过一个name获取tbody下的其他name的值
<tbody id="add_enterGoods_table"> <tr> <td align="center">< ...
- 表的操作管理和 MySQL 的约束控制
一.表的操作 1.表的基本概念 数据库与表之间的关系:数据库是由各种数据表组成的,数据表是数据库中最重要的对象,用来存储和操作数据的逻辑结构. 表由列和行组成,列是表数据的描述,行是表数据的实例. 表 ...
- 用python读取csv信息并写入新的文件
import csv fo = open("result.txt", "w+") reader = csv.reader(open('test.csv')) f ...
- 视图push和presentViewController注意点
presentViewController: - (void)publishClick{ NSLog(@"发布按钮被点击"); PublishViewController *pub ...
- Springboot学习—CommandLineRunner接口(转载)
前言 Spring boot的CommandLineRunner接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次. 如何使用CommandLineR ...