四点分析深度学习 揭秘其大受欢迎原因
- 来源:fastai中文社区
- 2017/12/28 10:43:2334689
【中国安防展览网 企业关注】深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
动机
深度学习目前正在用于各种不同的应用。但是由于缺乏能够完全解答为什么它运作如此顺利的基本理论,经常受到批判。直到近,在神经信息处理系统大会(NIPS)上获得“Test-of-Time”奖的人将深度学习与炼金术相比较。
虽然解释深层学习如此完善的泛化理论是一个公开的问题,但在本文中,我们将讨论该领域中近的理论和经验上的进步,试图解释它。
深度学习的悖论
深度学习的一个“显而易见的悖论”是尽管它的容量大,数值不稳定,尖锐的极小值和非鲁棒性,它在实践中可以很好地推广。
在近的一篇论文“理解深度学习需要重新思考泛化”中,已经表明深度神经网络(DNN)有足够的能力来记忆具有随机标签的ImageNet和CIFAR10数据集。目前还不清楚为什么他们在真实数据上找到一般化的解决方案。
深层架构的另一个重要问题是数值不稳定性。基于导数的学习算法中的数值不稳定性通常称为爆炸或消失梯度。额外的困难源于潜在的正向模型的不稳定性。这就是说,一些网络的输出对于原始特征中的小扰动可能是不稳定的。在机器学习中,它被称为非鲁棒性。其中一个例子就是图1所示的敌对攻击。
几个研究基于,他们在深度学习泛化过程中发现的损失函数的小平坦性的论据,这是用随机梯度下降(SGD)方法发现的。不过,近有人表示,“ 尖锐的极小值可以普及深度网络”。更具体地说,平坦小值可以通过重新参数化而变成尖锐的小值而不改变泛化。因此,泛化不能仅仅由参数空间的鲁棒性来解释。
泛化理论
泛化理论的目标是解释和证明为什么以及如何提高训练集的准确性,提高了测试集的准确性。这两个精度之间的差异称为泛化误差或“泛化差距”。更严格的泛化差距可以被定义为给定学习算法A的数据集Sm上函数f的不可计算预期风险和可计算经验风险之间的差异A:
从本质上讲,如果我们设立界限的泛化差距是一个较小的值,将保证深度学习算法f在实践中推广好。基于模型的复杂性,稳定性,鲁棒性等,存在泛化差距的多重理论界限。
模型复杂度的两个度量是Rademacher complexity和Vapnik-Chervonenkis(VC)dimension。不幸的是,深度学习函数f基于Radamacher复杂性的界限泛化差距随着DNN的深度成倍增长。这与实际观察相矛盾的是,更深的网络更适合于训练数据并实现较小的经验误差。同样,基于VC维度的界限泛化差距在可训练参数的数量上呈线性增长,不能说明深度学习的实际观测值。换句话说,这两个边界太保守了。
K Kawaguchi,LP Kaelbling和Y Bengio近提出了一个更有用的方法。与其他人不同,他们认为通常深度学习模型是使用训练验证范式进行训练的。他们不使用训练误差来限制不可计算的期望风险,而是使用验证误差。在这个观点中,他们提出了以下直觉:为什么深度学习在实践中得到了很好的效果:“我们可以很好地推广,因为我们可以通过带有验证误差的模型搜索获得一个好的模型”。并证明对于任意δ > 0 的下面的界限,概率至少为1 - δ:
重要的是| Fval | 是我们在决策中使用验证数据集来选择终模型的次数,m是验证集大小。这种界限解释了为什么深度学习能够很好地普及,尽管可能存在不稳定性,非鲁棒性和尖锐的极小值。还有一个悬而未决的问题仍然是为什么我们能够找到导致低验证误差的体系结构和参数。通常,架构受现实世界观察的启发,使用SGD将搜索好的参数,我们将在下面讨论。
随机梯度下降
SGD是现代深度学习领域的一个内在组成部分,显然是其泛化背后的主要原因之一。所以我们接下来讨论它的泛化属性。
在近的一篇论文“ 随机梯度下降的数据相关稳定性 ”中,作者证明了在一些额外的损失条件下,SGD是平均稳定算法。这些条件在常用的损失函数中得以实现,例如在具有S形激活的神经网络中的逻辑/softmax损失。在这种情况下,稳定性意味着SGD对训练集中的小扰动有多敏感。他们进一步证明了SGD在诸如深度神经网络等非凸函数中存在数据依赖于平均值的泛化差距:
其中m是训练集大小,T训练步数,γ表示初始点曲率如何影响稳定性。这导致了至少两个结论。首先,围绕初始点的目标函数的曲率具有决定性的影响。从较低风险区域的一个点开始,应该产生较高的稳定性,即更快的泛化。在实践中,它可以是一个很好的选择初始化参数的预筛选策略。其次,考虑到全部通过,即m = O(T),我们简化到O(1/m)的界限。这表明,训练集越大,越小的泛化差距。
有趣的是,有一些调查学习曲线的研究。他们中的大多数显示出幂律泛化误差,缩放为ε(M) 〜mᵝ,指数β = -0.5或-1。这也与前面讨论的论文一致。但是,要提到百度的大规模研究能够凭经验观察这个幂律(见图2)。然而,实际应用中的指数β在-0.07到-0.35之间。理论上仍然需要解释。
此外,还有理论和实证证据表明批量大小对SGD泛化的影响。直观地说,小批量训练会在梯度上引入噪音,这种噪音会使SGD远离小的极小值,从而增强泛化能力。在谷歌近的一篇文章中显示,佳批量大小与学习速率和训练集大小成正比。或者换句话说,“不要使学习速度下降,增加批量”。对于动量为Bopt〜1 /(1 - m)的SGD,也得到类似的比例缩放规则,其中Bopt是佳批量大小,m是动量。或者,所有的结论都可以用下面的公式来总结:
其中ε是学习率,N是训练集大小,m是动量,B是批量大小。
结论
在过去的几年里,对深度学习矛盾效应背后的基本理论的兴趣日益增长。虽然现在还有一些开放的研究问题,但是现代的深度学习还远没有到被称为炼金术的地步。在这篇文章中,我们讨论了关于这个问题的一般化的观点,从而得出了一些实际的结论:
在较小弯曲的区域选择初始化参数,降低风险。曲率可以通过Hessian向量乘法来地估计。重新调整批量大小,当变化动量的时候。不要使学习速度下降,增加批量。(原标题:现代深度学习理论,为什么这么好用?)