回归

回归(regression)

1.函数空间(function space)

一个函数越复杂, 它的function space就越大。我们回归任务实际上是在函数空间中找到效果最好的function。

回归

找到合适的函数空间非常重要。

若函数空间过小,最有函数不在所选的函数空间内,则不论怎么优化都无法找到最优函数。

e.g.如图,model是选择的function space,红色圆心是target function。则在当前model里无法得到target function。

回归

如果函数空间过小,则可能会产生过拟合。

2.正则化(regularization)

在Loss函数中增加一个惩罚项
L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L=\sum_{n}\left(\hat{y}^{n}-\left(b+\sum w_{i} x_{i}\right)\right)^{2}+\lambda \sum\left(w_{i}\right)^{2} L=n(y^n(b+wixi))2+λ(wi)2
增加正则项,可以使最后优化得到的函数更加平滑

平滑是指当 x x x发生变化时, y y y发生的变化较小。

因为我们的目标是优化 L L L使其最小,优化过程是求取梯度,优化 w i w_i wi。那么我们通过对 w i w_i wi增加惩罚项,在优化的过程中就在 w i w_i wi上产生更大的梯度,则对应 w i w_i wi会被优化得更小。

我们使用 λ \lambda λ来控制对 w i w_i wi惩罚的程度。

通常我们认为拥有较小 w i w_i wi的函数是更好的

原因:如果有一些噪声出现在数据中,那么平滑的函数收到的影响更小。

但并不是越平滑越好:

回归

直观理解:如果过于平滑,函数变成一条直线(很多参数被惩罚地接近于0(不起作用)),则事实上函数空间变小,不能拟合到最优的function。

3.偏差(bias)与方差(variance)

3.1直观理解bias和variance

回归

3.2Bias和Variance的关系

回归

3.3如何判断是高Bias还是高Variance

  • 如果模型不能很好地fit训练数据,那么具有高bias Underfitting
  • 如果可以很好地fit训练数据,但在测试数据上有很大错误,则据由高variance Overfitting

3.4如何处理高Bias

重新设计模型:

  • 在输入数据集中增加特征
  • 选用更复杂的模型

3.5如何处理高Variance

  • 采用更多数据
  • 正则化

3.6模型选择

  • 我们通常会遇到对于bias和variance的trade-off
  • 我们需要选择一个平衡两种误差的模型,使总误差最小

3.6.1交叉验证

讲训练集划分为训练集和验证集。用验证集去选择模型。

回归

3.6.2N-fold交叉验证

在不同验证集上取平均来选择模型。

回归

4.学习率

学习率选择十分重要,如果选择地过小,会导致模型收敛较慢。如果选择地过大,可能会导致模型不收敛。

4.1自适应学习率(adaptive learning rate)

学习率在训练的过程中是逐步变化的,同时每个参数都拥有自己的学习率。

4.1.1Adagrad

回归

如图所示, σ t \sigma ^t σt是之前参数 w w w导数的均方根

e.g.

回归

表达式
w t + 1 ← w t − η t σ t g t η t = η t + 1 σ t = 1 t + 1 ∑ i = 0 t ( g i ) 2 w^{t+1}\leftarrow w^t-\frac{\eta^t}{\sigma^t}g^t\\ \eta^t=\frac{\eta}{\sqrt{t+1}}\\ \sigma^t=\sqrt{\frac{1}{t+1}\sum^t_{i=0}(g^i)^2} wt+1wtσtηtgtηt=t+1 ησt=t+11i=0t(gi)2
化简得
w t + 1 ← w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}\leftarrow w^t-\frac{\eta}{\sum^t_{i=0}(g^i)^2}g^t wt+1wti=0t(gi)2ηgt

5.随机梯度下降(Stochastic Gradient Descent)

5.1与梯度下降的区别

梯度下降是计算所有样本的Loss后,在所有样本的Loss上做梯度下降
L = ∑ n ( y ^ n − ( b + ∑ w i x i n ) ) 2 θ i = θ i − 1 − η ∇ L n ( θ i − 1 ) L=\sum_n(\hat{y}^n-(b+\sum w_ix^n_i))^2\\ \theta^{i}=\theta^{i-1}-\eta \nabla L^{n}\left(\theta^{i-1}\right) L=n(y^n(b+wixin))2θi=θi1ηLn(θi1)
注意上式开始的求和符号

随机梯度下降一次只看一个样本,计算完一个样本的Loss后就进行一次梯度下降
L = ( y ^ n − ( b + ∑ w i x i n ) ) 2 θ i = θ i − 1 − η ∇ L n ( θ i − 1 ) L=(\hat{y}^n-(b+\sum w_ix^n_i))^2\\ \theta^{i}=\theta^{i-1}-\eta \nabla L^{n}\left(\theta^{i-1}\right) L=(y^n(b+wixin))2θi=θi1ηLn(θi1)

5.2直观理解

回归

5.3优点

梯度下降要对所有样本求平均,一轮只能做一次梯度下降,速度较慢。

随机梯度下降一个样本即可做一次梯度下降,收敛速度快。

6.特征缩放(Feature Scaling)(归一化)

特征缩放是用来解决不同参数取值范围相差较大的问题

6.1为什么要特征缩放

参考下述例子:

回归

左边图中,由于 x 2 x_2 x2的的取值范围明显大于 x 1 x_1 x1,这就导致 w 2 w_2 w2发生微小变化会使 y y y发生较大变化。
在优化时, w 1 , w 2 w_1,w_2 w1,w2需要选择不同的学习率,一般需要使用如Adagrade等方法。

在右边图中,通过归一化, w 1 , w 2 w_1,w_2 w1,w2可选择相同的学习率,方便进行参数优化。

6.2如何特征缩放

特征缩放的方法有很多种

e.g.

回归






本文图片来源:李宏毅2020机器学习深度学习PPT