机器学习 - 正则化和优化器(Regularisation and Optimisers)

机器学习 - 正则化和优化器(Regularisation and Optimisers)

 次点击
18 分钟阅读

当模型可调节参数(自由度)过多时,容易学习到训练数据中的噪声,进而出现 “过拟合”(训练集误差小、测试集误差大)。因此要对模型的参数引入某种限制,在训练过程中避免过拟合。。

正则化通过在损失函数中加入参数惩罚项,约束参数规模,迫使模型优先学习数据的通用规律,而非噪声。

范数

在正式进入正则化的学习之前,先了解一下范数的概念。

范数的本质是对距离的抽象推广,一个函数 ​\|\mathbf{*}\|是范数,必须满足以下条件:

  1. 非负性​\|\mathbf{x}\| \geq 0
  2. 零向量特征​\|\mathbf{x}\| = 0 \iff \mathbf{x} = \mathbf{0}​\mathbf{0}为零向量);
  3. 正齐次性​\|\alpha \mathbf{x}\| = |\alpha| \cdot \|\mathbf{x}\|
  4. 三角不等式​\|\mathbf{x} + \mathbf{y}\| \leq \|\mathbf{x}\| + \|\mathbf{y}\|

向量范数中​L_p范数最为常见,定义为:

\|\mathbf{x}\|_p = \left( \sum_{i=1}^n |x_i|^p \right)^{\frac{1}{p}}

最常见的几种​L_p范数有:

  • L1范数,对应曼哈顿距离,L1范数是向量各个分量绝对值的和
\|\mathbf{x}\|_1 = \sum_{i=1}^n |x_i|
  • L2范数,对应欧几里和距离,向量各分量平方和的平方根。L2范数应用最广,如果直接省略了下标变成​∥x∥的形式,一般是指L2范数。
\|\mathbf{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2} = \sqrt{\mathbf{x}^T \mathbf{x}}
  • L∞范数,对应车比雪夫距离,是向量各分量绝对值的最大值
|\mathbf{x}\|_\infty = \max_{1 \leq i \leq n} |x_i|
  • L0范数,严格意义上来说,不符合范数定义,所以应该叫L0伪范数。定义为向量中非零元素的个数
\|\boldsymbol{x}\|_0 = \sum_{i=1}^n \mathbb{I}(x_i \neq 0)

其中​\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

J(\theta)=MSE(\theta)+\alpha\frac{1}{2}\Sigma^n_{i=1}\theta_i^2

多项式拟合.png

Figure 1 多项式拟合

可以看出 ​\alpha 越大,拟合的曲线越平滑,因为 ​\alpha 对高维惩罚更严重;反之 ​\alpha 越小,曲线会更弯曲。

LASSO Regression (Least Absolute Shrinkage and Selection Operator Regression)

正则化的线性回归,cost function

J(\theta) = MSE(\theta) + \alpha\Sigma^n_{i=1}|\theta_i|

通过使用更激进的方法:没有 ​\frac{1}{2} 常数 以及 ​\theta 的绝对值,达到了减少了权重 ​\theta_i 值的目的。因此,最终可能会在模型中包含比开始时更少的特征,这是一个巨大的优势。

它在一个步骤中完成了特征选择和回归,形成了一个稀疏的模型。

Elastic Net Regression

J(\theta) = MSE(\theta)+r\alpha\Sigma^n_{n=1}|\theta_i|+\frac{1-r}{2}\alpha\Sigma^n_{i=1}(\theta_i)^2

这种方法,介于L1和L2之间。​\alpha 控制着模型正则化的程度(模型的cost)。若​\alpha非常大,由于结果是一条直线,那么所有参数(​\theta_i)都会是0

模型的选择

  • Ridge 一般作为默认选项
  • 若特征较多,但是有用的较少,可以选择LASSO或者Elastic
  • Elastic比LASSO更优,因为加入了更多的控制项
  • 若特征数量 ​> 训练实例数,选择Elastic

梯度下降

Batch Gradient Descent BGD

通过整个数据集来计算模型的误差:

J(\theta) = \frac{1}{2}\Sigma^m_{i=1}(y(i)-h_{\theta}(x^{(i)}))^2

之后使用误差来更新参数 ​\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 范数也

© 本文著作权归作者所有,未经许可不得转载使用。