正则化方法

相关概念

点估计point estimator:
偏差bias:预测值和真实值之间的差异
方差variance:描述预测值作为随机变量的离散程度
泛化generalization:在先前未观察的输入上表现良好的能力
准确率accuracy:
错误率errorrate:该模型输出错误结果的样本比率,是0-1损失的期望
泛化误差:即测试误差
模型的容量capacity:拟合各种函数的能力
奥卡姆剃刀原则Occam‘s razor:在同样能够解释已有观测现象的假设中,我们应该选择最“简单”的那个。
过拟合overfitting:训练误差和测试误差之间差距较大
欠拟合underfitting:模型不能再训练集上获得足够低的误差
验证集:用来训练超参数
k-fold validation:
鲁棒性Robust:算法对数据变化的容忍度
正则化:对学习算法的修改,旨在减少泛化误差而不是训练误差。

参数范数惩罚(权重衰减weight decay)

正则化方法对目标函数添加一个参数惩罚项得到正则化后的目标函数:
$J (\theta ;x,y)=J(\theta ;x,y)+\alpha \Omega(\theta)$
其中α是权衡范数惩罚项和标准目标函数相对贡献的超参数。
神经网络中参数包括权重和偏置,通常只对权重进行惩罚而不对偏置做惩罚。每个权重会指定两个变量如何相互作用,而每个偏置仅控制一个变量,对偏置不进行正则化也不会导致较大方差,对其正则化反而会导致欠拟合。
$w$:应受范数惩罚影响的权重参数
$\theta$:所有参数

L1正则化

各个参数绝对值之和:
$\Omega (\theta) = ||w||_1=\sum_i|w_i|$
L1范数损失函数
$L=\sum_{i=1}^n|y_i-f(x_i)|$
鲁棒性更好,因为L2将误差平方化,误差会放大很多。
L1正则通常被用来进行特征选择,L1范数会使得很多参数的最优解变成0,产生稀疏解。

L2正则化

岭回归、Tikhonov正则
$\Omega (\theta)=\frac{1}{2} ||w||_2^2=\sum_{i=1}^nw_i^2$
L2范数损失函数
$L=\sum_{i=1}^n(y_i-f(x_i))^2$
使用在LR任务中:最小二乘法。
许多线性模型,包括线性回归和PCA,都依赖于对矩阵$x^T x$求逆。一旦该矩阵奇异,这个方法就失效了。而加入正则化后对应求逆$x^T x+\alpha I$,这个正则化矩阵是可以保证可逆的。

数据集增强

创造假数据,注入噪声等。对于对象识别任务使用数据集增强格外有效

噪声鲁棒性

向输入添加方差极小的噪声等价于对权重施加范数惩罚
将噪声添加到隐藏单元的效果比简单的收缩参数更大
施加于权重的噪声可以被解释为与传统正则形式相同
显式地对标签上的噪声进行建模可以获得更好的模型效果

多任务学习

通过合并不同任务的样例来提高泛化能力。这些不同任务中包含共享的因素。

提前终止

使用算法确定最佳训练时间or使用提前终止确定训练步数or使用提前终止确定将会过拟合的目标值。

参数共享与参数绑定

强迫某些参数相等。
与范数惩罚相比明显优点在于显著减少模型所占内存。

稀疏表示

惩罚神经网络中的激活单元。
稀疏性,即很多参数是0,相当于对模型做了一次特征选择,只留下了比较重要的特征,提高模型泛化能力。

集成学习Ensemble learning

用多个弱分类器组合成一个强分类器

bagging

从训练集进行子抽样得到每个基模型需要的子训练集,对所有基模型的预测结果进行综合产生的最终的预测结果。结合几个模型降低泛化误差,被称为模型平均(model averaging)。Bagging允许重复使用同一个模型、训练算法和目标函数。随机森林random forest是典型的基于bagging框架的模型。Bagging均匀随机重采样,各分类器是不相关的,可以并行。减少方差:各子模型之间有一定相关性,可以减少方差。

boosting

训练过程为阶梯状,基模型按次序一一训练,下一个分类器依赖于上一个分类器,只能串行。(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化,对所有基模型的预测结果进行综合产生的最终的预测结果。Boosting根据错误率采样,因此Boosting分类精度优于Bagging。减少偏差:序列化最小化损失函数,由于各子模型强相关,不能显著减少方差。

stacking

将训练好的所有基模型对训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个训练值,最后基于新的训练集机型训练。同理,预测的过程也要先经过所有的基模型的预测形成新的测试集,最后再对测试集进行预测。

Dropout

Dropout被认为是集成大量深度神经网络的使用Bagging方法。Dropout训练的集成包括所有从基础网络除去非输出单元后形成的子网络。
在bagging中所有模型都是独立的,在dropout中所有模型共享参数。

批标准化

对抗训练