当模型可调节参数(自由度)过多时,容易学习到训练数据中的噪声,进而出现 “过拟合”(训练集误差小、测试集误差大)。因此要对模型的参数引入某种限制,在训练过程中避免过拟合。。
正则化通过在损失函数中加入参数惩罚项,约束参数规模,迫使模型优先学习数据的通用规律,而非噪声。
范数
在正式进入正则化的学习之前,先了解一下范数的概念。
范数的本质是对距离的抽象推广,一个函数 \|\mathbf{*}\|是范数,必须满足以下条件:
- 非负性:\|\mathbf{x}\| \geq 0;
- 零向量特征:\|\mathbf{x}\| = 0 \iff \mathbf{x} = \mathbf{0}(\mathbf{0}为零向量);
- 正齐次性:\|\alpha \mathbf{x}\| = |\alpha| \cdot \|\mathbf{x}\|;
- 三角不等式:\|\mathbf{x} + \mathbf{y}\| \leq \|\mathbf{x}\| + \|\mathbf{y}\|
向量范数中L_p范数最为常见,定义为:
最常见的几种L_p范数有:
- L1范数,对应曼哈顿距离,L1范数是向量各个分量绝对值的和。
- L2范数,对应欧几里和距离,向量各分量平方和的平方根。L2范数应用最广,如果直接省略了下标变成∥x∥的形式,一般是指L2范数。
- L∞范数,对应车比雪夫距离,是向量各分量绝对值的最大值。
- L0范数,严格意义上来说,不符合范数定义,所以应该叫L0伪范数。定义为向量中非零元素的个数。
其中\mathbb{I}(\cdot)为指示函数,当x_i \neq 0时,\mathbb{I}(x_i \neq 0) = 1,否则为0。
正则化方法
常见的正则化方法:
- Ridge Regression,也被称作L2 Regression
- Lasso Regression,也被称作L1 Regression
- Elastic Net
在上述正则化方法中,都有一个正则项(regularization term)被添加到cost function中。
Ridge Regression
Cost function:
可以看出 \alpha 越大,拟合的曲线越平滑,因为 \alpha 对高维惩罚更严重;反之 \alpha 越小,曲线会更弯曲。
LASSO Regression (Least Absolute Shrinkage and Selection Operator Regression)
正则化的线性回归,cost function 为
通过使用更激进的方法:没有 \frac{1}{2} 常数 以及 \theta 的绝对值,达到了减少了权重 \theta_i 值的目的。因此,最终可能会在模型中包含比开始时更少的特征,这是一个巨大的优势。
它在一个步骤中完成了特征选择和回归,形成了一个稀疏的模型。
Elastic Net Regression
这种方法,介于L1和L2之间。\alpha 控制着模型正则化的程度(模型的cost)。若\alpha非常大,由于结果是一条直线,那么所有参数(\theta_i)都会是0
模型的选择
- Ridge 一般作为默认选项
- 若特征较多,但是有用的较少,可以选择LASSO或者Elastic
- Elastic比LASSO更优,因为加入了更多的控制项
- 若特征数量 > 训练实例数,选择Elastic
梯度下降
Batch Gradient Descent BGD
通过整个数据集来计算模型的误差:
之后使用误差来更新参数 \theta_i
Stochastic Gradient Descent SGD
对数据进行随机采样并使用采样的1个样本来计算 cost function,再用每次的采样来计算并更新参数 \theta_i
SGD每次迭代时只有一组数据在内存中,算法运行更快,对大数据集的效果更好。
然而由于SGD随机性太强, cost function 会随着时间推移上下跳动,即使已经接近最小值了,也会继续跳动而不是稳定下来。因此最终的结果不会是最优的(optimal)。
但是也是因为其随机性,能够在高cost时跳出局部最优。能够解决cost function跳跃的一个途径是让学习率\eta随时间推移而降低。此过程被称为模拟退火。
Mini Batch Gradient Descent MGD
属于BGD和SGD的结合。既不是一次使用完整数据集,也不是随机抽样1个样本,而是基于随机抽样的一小部分样本。在深度学习中,这种方法用的是最多的,因为这个方法收敛不慢,局部最优也可以接受。
欠拟合与过拟合
训练损失和测试损失都较大,为欠拟合(underfitting)。
训练损失小而测试损失较大,为过拟合(overfitting)。
欠拟合
模型无法拟合数据中的重要模式,模式就是数据背后的规律。
欠拟合会导致预测精度低。
造成欠拟合的因素包括:
- 模型复杂度太低,不具备学习复杂模式的能力
- 迭代次数太少,没来得及学习数据的模式
- 学习率太低,参数更新太慢或不充分
解决欠拟合的方法:
过拟合
过度拟合了训练集数据中,不具备普遍性的部分,在未观测到的数据中,预测效果会变差。
造成过拟合的因素包括:
- 模型复杂度太高,导致训练损失小,但是预测损失大
- 训练集的数据太少
- 训练集噪声太多
解决过拟合的方法:
- 筛选特征,如PCA
- 正则化
- 添加dropout层
当p=2时,L2 范数是向量各分量平方和的平方根,对应经典 “欧几里得距离”:
\|\mathbf{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2} = \sqrt{\mathbf{x}^T \mathbf{x}}其中\mathbf{x}^T是\mathbf{x}的转置。L2 范数也