以下就两篇论文从两种不同的角度来描述研究者们对于泛化能力的理解和解释。
论文 1:Intrinsic dimension of data representations in deep neural networks
论文链接:https://arxiv.org/pdf/1905.12784v1.pdf
对于一个深度网络,网络通过多层神经层渐进的转换输入,这其中的几何解释应该是什么样的呢?本文的作者通过实验发现,以固有维度(ID:intrinsic dimensionality)为切入点,可以发现训练好的网络相比较未训练网络而言,其每层的固有维度数量级均小于每层单元数,而且 ID 的存在可以来衡量网络的泛化性能。
1 首先,ID是什么?
ID 是描述数据信息所需要的最小的且不造成重要信息损失的维度。目前的深度神经网络中,我们普遍的都知道过量的参数导致了模型的过参数化,带来了冗余信息,神经网络压缩就是由此产生的。那么,有没有什么定量的统计量来显示网络的复杂度或者评估网络呢,本文就是以固有维度为切入点来探索该统计量和模型泛化能力之间的关系。
2 ID 的评估方法
作者用 TwoNN 这个方法来估计 ID,TwoNN 的简单流程如下图所示。
图 1:TwoNN 估计 ID 的流程。
图 1 左图表示的是某神经网络第二层的两个维度的数据点集,右图是运用 TwoNN 算法简要估计 ID 的流程。首先,TwoNN 算法随机采样一个数据点,并通过计算距离选取出这个数据点对应的最近邻(r1)和其次近邻(r2),计算这两个邻居之间的比值。通过概率分布估算出这个比值的分布,最后通过多次采样计算估算出数据的 ID,例如,在图 1 中的数据中 ID 约为 1。
当 ID 在 20 以下的时候,TwoNN 算法可以无限的逼近真实的 ID。而 ID 的真实数值较大,且仅有有限的采样数据的时候,TwoNN 估计出来的 ID 是小于真实值的。因此,在这个情况下,利用 TwoNN 估计出来的 ID 值可以看做一个真实 ID 值的下界。
3 实验结果和结论
以上是对 ID 的介绍以及评估方法的介绍。利用这个估算方法,本文。但是,总的来说本文的重点部分就是通过对 ID 的研究,回答如下的几个问题。
- 在 CNN 网络中,不同的 layer 之间,ID 是否会变化?
- ID 和网络的线性维度是否有区别?
- ID 和网络泛化性能之间是否有联系?
接下来,我们来一个个的回答如上的三个问题。
问题 1:在 CNN 网络中,不同的 layers 之间,ID 是否会变化?
首先,作者在 VGG-16 上用 ImageNet 预训练,并在一个 1440 张的综合数据集上微调,得到如下图所示的曲线。
图 2:ID 在不同的 layer 之间的变化。
从图 2 中,我们可以明显的看到,ID 在不同层之间是有个先上升后下降的过程。尤其是在最后一层,ID 达到一个最小的量级。
图 3:ID 和绝对深度、相对深度的关系。
在图 2 中,我们已经发现 ID 在层级之间是够「驼背」的样式,那么这个驼峰的出现是和绝对深度还是相对深度有关呢?
图 3 可以回答这个问题,在图 3 的右图中,我们可以发现这个趋势跟相对深度有关,基本的驼峰出现在 0.2-0.4 的相对深度之间。当然从图 3 的大量实验,也更能佐证图 2 的 ID 和层之间的趋势。
问题 2:ID 和网络的线性维度是否有区别?
为了回答第二个问题,作者选用了 PCA 作为线性降维的方法来和 ID 对比。
图 4:PCA 和 ID 与模型数据降维之间的关系。
在图 4A 中,PCA 的特征值谱中出现了一个间隙,这个可以表明数据降维之后并不在一个线性的空间中,而是一个弯曲流形中。
问题 3:ID 和网络泛化性能之间是否有联系?
图 5:网络最后一层 ID 和精度之间的关系。
图 5 是作者在一系列的网络实验中,以精度为衡量指标,计算不同网络最后一层的 ID。我们可以看到这个趋势大概是一个线性的关系。这就表明,最后一层的 ID 跟网络的测试精度之间是存在这紧密的联系的,那是否也可以换句话说,该层的 ID 可以表明网络的泛化性能。
4 讨论
作者还做了很多的其他辅助的实验,比如以上的结论在未训练的网路上不成立,在随机的标签 labels 上训练出来的网络中也不成立等等。但是,总的来说作者还是集中在是三个问题。
- ID 可以用来表明网络中的信息。其趋势表现为层级之间的先上升后下降。
- 网络的泛化性能可以用 ID 来衡量,也就是最后一层的 ID。
- 深度网络的降维过程将数据降维到一个弯曲流形的空间,而不是线性空间,这也可以在一定程度上表明网络的泛化性能。
笔者认为,仅仅用 ID 这个统计量来解释网络性能当然还是不够的,但是这并不妨碍通过 ID 来指明之后网络训练或者测试的提升方向。比如说,我们是否可以用 ID 的趋势来判断一个网络设计的是够合理,训练的是否充分呢,或者又比如说,我们还能够通过最后一层的 ID 来初步评估网络的泛化性能呢?
论文 2:This Looks Like That: Deep Learning for Interpretable Image Recognition
论文链接:https://arxiv.org/pdf/1806.10574.pdf
当人遇到图像判断的时候,总是会分解图片并解释分类的理由,而机器在判断的时候总是跟人的判断会有些差距。本文旨在缩小机器分类和人分类之间的差距,提出了一个 ProtoPNet,根据人判断的机理来分类图像。本文网络通过分解图像,得到不同的原型部分,通过组成这些信息最终得到正确的分类。
1 人怎么分类?This looks like that
图 1:怎么判断这个鸟的种类?
图 1 显示的是一个褐雀鹀,那么你怎么判断出来的呢?通常来说,我们会回答,它的头部、它的翅膀部分很像一个典型的褐雀鹀。这个时候,你会发现在人类的判断机制中,我们是着重关注图像的几个部分并且跟给定的物种典型的部分来对比。这就是所谓的「这个看上去像那个」。
2 ProtoPNet怎么学习人?
既然人是通过 this looks like that 来解释的,那么机器学习的模型是否可以模仿这个过程来解释模型推理的依据呢?本文提出的 ProtoPNet 就是从推理的可解释性角度来处理图像。该网络的结构如下图所示:
图 2:ProtoPNet 网络结构。
如图 2 所示,输入一张推理图片,输出分类的结果。该网络主要由卷积网络 f,原型层(prototype layer)以及一个全连接层 h 组成。
卷积网络 f:在卷积网络部分,网络可以是 VGG,ResNet 等经典结构,并且以 ImageNet 的预训练参数初始化。假设输入图像的大小为 224*243,通过卷积网络输出的大小为 HWD(e.g H=W=7),令 z=f(x) 表示卷积输出。这一部分也就是常见的特征提取作用。
原型层(prototype layer):在 prototype layer 部分,网络学习了 m 个原型 P,这些原型 P 以卷积层的特征图为输入,经过 m 组的卷积网络得到不同 patch 的原型激活值,该原型激活图的大小在本文中为 h=w=1。不同的原型 p 可以表示不同的典型部位,计算 pj 和 z 之间的 L2 距离,并将这个距离转换为相似度分数。这种由分数表示的激活图表明了图像中的典型部分的显著强度。
全连接层 h:经过前面的提取特征并聚类到原型得到相似度分数后,m 个相似度分数通过全连接层 h,得到最终的输出单元,经过 softmax 之后得到预测概率,分类图片结果。
本文在训练这个网络的时候,通过对以下三个步骤迭代的进行优化完成网络更新。
- 除了最后一层前面运用 SGD
- 典型特征的映射过程
- 最后一层的凸优化
3 网络的可解释性
在第二部分,我们概述了这个网络的结构部分并且解释了每个部分的作用和组成,但是我们并不知道这个网络为什么能学习人的解释机制呢?那么接下来,我们来看看如何通过这个网络的前向来描述这个网络的解释原理。
图 3:网络的解释过程。
如图 3 所示,最上面的是一张测试图片。在网络的推理过程中,为什么可以判定为一个红腹啄木鸟而不是红顶啄木鸟呢?
图 3 的左半部分是网络判断测试图片为红腹啄木鸟的依据。
第一列的三张图为测试照片的经过网络圈出来的典型部分,第二列和第三列表示的是训练图片中的原型,第四列为激活特征图显示测试图像中的原型所在的显著性位置。
在第二列和第三列我们可以看到三个典型的特征部分,头部,翅膀以及喙。当网络通过卷积层 f 提取特征之后,并通过原型层得到这些显著特征之后,网络通过对这些典型分数进行加权求和(也就是全连接层),最终网络得到判断为红腹啄木鸟的置信度得分 32.736。
同样,图 3 的右边是判断为红顶啄木鸟的置信度分数为 16.886。通过选取最大的 softmax 的数值,网络可以得出这个测试图像的最终分类。这一个过程也就是网络在推理过程中,looks like 可以得到很好的解释。
4 实验对比
作为一个解释性的网络,并不代表网络本身的推理(识别)能力不强,作者在这个角度上做了如下的对比实验。
图 4:ProtoPNet 和其他网络的性能对比。
网络主要以没有解释功能的网络为主,也就是识别网络,比如常见的分类网络。图 4 上半部分对比没有可解释性功能的网络例如 VGG16,ResNet34 等等,ProtoPNet 精度下降约 3.5%。但是,通过增加合适的原型数量,ProtoPNet 还是可以提升性能的。
而与其他研究者提出的解释网络相比,图 4 下半部分对比这些网络的识别性能,比如关注目标层面的 CAM,关注部分注意力的 Part R-CNN,ProtoPNet 利用部分层次注意力和原型之间的结合,能达到一个比较好的结果。
总而言之,本文的解释性网络不仅仅在解释网络的判别原理,而且根据这个原理能够达到一个较好的识别精度。在我看来,通过对比 ProtoPNet 和不同网络性能,验证了作者论述的,ProtoPNet 不仅仅关注实例层或者仅仅关注部分信息,而是结合了部分层次以及原型 case 之间的信息,才能在解释和识别之间达到一个很好的平衡。
5 总结
本文的主要目的是探索机器模型在推理过程中的为什么这个问题,其比较别出心裁的参照了人类的「这个看上去像那个」的回答思路,提出的 ProtoPNet,在可解释性和分类精度上都有不错的表现。
这两篇论文均是研究论文可解释性原理的,只不过论述的角度有所不同。论文 1 从统计学的角度,分析网络的固有维度,以此来展示网络的泛化性能。而论文 2 从可视化的角度来展示了这个网络的推理的功能。这些不同的角度都试图分析网络的可解释性,并给网络性能的提升提出不同的提升方向。
分析师简介:立早,工学硕士,研究方向为模式识别。目前从事人脸识别、检测和神经网络压缩方向的工作。希望能够一直学习,多多交流,不断进步。