聊聊神经网络中的正则化(2)
正则化的方法,可以分为显式的和隐式的,前者的目的就是提高泛化能力,包括dropout,drop link,权重共享,数据增强,L1和L2惩罚项。结合泛化能力的六个解释,Drop Connect 和 Dropout 相似的地方在于它涉及在模型中引入稀疏性,不同之处在于drop connect引入的是权重的稀疏性而不是层的输出向量的稀疏性,权重共享和数据增强对应的忽视无关的细节,L1正则是增加模型的稀疏性,L2正则关注的是让模型在每一层生成的特征更加真实准确。
而隐式的正则化,则是其出现的目的不是为了正则化,而正则化的效果是其副产品,包括early stopping,批量标准化,随机梯度下降。另一种分类的方式是训练时的正则化和模型构建时的正则化。前者只用在模型训练时,而后者在训练和模型实际运行时都会出现。前者包括随机梯度下降,early stopping dropout和drop link,这些技巧都不会用在训练好的模型中。
最后让我们看一篇17年ICLR上的论文,Understanding Deep Learning Requires Re-thinking Generalization,这篇文章的作者想看看深度学习为什么具有超过之前方法的泛化能力,为了定义清楚这个问题,他观察了机器视觉领域成熟的网络,例如ImageNet和AlexNet,在不改变模型的超参数,优化器和网络结构和大小时,在部分/全部随机标签的CIFAR 10数据集,以及加入了高斯噪音的图片上的表现。如果在随机生成的分类标签上,模型表现的也很好,这对于模型的泛化能力意味着什么了?
先让我们看看文中给出的数据,A图指出,不管怎样在模型中怎样引入随机性,在图像中加入随机噪音,对像素进行随机洗牌,还是用随机生成的像素点组成的图片,哪怕图像的标签都是随机生成的,模型也能让训练集上的误差达到最小值。这很反直觉,在上述的情况下,人脑是学不到什么的,但深度学习却可以。这说明神经网络的有效容量是足够大的,甚至足够使用暴力记忆的方式记录整个数据集。但这并不是我们想要的。而在部分随机标签的情况下,模型用暴力记忆的方式记住了数据点,而对正确标注的数据进行了正常的特征提取。
接下来B图讨论的是在不同比例的label是随机产生的情况下模型训练所需的时间,这里得出的结论是即便使用越来越多的随机标签,进行优化仍然是很容易的。实际上,与使用真实标签进行训练相比,随机标签的训练时间仅仅增长了一个小的常数因子。而且不管模型本身的结构有多么复杂,在随机标签的数据下训练起来时间都不会增长太多。这里多层感知机的训练时间增长要高于AlexNet,这点令我意外,在待优化的参数相差不多的前提下,可能的原因我猜测是CNN中待优化的参数相对均匀的原因。
而C图展示了在是不同比例的随机标签下,不同的网络结构在测试集下的表现,这里选择的都是在训练集上错误为0的网络结构。可以看出深度学习网络即使在拟合随机数据时,仍能保持相对良好的泛化能力。这意味着标签随机化仅仅是一种数据转换,学习问题的其他性质仍保持不变。当全部的标签都是随机生成的时候,那么理论的泛化误差就是0.9(这里是十分类问题,随机猜有10%的机会是对的),但只要部分的标签不是随机生成的时候,那越复杂,容量越大的模型表现的泛化能力就越好。在40%的标签是随机生成的时候,如果网络完全没有暴力的对数据点的记忆,那么模型的最好表现应该是0.4×0.9+0.6×0.1即0.42,任何比这个好的表现都说明正则化的方法没有完全的阻止神经网络去死记硬背,但我们看到即使最好的模型,其训练时误差都能到0。但越先进的模型,在避免模型brute force式的记忆上做的越好,从而使测试集上误差更接近理论最优值。
这里列出了不同的模型在不同的参数下的泛化能力,可以看出上文提到的drop link和权重衰减,标准正则化(BN)的效果,但没有列出我更关注数据,即在部分数据为随机标签时模型的泛化能力。
这篇文章的好处是其实验模式是可以很容易去重复的,你可以在Minst数据集上去重复类似的实验,还可以看看在加入了不同的正则化策略后,网络在部分随机标签的数据上表现的怎么样。我还没有做实验,但预测相比于原始的2个隐藏层的CNN,加入drop out或drop link的模型泛化效果最好,这时可以让那些拟合到随机生成的数据的神经元消失。而加入L2正则项的模型泛化能力最差,原因是这时小的权重还是会引入错误,从而干扰特征的提取。不过重复一遍,以上的不过是个人的脑洞,我是通过在脑中模拟人的大脑在这种情况下怎么表现的更好来思考这个问题的,这样一种自我中心的视角,并不适合理解深度神经网络。但这就是人的具身认知的极限了。
许多支撑神经网络有效性的依据都建立在这样一个猜想之上:“自然”数据往往存在于多维空间中一个非常窄的流形中。然而,随机数据并不具备这样的趋势。但很显然,这篇理论性的文章证伪了这个看法。我们并不理解是什么让神经网络具有好的泛化能力。而理解是什么让神经网络具有泛化能力,不止能让模型更具有可解释性,还能为构建更鲁棒的模型提供指导方向和设计原则。这么看来,现在的深度学习,更类似古代的炼金术而不是化学,还缺少一个统一的普世的理论架构。
最后借着上面文章的图总结下这篇小文,通过从不同角度观察泛化能力,将深度学习中常用的分成了显式和隐式两类。下图可以看看early stopping的影响,在没有批量正则化的时候,early stopping并没有多少效果,等到满足条件(例如5次迭代时在训练集上准确度不明显变化)时,模型已经过拟合了,而再加入了批量正则化之后,early stopping可以发挥效果了,这说明正则化的方法要组合在一起用才会有效。
而下面的这幅图展示了权重衰减,数据增强和dropout三种方法在Inception网络上的效果,除了要看到使用正则化带来的泛化能力提高之外,还要看到正则化的技术能解释的泛化能力只是一部分,还要很多未知的因素,对神经网络的泛化能力做出了贡献。
这篇论文中只写了优化方法和网络结构对泛化能力的影响,而深度学习的另一个支柱优化函数的影响则没有提到。在分类任务上这点体现的不明显,但对于生成任务,改变的更多是优化的目标函数,比如各种GAN及其衍生模型,这时能很直觉的看出目标函数对泛化能力的影响。这与传统的观点是相悖的,传统的机器学习,能影响泛化能力的只是模型。但深度学习将数据和模型的界限变得模糊了,优化目标对泛化能力的影响这个问题该怎样变成一个可以量化的问题,类似这篇文章中做的,是一个值得思考的问题。可以在给(点击查看相关介绍文章)的带标注输入数据中加入不同程度的随机性,但如何量化生成模型的泛化可靠性了?这值得深入的思考。
更多阅读