本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。今天我想和大家分享的是深度神经网络是如何工作的,以及它们与“传统”机器学习模型有何不同。我的计划是这样的:先简单想想如何把问题框定为一个分类;然后回顾偏差-方差分解,并在偏差-方差权衡的背景下,在VC维度和非参数上进行探索;研究一些关于插值神经网络和双下降的文献;在文末做一个很简单的实验,用图形直观的解释为什么会出现双下降现象。1正式设置机器学习问题为了好玩,让我们先设置一个问题。首先从数据开始。假设我们已经标记了数据,即输入数据x(比如一张图片)和满足Px,y分布的标签y。这样我们得到:分布Px,y是固定且未知的。对于i=1...N,样品可用,.数学分析通常假设样本是独立的。一般来说,我们需要假设标签y和输入x之间存在y=函数关系,即标签是准确无歧义的,但情况并非总是如此。我们想要“训练”的是某个函数f:x?y,或者更一般地说,是对条件分布P(y|x)的估计。我们的候选函数来自参数集F={fθ|θ∈Θ},其中θ代表参数。为了实现我们的目标,我们指定了一个损失函数(或风险函数),并且在概念上我们希望最小化预期损失。第一次尝试通常是尽量减少经验风险或经验损失。如果我们的损失函数是负对数似然,则最小化最大值意味着计算最大相似性估计。偏差方差分解和偏差方差平衡简单简介。诀窍在于我们需要意识到我们的训练数据本身是从n倍产品分布中抽取的随机变量,并且我们训练的模型f取决于D,用表示。通过巧妙地添加和利用(x,y)和D的独立性,我们可以将预测的期望平方误差分解为:最后一项噪声不依赖于我们的模型。现在要为我们的预测获得良好的预期平方误差,我们必须注意模型输出的偏差(第一项)和方差(第二项)之和很小。请注意,这里的所有项都是非负的。对于二元分类器的预期精度,存在类似但更复杂的分解,但其他损失函数通常难以分解,尽管我们可以想象模型选择的工作方式类似。因为使偏差/方差等于或非常接近于0相对容易,所以这种分解允许我们在偏差和方差之间进行权衡:通过使用D中每个数据点的样本均值作为估计,bias可以非常小,并且可以巧妙地给出正则性论证,假设函数是Lipschitz函数或至少是一致连续的。这是极端的过度拟合。例如,通过预测一个不依赖于D的函数,我们可以让方差为0,这就是极度欠拟合。请注意,均方误差的偏差方差分解是一个根据数学定理(或至少是引理)成立的方程,因此具有普遍适用性且不需要任何条件。2摆脱僵化的自由,带来自由的结构在某种程度上,从上述极端条件到更温和的条件的转变也表明了我们在实践中可以做些什么。增加候选函数集的一种方法是将一组非常有限的函数作为候选函数,然后有意义地扩展候选函数的空间以获得(假设嵌套的)序列F0?F1?....关键思想是,进一步的研究可以让模型更好地拟合数据,我们需要知道什么时候停止这种深化。Vapnik和Chervonenkis的结构风险最小化原则就是这样做的,尽管它没有使用偏差方差分解,而是使用D的预期损失(风险)和观察到的损失(经验风险)的界限,以及对训练数据集大小N和函数集或其VC维项的大小。这里的典型情况是想要N≥VC-dim样本,但可能有N≤20VC-dim样本。但是请注意,此处的参数数量不是标准的一部分(但可能会影响VC维度)。最后,Akaike的信息性标准等传统标准试图告诉您应该在参数上“投入”多少才能实现较低的负对数似然。但是Bishop在他的Introduction中发现,这些方法并不是很有效。非参数估计:正则化经典非参数估计从另一个极端开始。如果我们取一些函数空间,比如具有弱导数的索伯列夫函数空间(不管用什么测度,不管是x的分布还是包括输入的勒贝格测度),我们都可以匹配任意有限样本的样本均值D上的每个点,从而可以得到0点状态偏差,但最小化经验风险是病态的,并且有无穷多个解。接下来要做的是正则化。可能最著名的例子是添加一个导致Tikhonov正则化的范数项,所以我们的损失看起来像这样。如果我们从偏差-方差的角度来看,我们可以平衡偏差(当λ→0时没有偏差,但会导致病态)和方差(当λ→∞时,我们在。我们不希望方差为0,因为我们的正则化项只是一个半范数)。当然,GraceWahba对正则化回归的研究与保持良好的bias-variance平衡特别相关,尤其是如何找到合适的lambda值。上一节中的ansatz函数可以和嵌套的SpaceFi链接起来。因此,权重递增序列中范数递减序列为我们提供了嵌套的Ansatz空间。许多流行的正则化回归方法(例如Lasso)都适合这种类型的框架。赞美VC世界让我们回到VC世界,更正式一点,以提高我们的直觉。关键概率界限是为了准确性(或0-1的风险)让我们分析一下。外面说“概率大于或等于1?η”(我们要更精确),这里我们觉得概率η太小了,也就是说我们只有一个概率界,而不是一个“差不多”一定”的保证。内部基本上说全概率分布的准确度非常接近训练集的准确度,这意味着当N变得非常大时,我们对差异趋于零有一个精确的界限。从表面上看,这告诉我们一些关于风险或准确性的信息,但它对模型有什么说明呢?在我看来,关键信息是我们的模型非常严格,我们可以看到测试集上发生的一切(或者更准确地说,在完整Px,y分布上发生的一切)已经在训练集上发生了.除了贝叶斯。在贝叶斯设置中,正则化可以解释为最大后验(MAP)估计,或者-如果我们不厌其烦地定义先验-我们也可以估计所有f∈FMake点。3关于深度学习,这告诉我们什么?当我们将model.parameters()(这里我使用PyTorch)传递给优化器时,深度学习看起来就像是参数化的。但事实并非如此!这种正则化方法似乎是深度学习工作的理论框架——有时人们对此知之甚少。我们的模型足够大,可以说是“道德上”非参数化的,而且我们所做的大部分事情(例如增强、范数层和dropout)都是正则化,尽管我们还没有完全理解它们。这也是M.Belkin等人写的《协调现代机器学习实践和偏差-方差权衡》(Reconcilingmodernmachinelearningpracticeandthebias-variancetrade-off)的主题。而他们早期研究的主题,即泛化性能的关键是由某个函数空间决定的范数衡量一个函数的规律性或平滑性。我们有必要仔细看看M.Belkin等人对双衰退现象的描述。(我认为这是第一次):这里有几点需要注意:M.Belkinetal.(modern)”等限定词用引号括起来。“modern”条件是一种非常非参数化的学习,有一种正则化,我们还需要更深入地理解。bias-variancethinking似乎仍然完美适用于多参数设置,但非参数回归可能是比“容量受限”候选集更好的参考框架。对双重下降现象的一般理解似乎是基于P.Nakkiran等人的文章:《双重下降》(DeepDoubleDescent),这证明了这篇论文的优秀,也证明了OpenAI可以将这些主题介绍给更广泛的受众。他们用更真实的网络进行了系统的实验(M.Belkin等人引用了更浅的网络)。对我来说重要的一点是,在标签损坏的两个实验条件下,双底现象有一个“颠簸”,他们报告说在使用干净标签的实验中,结果很多更顺畅,不那么“颠簸”。他们提供了一张图表,显示在固定数量的时期内将修改后的ResNet18训练到带有损坏标签的CIFAR10时的测试错误。Modification的意思是通道数减少到原来的1-k(k在64到1的范围内)(意思是他们会开始实验原来ResNet18的64分之一,逐渐增加,最后达到原来的号码)。标签损坏发生在数据集中(在某个时期,而不是每个时期),并且15%的标签被切换到随机错误的类别。这被解释为严重的用词不当。4VC理论对拟合带有噪声标签的模型有何影响?通过上面的讨论,我们了解到,当一个模型处于VC世界的有用约束中时(例如,当小模型处于“传统”状态时),如果训练数据D来自相同的分布Px,y作为原始数据,测试集上的测试精度(可能)接近训练精度。换句话说,这个条件意味着我们假设Px,y具有相同程度的损坏(和种类的损坏)。但这意味着如果模型学习了,并且学会了不要被损坏的训练数据分心太多,也就是说,在训练数据上,正确的标签会排挤损坏的标签。5特征和学习使深度学习的直觉变得困难的原因之一是Ansatz场的适应性。我的意思是,我们没有固定的特征提取器(由内核机器中使用的内核家族手动构建并给出)来将学习应用于特征。通常,我们将最后一层的输入视为特征(通过word2vet式损失、原型网络、基准无监督学习等学习的向量表示),或者我们可以在MLP分类器之前的卷积层末尾拆分体积头部积累网络。传统的方法是将学习到的分类器放在固定的特征提取器上,但是E.Hoffer等人。有相反的想法。他们甚至建议修复分类器,即只训练特征提取器。所以我们可能会尝试通过假装提取特征来简化我们的直觉。在P.Nakkiran等人的标题图像实验中,当使用t-SNE等降维机制可视化从无噪声数据中学习到的特征时,添加标签噪声相当于向对应于每个类的点的斑点添加噪声.考虑到这一点,我们可以进行一个类似的实验,这个实验比M.Belkin等人的人工数据实验还要简单,即:理解深度学习。6关于标签噪声、容量、双下降和实验测试误差的直觉除了统计之外:以下推测一些可能的场景,通过想象我们可以在类似于P.Nakkiran等人描述的原型网络中获得。同样的现象,而容量是用我们能拥有的原型数量来表示的:在最左边的宽度(参数)值1到5附近,我们拥有的原型比类少,模型拟合度不高(欠拟合),因为Models不能代表所有类。在width5附近,我们有10个(或更多)原型,但是,在每个原型的训练过程中,损坏标签被挤出,因此这些损坏标签没有效果。在width5到10的范围内,原型收集了损坏的标签。由于每个原型都有一个在推理阶段使用的“影响范围”,因此在相当大的空间中,破坏性原型与测试非常相关。在宽度10之外,我们添加了更多基元。原型靠得更近,损坏的标签原型在推理阶段也被“挤出”,因此它们的“影响范围”变小(因为同一类有5个未损坏原型中有3个的概率更大)。这对偏差方差分解意味着什么?回想一下,分解在空间上是逐点的,并且像以前一样受到各种训练数据集的方差和偏差的影响。假设你只有两个类,那么prediction和label不是0就是1。然后原型收集损坏的标签,这会产生偏差(因为你会以一定的概率预测错误)和方差(因为预测错误的区域取决于在哪些标签上被破坏,即取决于我们在D)中的哪个数据集,并使错误预测的区域更小,从而减少方差和偏差。按照这种直觉,提前停止的作用是检测模型何时开始收集损坏的标签。所以看起来现代神经网络本质上是非参数的,它们的工作方式依赖于各种正则化。为了使用M.Belkin等人的表述,我们希望更好地了解我们对各种技术如何对某些功能空间的规范做出贡献的理解程度。似乎很难得出“传统”统计数据表明现代学习不起作用的结论。《高维无脊最小二乘插值中的惊喜》(高维无脊最小二乘插值的惊喜),作者:Hastie等人。提供了对最小二乘作为建模问题的非常全面的分析,这也可能为深度学习现象提供直觉。在插值条件下挤出错误标记的数据我们可以对插值条件进行非常简单的模拟。让我们考虑一个二进制分类问题,其中点由2d标准单位法线提取并沿水平轴移动±2,并从每个类分配中抽取25%的点。为了获得插值条件,我们使用具有尖峰的内核。为了获得分析上易于处理的质量并将其归一化为1,我们使用具有单位质量、在x=0处趋于无穷大并从原点衰减的内核:这意味着如果我们将每个类别的密度除以Expressed作为样本核的均值,即:假设不同类别的点不重叠(几乎肯定如此),我们可以根据更大的点对每个点进行分类,或者,如果我们想归一化每个点的概率通过密度得到概率。这给了我们一个插值解——在每个训练点,标签类具有无限密度,所以它被归类为属于这个类。那么标签错误发生了什么?标签错误可能导致损坏的训练点附近的某些区域被分配到错误的类别。但是,附近正确类别的点越多,错误分类的区域就越小。我们可以交互式地尝试一下。随着点数的增加,测试误差减小。这是什么意思?它说对于插值解决方案,标记良好的训练点在测试时排挤标记不佳的点。Adversarialexamples然而,随着数据的增加,当分类不好的区域和被随机采样数据点命中的概率减小时,随机采样点到下一个坏样本的距离也会减小。这意味着除了利用模型的连续性差(即输入的微小变化导致提取的特征发生巨大变化)之外,插值条件还使生成对抗性示例变得更容易,因为我们只需要特征的微小变化。特征噪声类似于标签噪声。但是,在不损坏标签的情况下,是否也会发生双倍下降?难道我们“只是”需要格外小心我们的训练数据吗?好吧,事情没那么简单。高维特征本质上可能比低维特征更嘈杂:想象一下高维空间中的两类线性分类(比如d)。我们有一个带有向量和偏差的分类器。给定一个输入,当x?v+b≥0时,类别为1;否则,类为0。如果我们事先知道输入是有界的,我们可以找到类原型并使用距离进行分类。但是后续线性分类器的d?1维零空间中的向量,比如我们可以在不改变结果的情况下添加到输入中的向量空间,可能对这个距离有很大贡献,使其成为A噪声的不错选择估计更相关的投影距离。如果我们想保持二维,我们可以扩大噪声维度。这将我们带到第二个实验。让我们绘制独立的随机二维点,“特征维度”的标准差为0.5,“噪声维度”的标准差为5。两个类相差±1。我们使用EM算法将每个维度的标准差为1的K个高斯函数的混合拟合到每个类。通过比较两个拟合密度来进行分类。我们使用5000个训练点和1000个测试点。如果我们用不同的K值运行200次,并记录准确率,我们可以看到双谷中的颠簸:这些实验的一个问题是:误差分布是倾斜的:我们在出现了2-3的范围,但误差在10左右,出现了一条尾巴。这条拟合不佳的曲线的尾部质量随分量K的数量而变化,似乎是中间K的平均误差颠簸的主要原因。7结论总之,我们学到了什么?在我看来,噪声需要在推理阶段而不是在训练阶段挤出特征,从中我们可以看出深度学习模型本质上是非参数的。这与KDE实验非常接近。即使我们有好的标签(你有,对吗?),深度学习中的高特征维数会导致特征中出现噪声,其行为类似于标签中的噪声。
