作者 Yuanyuan Li:几次转行,本科国际贸易,研究生转向统计,毕业后留在比利时,选择从事农用机械研发工作,主要负责图像处理,实现计算机视觉算法的落地。欣赏一切简单、优雅但有效地算法,试图在深度学习的簇拥者和怀疑者之间找到一个平衡。我追求生活的宽度,这也是为什么在工作之外,我也是机器之心的一名技术分析师。希望在这里和大家分享自己对于技术的理解,通过思想的碰撞拓宽思路和眼界。
机器之心个人主页:https://www.jiqizhixin.com/users/a761197d-cdb9-4c9a-aa48-7a13fcb71f83
1. 介绍
选文理由:从统计理论转向人工智能,过去的教育经历让我十分关注深度学习背后的理论支持。相对学界在研究中的大胆探索,工业界一般是更保守的,注重模型的可解释性。特别是在大型机械的研发过程中,每一个部件的可控性都非常重要,假如算法在不可预料的情况下出现问题,就有可能对作业结果造成影响,甚至造成事故。这样的损失往往又是以百万计的。
因此,在我和团队的工作过程中,模型的训练结果虽然重要,但更重要的往往是理解模型的结果为何是这样的, 以便有针对性的对模型测试和明确改进方向。另一方面,产品研发是团队工作,具有不同背景的人在一起工作时,优秀的可视化结果能够更直白的说明观点、提高工作效率。
简而言之,揭示模型表现及其原因的研究,如超参数对模型的影响或模型的可视化,是我比较关注的方向。今年 NeurIPS 收到和接收的论文达到了惊人的数量,势必对于参会的学者造成了一定困扰,即如何有针对性地选择相关论文。在目前发布的神经网络的论文之中,有不少研究将目光转向了对模型稳健性的探索,如超参数设置或模型结构对神经网络损失函数的空间分布的影响。
这类研究对于我们理解神经网络黑箱模型背后到底发生了什么有很大的帮助,也是我今天想要讨论的方向。目前 NeurIPS 官网目前放出的论文仅有标题和摘要,许多还没有发布在网上,因此我选取了三篇在网上已经在 ArXiv 上有预印版的文章进行讨论。
2. 论文讨论
1. Visualizing the loss landscape of neural nets
作者 Hao Li 在马里兰大学取得了博士学位,他的研究方向主要是为高性能和资源受限的系统设计高效且可扩展的机器学习算法。目前 Hao Li 已经进入 Amazon Web Services (AWS) 工作。
这是我想讨论的第一篇论文,主要是因为它提供了一个比较概括性的对神经网络可视化研究。作者主要想研究几个问题:
- 不同的神经网络结构如何影响损失函数的分布(Landscape)。这里作者主要对比了 ResNet 和无快捷连接(shortcut connection)的 ResNet(即模型的结构比较像 VGG 这种经典神经网络结构),其中每个模型又有 20、56、110 层 layer 的不同情况。
- 当损失函数的分布由于神经网络的结构而发生了改变,不同的损失函数分布又是如何影响模型的可训练性、稳健性。
作者首先对使用线性插值法(Linear interpolation)的可视化方法进行了抨击,认为该方法存在几个缺点。首先,1D 图很难显示非凸性;其次,该方法不考虑批量归一化或网络中的不变对称性。作者在这里提出的方法叫做 Filter Normalization,并用这一方法对上面的问题进行了研究。文章中展示的可视化结果非常清晰,如下图所示:
图 1:有无 shortcut connection 的损失函数曲面可视化对比
[图片来源:Hao, L. et al. (2018). Visualizing the loss landscape of neural nets. NIPS.]
上图中的对比很强烈——当神经网络比较浅时,不使用快捷连接(shortcut connection)对于损失分布的影响还不算大,即上图中的(a)和(d)图。当网络达到了 56 层的深度时,无快捷连接(shortcut connection)的模型的等高线图中显示的损失函数基本是混乱的(图(e))。特别是在一些区域中,沿着梯度的方向运动并不能达到损失更小的区域。
这显然是很危险的,意味着梯度下降方法的效率被大大损害了;同时也从另一方面解释了模型的训练性,即为何有些模型的训练更容易,或者对于同一模型为何超参数的取值不同会对模型表现造成巨大影响。假如模型初始化后落入了一个高度非凸的区域中,在整个训练过程中算法可能都无法找到一个比较好的解,因为梯度所指向的方向根本毫无意义。上图第三栏中,ResNet-110-noshort 显示了更极端的非凸性,不管向哪一个方向移动梯度都非常大。
我们特别需要注意的是在上图第一行中——即有快捷连接(shortcut connection)的 ResNet——即使模型的深度大大增加,中心的极小值的深度也并没有增加多少,即模型收敛的区域仍然是相对平坦的。而第二行中当我们去掉了 ResNet 的快捷连接(shortcut connection)时,图像中心紫线所代表的极小值的深度大大增加了。这样一个最直接的影响——上文已经提到——就是训练难度增加了。
另一个比较有意思的发现在于,当神经网络的宽度增加——即每层的神经元个数增加——损失函数的曲面也变得更平滑了,见图 2。这里作者使用了 RestNet 56 层的结构,仍然是第一行有快捷连接(shortcut connection),第二行无。其中每个子图下面的 k 表示隐藏神经元的倍数,即 k=2 为模型的宽度是 k=1 的模型的二倍。旁边的百分比数字表示模型的错误率。
图 2:有无 shortcut connection 和不同宽度的神经网络的损失函数曲面可视化对比
[图片来源:Hao, L. et al. (2018). Visualizing the loss landscape of neural nets. NIPS.]
我们首先从上到下两两对比地讨论这些结果,可以看到有快捷连接(shortcut connection)总是比无快捷连接(shortcut connection)的损失函数曲面更平滑一些,极小值的位置也更浅。不过更重要的是当我们从左到右的进行分析时——随着模型宽度的增加,模型的损失曲面显著地变得更平缓了,也就是更浅了。
对于没有快捷连接(shortcut connection)的模型来说,增加模型宽度也许不能直接解决损失函数的分布中存在梯度混乱的问题,图(f)的四角都可以看到有很不平滑的等高线,但由于曲面变得更浅,我们可以侧面缓解这个问题。
考虑到此前的许多研究都强调神经网络的深度的重要性,而在这里我们却得出更宽的神经网络的损失函数曲面更优秀,也许我们应该创建更深更宽的巨型神经网络?
这里作者只是指出了模型的错误率是随着模型的宽度而降低,随着无快捷连接(shortcut connection)而增加,并没有解释损失函数的曲面是如何影响到模型的稳健性。不过在下一篇文章中,我们将会看到对这方面的分析。
对这篇文章的解读就到这里,我们可以看到虽然本文使用的 filter normalization 还是大量借鉴了目前的 2d 可视化方法,创新性有限,但文中给出的可视化非常直观、清晰,得出的结论直接,很好的完成了文章的主题。另一个亮点在于文章倒数第二部分对我们所观察到的凸性进行了验证,十分严谨。
笔者认为文章的不足在于试图表达的内容太多,在一个版块中试图完成从实验设计、模型结构比较、模型宽度比较、模型初始化讨论、凸性验证等的分析,反而显得内容拥挤,有些结论给的并不清晰,好在作者的叙述是十分易懂的。此外,笔者对 Inception 模型没有被纳入分析感到一点遗憾,毕竟这是目前最受欢迎的神经网络之一,笔者认为比 ResNet 使用的更多。
我们还需要注意,由于对神经网络的可视化必须经过降维处理,而这过程中是有丢失重要信息的风险的,因此,对于依此进行的分析和得出的结论应该始终保持一定的怀疑精神。
目前本文的代码已经公布在 github(https://github.com/tomgoldstein/loss-landscape),有兴趣的读者可以复现一下结果。
2. Hessian-based Analysis of Large Batch Training and Robustness to Adversaries
本文共同一作中 Zhewei Yao 的个人主页没有找到, Amir Gholami 是在伯克利 BAIR 实验室工作的一名博士后,于 UT Austin 获得博士学位,他的博士研究论文被评为 2018 年 UT Austin 最佳博士论文。他同时还获得 SC'17 最佳学生论文奖,ACM 学生研究比赛金奖,以及入围 SC'14 最佳学生论文决赛。Amir Gholami 目前的研究包括神经网络的大规模训练,随机二阶方法和稳健优化。
本文致力于探讨表征神经网络在优化空间中不同点的泛化性能,主要针对不同批量大小的情形。我们在此前的实证研究中都看到大量结果显示使用小批量训练的神经网络的稳健性更好,大批量训练的神经网络更容易泛化失败。这一点从直觉上有些难以理解,因为使用大批量训练参数更新的更加不频繁,而且估计的梯度应该更加平滑和准确。
作者开门见山,在开篇即表述了本文想回答的问题以及他们的回答:
- 大批量训练与小批量训练有何不同?并且使用不同的批量大小,模型收敛的邻域的局部几何之间有什么区别?
回答这个问题的方法是利用反向传播二阶导数来计算真正的 Hessian 谱(hessian spectrum),避免对 Hessian 谱的估计造成的误差。结果显示,此前人们普遍相信的鞍点困扰优化的论据其实并不存在在大批量训练过程中,真正的原因是大批量训练的模型会逐渐收敛于具有更大的谱的区域。
由于计算 Hessian 谱 所涉及到的计算量是巨大的,作者使用了 toy dataset CIFAR-10,MNIST 和 CIFAR-100,所使用的模型也比较简单。下表给出了模型缩写和对应的模型结构,之后的对比分析主要是针对 C1 和 M1 进行的。
表1:模型定义和结构
图 3:在 CIFAR-10 上训练的 C1 的模型(左)和在 MNIST 数据集上训练的模型 M1(右)的 Hessian 的前 20 个特征值。
[图片来源:YAO, Z.; GHOLAMI, A.; LEI, Q.; KEUTZER, K.; MAHONEY, M. W. (2018). Hessian-based Analysis of Large Batch Training and Robustness to Adversaries. NIPS.]
图 3 给出了作者计算出的 Hessian 的 20 个最大的特征值。hessian 是迭代计算的,直到每个特征值的相对误差小于 1e-4。图上显示的趋势很清楚,不管是左图内还是右图内,不同颜色的特征值曲线几乎是平行的,即随着批量大小的增加,hessian 的谱也随之增加,大批量训练的顶部特征值比小批量训练的顶部特征值相对较大。从较早的 Hochreiter 和 Schmidhuber 等人的论文《FLAT MINIMA》到最近的 Chaudhari《Entropy-SGD: Biasing Gradient Descent Into Wide Valleys》和 Keskar《On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima》,我们知道,模型如果收敛到一个比较尖锐的极小值——或者如我们在前一篇文章中看到的,更深的极小值——模型会缺乏泛化能力。
而模型收敛解的锐度就可以由 hessian 的谱得出,这一点从 hessian 的定义就能够明白。因此,我们在上图看到的随着批量增大而增大的 hessian 谱在一定程度上解释了为什么大批量训练的模型泛化能力更差:因为训练处的模型收敛到了更尖锐的解。这一点与我们在上一篇文章中观察到的现象相符合,即当等高线图显示模型的极小值更深,其对应的误差率往往也越高。
当然,Neyshabur 等人的文章《Exploring Generalization in Deep Learning》也指出,锐度本身可能并不足以决定泛化能力,即锐度并不是影响泛化能力的唯一原因。因此,研究损失函数在模型收敛点附近的邻域中的行为将会提供更多信息。
这也是作者在本篇文章中所做的研究,他们绘制了当模型参数沿主导特征向量扰动时损失如何变化。
图 4:对 C1 模型沿着 Hessian 的主要特征向量 v1 进行扰动时损失的变化(log-scale)
[图片来源:YAO, Z.; GHOLAMI, A.; LEI, Q.; KEUTZER, K.; MAHONEY, M. W. (2018). Hessian-based Analysis of Large Batch Training and Robustness to Adversaries. NIPS.]
这里 epsilon 是一个标量,它扰乱了由 v1 表示的主要特征向量的模型参数,其数值表示扰动的程度。我们首先可以看到随着批量的增加,训练损失和测试损失的曲度都开始增加,更重要的是,当批量增加,测试损失的曲率开始远大于训练。这代表了训练中的不一致性,因此即便大批量模型训练的损失很小,其在测试集上的损失仍然会很大。
文章提出并解答的第二个问题是:
- 稳健优化(robust optimization)和大批量培训之间的联系是什么?同样,批量大小如何影响模型对敌对扰动(adversarial perturbation)的稳健性?
也即是说文章的研究重心从批量大小与模型一般意义下泛化能力的关系,转移到了批量大小与面对敌对攻击时的稳健性的关系。作者的实验结果显示与小批量训练的模型相比,以大批量训练的模型明显更容易败于对抗性攻击。
图 5:在训练期间,hessian 的主要特征值的变化和总梯度
[图片来源:YAO, Z.; GHOLAMI, A.; LEI, Q.; KEUTZER, K.; MAHONEY, M. W. (2018). Hessian-based Analysis of Large Batch Training and Robustness to Adversaries. NIPS.]
我们可以看到随着批量的增加,蓝色曲线所代表的主要特征值是被吸引到了更大的值去的。特别值得注意的是,总梯度值和 Hessian 谱表明大批量不会在鞍点处「卡住」,但是它会在求解过程中被高曲率的区域所吸引。作者还对使用稳健优化(robust optimization)训练方法的模型进行了可视化,证明对抗性训练可以导致模型收敛到 Hessian 谱较小的区域。
至于为什么此前许多学者认为锐度本身不能决定模型泛化能力而我们却在这里看到锐度对模型的泛化能力有如此大的影响?作者在下文中有提到他们并没有证明 hessian 谱与模型的稳健性是有直接联系的,笔者认为这两者并不矛盾,假如 hessian 谱与模型泛化能力有联系并且作者同样进行了对解的尺度(如 norm、margin)的测试分析,我们也许会发现对模型更强的影响。
这里由于没有对比研究,我们并不能得出任何这方面的结论。并且本文主要是在 MNIST 等简单的数据集上使用简单的神经网络结构进行分析的,也许其他可能的影响相对更稳健,不容易遭到扰动。假如 hessian 谱与模型泛化能力实际上是没有直接关系的——在许多情况下应该就是这样的——对于我们观察到的这种相关现象,作者认为一个可能的解释是大批量训练的模型得到的决策边界不太稳定,因此对于小的对抗扰动,模型会被愚弄。但是这种现象的原因本质上是不确定的,这也许会成为一个新的研究方向。
本篇文章相对来说更晦涩一点,一方面因为这篇文章计算的内容很多,另一方面是因为图表的位置和其附近的文字关联不大,读者往往需要前后翻找,有些混乱。但这篇文章仍然是非常值得一读的,内容翔实、严谨。文章主要计算的是 hessian spectrum,由于这个涉及到二阶导数的计算,在实际应用中应该比较难以借鉴,我们主要是参考作者所传递的观点。
3. Interpreting neural network judgments via minimal, stable, and symbolic corrections
- 链接:https://arxiv.org/abs/1802.07384
- 作者个人主页:http://people.csail.mit.edu/xzhang/
- 作者 Xin Zhang,麻省理工学院 CSAIL 组的博士后研究员。Xin Zhang 在 Georgia Tech 取得了博士学位。他的研究主要与编程语言和软件工程相关。
本篇文章也跟神经网络可视化有关,不过却是从另一个角度:对一个简单二分类问题来说,如果分类结果是 0,那么我们对输入数据做什么修改,可以让其分类结果变为 1?这不禁让人想到神经网络可视化中,maximize activation 的做法。这篇文章中比较新颖的地方是对这种修改进行的限定,即文章题目中的 minimal,stable,symbolic。
- Minimal 要求修改后的输入数据与原输入数据尽可能的相似,作者借鉴了正则化手段,通过定义一个 L1 范数δ来衡量两次输入之间的距离就可以简单的达到这个目的。这个条件显然是符合直觉的——我们希望对原数据进行尽可能少的修改就达到一个满意的结果。
- Stable 则是通过一个超参数 e 来定义的。Stable 的主要目的是保证所提出的修改是有一定自由度的,只要修改后的输入数据是在这附近,都应该能够达到改变分类结果的效果。作者定义其为,假如对任意δ小于 e 的输入,都能保证其分类结果为 1,则称δ是 e-stable 的。
- 这两个定义又可以从单个输入数据自然的扩展到一片输入空间,从而符合 symbolic 的定义。三个条件的定义环环相扣,设计的十分巧妙。
文章给出了几个实验结果,见图 6,红叉表示原始预测结果,蓝色三角形表示符号校正(即,该区域内的所有点都能够改变分类结果)。图 6(a)是针对预测申请人能否获得贷款的预测问题,算法生成了一系列符号校正,或者说一种关系,来建议对 DTI 和利率的修改。
图 6(b)针对预测是否可以通过基于实例的静态和动态特性的求解器有效地求解一阶定理的问题。这里给出的建议非常直观:要么减小问题大小(通过减少平均子句长度)或提供部分解决方案(通过添加单元子句)来减小问题的复杂性。最后,图 6(c)显示了如何将线条添加到图形中,以便网络将其识别为规范的猫图。红线表示原始输入,蓝色框表示符号校正,绿线表示其中的一个具体校正。
前两个例子仅涉及到 2 个特征,第三个例子设计到 8 个特征(每个顶点的坐标),并且属于计算机视觉的问题,虽然这个任务仍然属于尝试性实验(toy experiments),但展现了算法应用于高维校正的一定可能性。
图 6:对不同的问题所生成的符号解释
[图片来源:Zhang, X.; Solar-Lezama, A.; Singh, R. (2018). Interpreting Neural Network Judgments via Minimal, Stable, and Symbolic Corrections. NIPS.]
本文随后的大部分研究主要集中在计算算法,从结果来看,该算法的复杂度大致是线性的,运算速度比较快。笔者认为几个相对难以实现的设计在于:
- 可以修改的特征需要预先确定,对于图像数据来说,这一点比较困难。但将所有的特征都设定为可以修改又不现实,我们也许甚至不能得到合理的图像或过于复杂过于难以理解的修改法则。
- 当训练数据很少或者不同类别之间重合很严重时,e-stable 的条件可能很难满足。即每个 cluster 的规模可能都很小。
- 算法主要针对的是对决策边界的探索,回归模型显然是不满足这一点的。当然提出这一点未免有些吹毛求疵。
本篇文章的创新性很强,十分值得一读,如果能够在复杂的应用上表现良好,笔者认为在工业界落地的可能性很强。主要是因为对于工业产品来讲,产品设计的目的都是更好的性能表现,并且更改产品参数并不困难。举例来说,假如神经网络被用于预测一个水站的供水效率,我们总是能够准确的预测下午五点水站供水不足,从准确率来讲神经网络的表现是优秀的,但从产品角度来讲这样一个模型并不能帮助我们改进供水效率。假如我们知道在下午五点水站供水不足,并且如果增加压强我们能够达到满意的供水效率,那么这个产品显然是更成功的。
3. 小结
总的来说,随着学界对神经网络的研究,我们似乎越来越能够理解神经网络的工作原理。以上三篇文章虽然都没有提出任何确定性结论,但至少给出了我们在设计神经网络时能够改进的方向。使用 shortcut connection,使用 robust training,在训练完成后生成一系列可以改变分类结果的修改规则来理解生成的决策边界,似乎是我们可以从以上三篇文章中借鉴的做法。
但回头想想,作为一个从业者,利用自己所掌握的先验知识来尽可能地简化问题,然后用一个简单的神经网络来解决它,是不是也是一种思路?至少在业界,许多问题是基于特定领域的,我们也不可能获取像 ImageNet 那样规模的数据来训练大规模的神经网络;但同时也是在业界,对神经网络的期待是无需对原始数据进行任何处理或只进行尽可能少的处理,就能够解决问题。这当然也是合理的——对专家知识(expert knowledge)的依赖不应过度——但或许我们也可以反思一下,在这两者之间寻找一个平衡。