李宏毅机器学习课程梳理【二】:关于Gradient descent的理论以及优化技术


摘要
本文详细补充了Gradient descent的底层数学理论,阐明了Bias和Variance怎样对Error产生影响以及如何优化,通过引入验证集来解决模型如何选择问题,并且补充了在实操Gradient descent时会遇到的一些细节问题及其解决办法。

1 模型的结果与正确值之间误差的来源

  1. bias(截距)
  2. variance(方差)

用靶子生动表示
上图中的每一个蓝点,都是进行一次完整的Regression后得到的 f ∗ f^* f,因为每次Regression时都会收集不同的Training Data,所以每次的 f ∗ f^* f一定不同。

图中的 f ^ \hat{f} f^代表真正的正确的程式,位于靶心。

1.1 Bias的规律

一、定义: E [ f ∗ ] = f ˉ E[f^*] = \bar{f} E[f]=fˉ,求出每次的 f ∗ f^* f的期望,记作 f ˉ \bar{f} fˉ,Bias描述 f ˉ \bar{f} fˉ f ^ \hat{f} f^的接近程度

Bias只关注 f ˉ \bar{f} fˉ f ^ \hat{f} f^之间的差距

二、规律
Model越复杂,Bias越小
对号入座
如上图,展示了一次式与五次式Bias的靶子图,可以看出Model越复杂, f ˉ \bar{f} fˉ平均出来与 f ^ \hat{f} f^越接近。

图中黑色曲线代表 f ^ \hat{f} f^、红色曲线代表5000次Regression后的 f ∗ f^* f、蓝色曲线代表5000个 f ∗ f^* f的平均 f ˉ \bar{f} fˉ

1.2 Variance的规律

Model越复杂,Variance越大
the link of Variance&Model原因:越简单的Model,受Training Data的影响越小。
可以想象,如果将每次的Model定为最简单的常数C,那么Variance=0

1.3 两者对Error的影响

bias&variance对error造成的影响
图中横坐标代表Model的最高次幂,Variance随次数的升高增长非常快,所以造成过拟合。而error来自bias很大,则称为Underfitting

2 通过减小Bias&Variance来优化

2.1 判断当前结果是Bias大还是Variance大

如果 f ∗ f^* f不能准确描述Training Data上的点,也就是对于Training Data都有很大误差,那么就是Bias大的Underfitting

如果 f ∗ f^* f在Training Data上得到小的error,但是在Testing Data上得到一个大的error,那么可能是Variance大的Overfitting

2.2 Bias大的优化方法

重构Model(考虑更多的feature;使Model更复杂…)

现在的Function set中根本就不包含 f ^ \hat{f} f^

2.3 Variance大的优化方法

  1. 收集更多的Data【generalization泛化】
  2. Regularization【这招可能影响Bias,通过加入一项使曲线变平滑,那么 f ^ \hat{f} f^有可能被剔除,所以要调整 λ \lambda λ,找一个平衡使两者都小】
    效果

3 Model Selection

3.1 反面教材

注意:我们手里的Testing Set与真正使用中的Testing Set之间有一定的Bias,因为我们其实不知道 f ^ \hat{f} f^
欠考虑了
在我们手上Testing Set上得到的“最佳Model”不一定是最佳的那个

3.2 正确解法

在Validation Set上选Model
我们手上的Data分配比例应该为Training Set:Validation Set:Testing Set = 3 : 1 : 1

正确步骤是将Training Set(总)按比例分成Training Set和Validation Set。在Training Set上完成训练的Model用Validation Set选择,假设Validation Set上Model3表现最佳,那么再用全部的Training Set(总)数据训练Model3。这样得到的Model在Testing Set上表现会差很多,但是不要再回头改参数,这个差的结果才是真实的。

还可以做N-fold Cross Validation:按相同比例分Training Set(总),分别将不同的部分做Validation,余下部分做Train,多次重复实验,求各个Model多次结果的平均Error,来选择最佳Model

总之,少去根据Testing set上的结果去调Model,真实上线后的结果反而比较好。

4 Gradient Descent

梯度就是高数里的梯度阿
梯度是一个矢量,是图中的红色箭头,指向上升/下降最快的方向。移动则带入公式,为图中的蓝色箭头所示的大小与方向。

4.1 Learning Rate - η \eta η

要画右边的图
learning rate的大小影响Gradient descent能否顺利走到Loss( θ \theta θ), θ \theta θ为参数的最低点。正确的做法是画出随着参数的更新,Loss的变化,观察前几次更新时,图像是否是稳定的下降

adaptive learning rate(自适应)一般的规律是越来越小,例如 η t = η / t + 1 \eta^t=\eta/\sqrt{t+1} ηt=η/t+1

最好每个参数都给它不同的learning rate-Adagrad每一个参数的learning rate都把它除上之前算出来的微分值的root mean square
w t + 1 = w t − η t σ t g t w^{t+1}=w^t-\dfrac{\eta^t}{\sigma^t}g^t wt+1=wtσtηtgt,其中 g t = ∂ L ( θ t ) ∂ w g^t=\dfrac{\partial L(\theta^t)}{\partial w} gt=wL(θt)
σ t \sigma^t σt就是 root mean square(RMS): 一组统计数据的平方的平均值的平方根sigma的计算步骤
总结 Adagrad: w t + 1 = w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}=w^t-\dfrac{\eta}{\sqrt{\textstyle\sum_{i=0}^t(g^i)^2}}g^t wt+1=wti=0t(gi)2 ηgt
更强的方法Adam

4.2 Stochastic Gradient Descent

L n = [ y ^ n − ( b + ∑ w i x i n ) ] 2 L^n=[{\hat{y}^n-(b + \sum w_ix_i^n)}]^2 Ln=[y^n(b+wixin)]2定义Loss function时只取一个点 x n x^n xn,不求和了
θ i = θ i − 1 − η ⋅ ∇ L n ( θ i − 1 ) \theta^i=\theta^{i-1}-\eta\sdot\nabla L^n(\theta^{i-1}) θi=θi1ηLn(θi1)

4.3 Feature Scaling

特征衡量
上图直观展示何为Feature Scaling
而做Feature Scaling的好处是

  1. 对Learning rate要求不再那么高,否则需要adaptive learning rate
  2. gradient descent效率高

Feature Scaling的具体做法就是将其标准化
现有r个example,每一个example都有一组feature,上标代表object,下标代表component

  1. 对于每个dimension i(坐标轴方向),都算它的期望,记为 m i m_i mi;都算它的标准差,记为 σ i \sigma_i σi
  2. 对第 r 个example的第 i 个component做 x i r = x i r − m i σ i x_i^r=\dfrac{x_i^r-m_i}{\sigma_i} xir=σixirmi

对每一个example这样处理后,所有dimension的期望会变0、标准差会变1

5 The Theory of Gradient Descent

首先,不是每次更新参数,Loss的值都一定会下降
下面解释一下:
以微元的方法,先随机找到初始点,记作 θ 0 \theta^0 θ0,现以 θ 0 \theta^0 θ0【坐标 ( a , b ) (a,b) (a,b)】为圆心有一个极其小的圆,半径为d【极小】
L ( θ ) ≈ s + u ⋅ ( θ 1 − a ) + v ⋅ ( θ 2 − b ) L(\theta)\approx s + u\sdot(\theta_1-a) + v\sdot(\theta_2-b) L(θ)s+u(θ1a)+v(θ2b),【运用Taylor展开公式】,其中 s = L ( a , b ) ; u = ∂ L ( a , b ) ∂ θ 1 ; v = ∂ L ( a , b ) ∂ θ 2 s=L(a,b); u=\dfrac{\partial L(a,b)}{\partial \theta_1}; v=\dfrac{\partial L(a,b)}{\partial \theta_2} s=L(a,b);u=θ1L(a,b);v=θ2L(a,b).
( θ 1 − a ) 2 + ( θ 2 − b ) 2 ⩽ d 2 (\theta_1-a)^2+(\theta_2-b)^2\leqslant d^2 (θ1a)2+(θ2b)2d2范围内,求 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2使 L ( θ ) L(\theta) L(θ)最小
解
如上图,考虑 u ⋅ ( θ 1 − a ) + v ⋅ ( θ 2 − b ) u\sdot(\theta_1-a) + v\sdot(\theta_2-b) u(θ1a)+v(θ2b)时,就是在考虑两个向量的内积何时最小?当蓝色向量与黑色反向,并且长度达到半径d时最小。因此,learning rate起到了调节长度的作用。

再将u,v带入向量中,于是便得到了Gradient descent的程式。

推导的前提是 L ( θ ) ≈ s + u ⋅ ( θ 1 − a ) + v ⋅ ( θ 2 − b ) L(\theta)\approx s + u\sdot(\theta_1-a) + v\sdot(\theta_2-b) L(θ)s+u(θ1a)+v(θ2b)成立,那就要求 d 足够小【Taylor】,而learning rate与 d 成正比,所以learning rate的取值很关键,只有足够小时,Loss才能逐渐变小。

6 总结与展望

文章通过一些图形展示,对比了使用各种方法后的优化效果;并且通过一些数学推导,尝试解释Gradient descent的理论。
接下来将会详细介绍SGD、RMSprop、Adam等Gradient descent相关算法、并进行实操。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值