当前位置: 首页 > 科技观察

浅谈深度学习的泛化能力

时间:2023-03-17 16:27:34 科技观察

1.DNN泛化能力的问题论文主要讨论为什么过参数化的神经网络模型仍然可以有很好的泛化能力?即不是简单的记忆训练集,而是从训练集中总结出一个通用的规则,使其适应测试集(泛化能力)。以经典的决策树模型为例,树模型在学习数据集的一般规律时:好的情况,如果树先分裂节点,刚好可以很好地区分不同标签的样本,深度小,相应地,每片叶子上的样本数量足够多(即统计规律的数据量基础比较大),那么得到的规律更容易推广到其他数据。(即:拟合度好,泛化能力强)。另一种更坏的情况,如果树不能学习到一些通用规则,为了学习这个数据集,树会越来越深,每个叶子节点可能对应少量的样本(较少的数据带来的统计信息可能只是噪声),最后,死记硬背所有数据(即:过度拟合而不泛化)。我们可以看到太深的树模型容易过拟合。那么一个过参数化的神经网络是如何做到好的泛化的呢?2.DNN泛化能力强的原因本文从一个简单和一般的角度来解释——在神经网络的梯度下降优化过程中,探究泛化能力强的原因:我们总结了梯度相干理论:gradientsfrom不同的样本会产生连贯性,这就是神经网络能够具有良好泛化能力的原因。当不同样本的梯度在训练过程中对齐良好时,即当它们一致时,梯度下降是稳定的,可以快速收敛,并且得到的模型可以很好地泛化。否则,如果样本太少或训练时间太长,可能无法泛化。基于这个理论,我们可以做出如下解释。2.1宽神经网络的泛化一个更宽的神经网络模型具有很好的泛化能力。这是因为更宽的网络有更多的子网络,这些子网络比小网络更容易产生梯度相干性,从而具有更好的泛化能力。换句话说,梯度下降是一种优先考虑泛化梯度(一致性)的特征选择器,更广泛的网络可能仅仅因为它们具有更多特征而具有更好的特征。原始论文:泛化和宽度。Neyshabur等人。[2018b]发现更广泛的网络概括得更好。我们现在可以解释一下吗?直观地,更宽的网络在任何给定级别都有更多的子网络,因此在更宽的网络中具有最大一致性的子网络可能比它在更薄的网络中的对应子网络更一致,因此泛化得更好。换句话说,因为——正如第10节中所讨论的——梯度下降是一种特征选择器,它优先考虑泛化良好(连贯)的特征,更广泛的网络可能具有更好的特征,仅仅是因为它们有更多的特征。关于这一点,另见LotteryTicketHypothesis[FrankleandCarbin,2018]论文链接:https://github.com/aialgorithm/Blog但个人觉得这还是需要区分输入层的width/hidden下层网络。特别是对于数据挖掘任务的输入层,由于输入特征通常是人工设计的,需要考虑接下来的特征选择(即减小输入层的宽度),否则直接输入的特征噪声不会干扰与梯度相干。.2.2深度神经网络的泛化能力网络越深,梯度相干现象被放大,泛化能力越好。在深度模型中,具有相干梯度(W6)的特征与具有不相干梯度(W1)的特征之间的相对差异在训练期间呈指数放大,因为层间反馈加强了相干梯度。因此,更深的网络更喜欢相干梯度,从而产生更好的泛化能力。2.3Early-stopping(early-stopping)通过early-stopping我们可以减少非相干梯度的过度影响,提高泛化能力。在训练时,一些简单样本比其他样本(硬样本)更早被拟合。在训练初期,这些简单样本的相干梯度占主导地位,很容易很好地拟合。在训练后期,平均梯度g(wt)被难样本的非相干梯度所支配,导致泛化能力差,此时需要earlystopping。(注:简单样本就是那些在数据集中有很多共同梯度的样本。为此,大多数梯度对它有利,收敛更快。)2.4全梯度下降VS学习率我们发现全梯度下降下降也可以很好地泛化。另外,仔细的实验??表明,随机梯度下降并不一定有更好的泛化能力,但这也不排除随机梯度更有可能跳出局部极小值,起到正则化作用。根据我们的理论,有限学习率和小批量随机性不是泛化所必需的我们认为较低的学习率可能不会减少泛化误差,因为较低的学习率意味着更多的迭代(相反与早期停止相同)。假设学习率足够小,随着训练的进行,泛化差距不会减小。这是从训练的迭代稳定性分析得出的结论:再增加40步,稳定性只会降低。如果在实际设置中违反了这一点,就会指向理论的一个有趣的局限性2.5L2,L1正则化目标函数添加L2,L1正则化,相应的梯度计算,需要添加到L1正则化项的梯度为sign(w),L2梯度为w。以L2正则化为例,对应的梯度W(i+1)更新公式为:零值(L1容易得到稀疏解,L2容易得到接近0的平滑解),消除弱梯度方向的影响。只有在梯度方向一致的情况下,参数才能相对脱离“背景力”,根据数据完成梯度更新。2.6AdvancedGradientDescentAlgorithmsMomentum、Adam等梯度下降算法Momentum、Adam等梯度下降算法,参数W更新方向不仅由当前梯度决定,还与之前累积的梯度方向有关(即保留累积相干梯度作用)。这样就可以加快参数中那些梯度方向变化不大的维度的更新,而减小梯度方向变化较大的维度的更新幅度,从而产生加速收敛和减少振荡的效果。为了抑制弱梯度方向的梯度下降,我们可以通过优化批量梯度下降算法来抑制弱梯度方向的梯度更新,进一步提高泛化能力。例如,我们可以使用winsorized梯度下降来排除梯度异常值,然后取平均值。或者取梯度的中位数而不是均值来减少梯度异常值的影响。总结的最后,有两句话。对于深度学习的理论,有兴趣的可以阅读论文中提到的相关研究。