引入
- 虽然可以收集更多的训练数据来缓解过拟合,但是这个过程成本高,耗时多,或者完全超出我们的控制,短期之内,这种缓解过拟合的方法不可能做到。所以,我们就另寻他法,把重点放在正则化技术上(此处,我们已经假设拥有了尽可能多的高质量数据)
综上可知,收集更多训练数据是可以缓解过拟合,但是成本高,故而,我们除了限制模型的容量以外,还可以选择正则化,以缓解过拟合。
- 正则化是更细粒度的调整函数复杂性的工具,如果仅是单纯的降低/升高函数的阶数,有可能会显著降低/升高模型的复杂度,可能致使模型在过简单和过复杂中徘徊,eg:多项式回归:随着阶数d的增长,带有阶数d的项数迅速增长,数学描述:给定k个变量,阶数为d的项的个数为
,即
=(k-1+d)!/(d)!(k-1)! (组合公式得出来的)。因此就算是阶数上微小变化,eg:2 -> 3,也会显著增加我们模型的复杂性
碎知识点:
- 单项式(monomials):多项式对多变量数据的自然扩展(变量幂的乘积)
eg:
权重衰减(weight decay)(L2正则化)
- 基本原理:通过函数与零的距离来衡量函数的复杂度(因为所有函数f中,函数f=0(函数f=0意味着所有输入的输出都是值0)在某种意义上是最简单的)
- 原理实现过程如下:
通过线性函数f(x)=x中的权重向量(
)的某个范数度量该函数的复杂性,此处,我们采用
(平方范数)。
因为是解决过拟合的方法,所以一定是因为函数复杂度过高了,所以要降低函数复杂度,那就要保证函数的权重向量比较小。最常用的方法是:将权重向量范数作为惩罚项加到最小化损失的问题中即:原来的训练目标最小化训练标签上的预测损失=》最小化预测损失和惩罚项之和。这样如果权重向量增长的太大,学习算法可能会更集中于最小化权重范数
损失函数如下:
添加惩罚项之后:
使用L2范数而不是L1范数的原因:L2正则化线性模型构成岭回归(ridge regression)算法,L2范数对权重向量的大分量施加了巨大的惩罚,使得我们的学习算法偏向于在大量特征上均匀分布权重的模型,可能使得它们在对单个变量中的观测误差更为稳定 ;L1正则化线性回归(套索回归(lasso regression)),L1惩罚会导致模型将权重集中在一小部分特征上,而将其他权重清除为零(这称为特征选择(feature selection),在其他场景下需要)
L2正则化回归的小批量随机梯度下降更新如下:
使用而不是标准范数(欧几里得距离)的原因:
计算简单,使得导数的和=和的导数
:正则化常数(描述模型如何权衡额外惩罚项)(是超参数)
数值的意义:
=0,恢复了原来的损失函数;
>0,限制
的大小
除以2的原因:当对
/L时,2和1/2会抵消,梯度表达式(更新表达式)看起来既漂亮又简单
综上可知,L2正则化称为权重衰减的原因:不仅根据估计值于观测值之间的差异来更新w, 而且试图将w的大小缩小到0
仅考虑惩罚项,优化算法在训练的每一步都在衰减权重,权重衰减提供了一种连续的机制来调整函数的复杂度(同特征选择(L1正则化)相比)较小的值对应较少约束的w,较大的
值对w的约束更大
是否对相应的偏置进行惩罚在不同的实践中会有所不同,在神经网络的不同层中也会有所不同。通常,网络输出层的偏置项不会被正则化。
暂退法(Dropout)
引入
线性模型在面对更多特征而样本不足时,就会过拟合,但是,如果给出更多样本而不是特征,线性模型就不会过拟合。但是线性模型没有考虑特征之间的交互作用,对于每个特征,线性模型必须指定正的或负的权重,而忽略其他特征,其泛化的可靠性是有代价的。
偏差-方差权衡(bias-variance tradeoff):描述泛化性和灵活性之间的这种基本权衡。eg:线性模型有很高的偏差:它们只能表示一小类函数,但是这些模型的方差很低:(具体表现在:)它们在不同的随机数据样本上可以得出相似的结果。 深度神经网络位于偏差-方差谱的另一端:神经网络不局限于单独查看每个特征,而是学习特征之间的交互,eg:神经网络可能推断“尼日利亚”和“西联汇款”邮件一起出现在电子邮件中表示垃圾邮件,但单独出现则不表示垃圾邮件。
即使我们有比特征多得多的样本,深度神经网络也有可能过拟合,所以,我们单一地通过收集更多的数据未必能解决得了深度神经网络的过拟合问题。
2017年,一组研究人员通过在随机标记的图像上训练深度网络。这展示了神经网络的极大灵活性,因为人类很难将输入和随机标记的输出联系起来,但通过随机梯度下降优化的神经网络可以完美地标记训练集中的每一幅图像。想一想这意味着什么?假设标签是随机均匀分配的,并且有10个类别,那么分类器在测试数据上很难取得高于10%的精度,那么这里的泛化差距就高达90%,如此严重的过拟合。虽然有严重的过拟合问题,但是依然训练确实很好,故而我们将重点放在倾向于改进深度网络泛化性的工具上。
原理过程
经典泛化理论认为:“好”的预测模型:能在未知的数据上有很好的表现,为了缩小训练和测试性能之间的差距,应该以简单的模型为目标。
简单性:以较小维度的形式展现。《=》平滑性:函数不应该对其输入的微小变化敏感
1995年,克里斯托弗·毕晓普证明了具有输入噪声的训练《=》Tikhonov正则化,他用数学证实了“要求函数光滑”和“要求函数对输入的随机噪声具有适应性”之间的联系。
2014年,斯里瓦斯塔瓦等人将毕晓普的想法应用于网络的内部层,在训练过程中,在计算后续层之前向网络的每一层注入噪声(因为当训练一个有多层的深层网络时,注入噪声只会在输入-输出映射上增强平滑性)(这个想法被称为暂退法)
- 综上可知,暂退法内容:在前向传播过程中,计算每一内部层的同时注入噪声,从表面上看是在训练过程中丢弃(drop out)一些神经元。
标准暂退法还包含在整个训练过程的每一次迭代中,在计算下一层前将当前层中的一些节点置零
共适应性:神经网络过拟合与每一层都依赖于前一层激活值相关(在暂退法的原始论文提到的一个关于有性生殖的类比,作者认为暂退法会破坏共适应性,就像有性生殖会破坏共适应的基因一样)
- 实践中,注入噪声的实操:
法一:以一种五偏向(unbiased)的方式注入噪声(这样在固定住其他层时,每一层的期望值=没有噪音时的值)
法二(毕晓普的方法):在每次训练迭代中,将均值为0的分布~N(0,
)采样噪声添加到输入x,从而产生扰动点x' = x +
,预期是E[x']=x.
标准暂退法正则化原理全过程:
暂退法仅在训练期间使用