李宏毅机器学习笔记-误差与梯度下降

李宏毅机器学习笔记-误差与梯度下降

1 误差、偏差、方差

1.1 误差来源

误差主要有两个来源:分别是 b i a s bias bias v a r i a n c e variance variance

在这里插入图片描述

其中 f ^ \hat f f^ 就是我们的靶心(真实值), f ∗ f^* f 就是我们投掷的结果(预测值)。如上图所示, f ^ \hat f f^ f ∗ f^* f 之间蓝色部分的差距就是偏差和方差导致的。

1.2估测变量x的偏差与方差

对于随机变量 x x x,平均值是 μ \mu μ,方差为 σ 2 \sigma^2 σ2

从总体中抽取N个样本点: { x 1 , x 2 , ⋅ ⋅ ⋅ , x N } \{x^1,x^2,···,x^N\} {x1,x2,,xN}

可以从样本点中得到 μ \mu μ的无偏估计为: 1 N ∑ n E [ x n ] = μ \frac{1}{N}\sum_nE[x^n]=\mu N1nE[xn]=μ,

如下图所示:

在这里插入图片描述

下图直观解释了偏差与方差的区别

在这里插入图片描述

对于不同的模型,其方差是不一样的,例如:一次模型的方差就比较小的,也就是是比较集中,离散程度较小。而5次模型的方差就比较大,同理散布比较广,离散程度较大。这是由于简单的模型受到不同训练集的影响是比较小的。简单的模型函数集的space比较小,所以可能space里面就没有包含靶心,肯定射不中。而复杂的模型函数集的space比较大,可能就包含的靶心,只是没有办法找到确切的靶心在哪,但足够多的,就可能得到真正的 f。

1.3 欠拟合与过拟合

如果模型没有很好的训练训练集,就是偏差过大,也就是欠拟合;
如果模型很好的训练训练集,即再训练集上得到很小的错误,但在测试集上得到大的错误,这意味着模型可能是方差比较大,就是过拟合。

对于过拟合,可以通过:增加数据量,加入正则项解决;

对于欠拟合,可以通过:增加模型复杂程度解决。

1.4 模型选择方法

此时需要在偏差和方差之间就需要一个权衡
想选择的模型,可以平衡偏差和方差产生的错误,使得总错误最小。

  • 交叉验证

在这里插入图片描述

图中public的测试集是已有的,private是没有的,不知道的。交叉验证 就是将训练集再分为两部分,一部分作为训练集,一部分作为验证集。用训练集训练模型,然后再验证集上比较,确实出最好的模型之后(比如模型3),再用全部的训练集训练模型3,然后再用public的测试集进行测试,此时一般得到的错误都是大一些的。不过此时会比较想再回去调一下参数,调整模型,让在public的测试集上更好,但不太推荐这样。

上述方法可能会担心将训练集拆分的时候分的效果比较差怎么办,可以用N-折交叉验证。

  • N-折交叉验证

    将训练集分成N份,比如分成3份。

在这里插入图片描述

​ 比如在三份中训练结果Average错误是模型1最好,再用全部训练集训练模 型1。

2 梯度下降法

2.1 梯度下降法的一般算法

在这里插入图片描述

选择初始点 θ 0 \theta^0 θ0,计算初始点处的梯度,减掉 η \eta η (学习率)乘上偏微分的值,得到一组新的参数。重复上述步骤,直到满足一定精度。

2.2 学习率的调整
2.2.1 固定学习率

固定学习率有一定的局限性,由于梯度会变大变小,固定下来的学习率不能跟随梯度的变化,很有可能找不到最优值,如下图所示:

在这里插入图片描述

上图左边黑色为损失函数的曲线,假设从左边最高点开始,如果学习率调整的刚刚好,比如红色的线,就能顺利找到最低点。如果学习率调整的太小,比如蓝色的线,就会走的太慢,虽然这种情况给足够多的时间也可以找到最低点,实际情况可能会等不及出结果。如果 学习率调整的有点大,比如绿色的线,就会在上面震荡,走不下去,永远无法到达最低点。还有可能非常大,比如黄色的线,直接就飞出去了,更新参数的时候只会发现损失函数越更新越大。

上图右边的方案,将参数改变对损失函数的影响进行可视化。比如学习率太小(蓝色的线),损失函数下降的非常慢;学习率太大(绿色的线),损失函数下降很快,但马上就卡住不下降了;学习率特别大(黄色的线),损失函数就飞出去了;红色的就是差不多刚好,可以得到一个好的结果。

2.2.2 自适应学习率

为了让学习率跟随梯度,即在梯度大的时候,学习率也大;梯度小的时候,学习率小,可以通过一些因子改变学习率。

  • 例如: η t = η t t + 1 \eta^t =\frac{\eta^t}{\sqrt{t+1}} ηt=t+1 ηt t t t 是次数。随着次数的增加, η t \eta^t ηt 减小

  • Adagrad 算法

    w t + 1 ← w t − η t σ t g t w^{t+1} \leftarrow w^t -\frac{η^t}{\sigma^t}g^t wt+1wtσtηtgt
    g t = ∂ L ( θ t ) ∂ w g^t =\frac{\partial L(\theta^t)}{\partial w} gt=wL(θt)

    σ t \sigma^t σt :之前参数的所有微分的均方根,对于每个参数都是不一样的。

在这里插入图片描述

上述化简后为:

在这里插入图片描述

对于一个简单的二次函数:

在这里插入图片描述

比如初始点在 x 0 x_0 x0,最低点为 − b 2 a −\frac{b}{2a} 2ab,最佳的步伐就是 x 0 x0 x0 到最低点之间的距离 ∣ x 0 + b 2 a ∣ \left | x_0+\frac{b}{2a} \right | x0+2ab,也可以写成 ∣ 2 a x 0 + b 2 a ∣ \left | \frac{2ax_0+b}{2a} \right | 2a2ax0+b。而刚好 ∣ 2 a x 0 + b ∣ |2ax_0+b| 2ax0+b 就是方程绝对值在 x 0 x_0 x0 这一点的微分。

同时可以认为如果算出来的微分越大,距离最低点越远

但是这个结论在跨维度时不成立:

在这里插入图片描述

左图为两个参数的损失函数,右图分别为两个参数的变化曲线,对于a,b两点,w1的微分越大,距离最低点越远;但是对于a,c两点,这一结论并不成立。

之前说到的最佳距离 ∣ 2 a x 0 + b 2 a ∣ \left | \frac{2ax_0+b}{2a} \right | 2a2ax0+b,还有个分母 2 a 2a 2a 。对function进行二次微分刚好可以得到:
∂ 2 y ∂ x 2 = 2 a \frac{\partial ^2y}{\partial x^2} = 2a x22y=2a

一 次 微 分 二 次 微 分 \frac{一次微分}{二次微分}

因此,Adagrad算法中, ∑ i = 0 t ( g i ) 2 \sqrt{\sum_{i=0}^t(g^i)^2} i=0t(gi)2 就是希望再尽可能不增加过多运算的情况下模拟二次微分。

2.3 随机梯度下降法

之前的梯度下降:

L = ∑ n ( y ^ n − ( b + ∑ w i x i n ) ) 2 L=\sum_n(\hat y^n-(b+\sum w_ix_i^n))^2 L=n(y^n(b+wixin))2
θ i = θ i − 1 − η ▽ L ( θ i − 1 ) \theta^i =\theta^{i-1}- \eta\triangledown L(\theta^{i-1}) θi=θi1ηL(θi1)

而随机梯度下降法更快:

损失函数不需要处理训练集所有的数据,选取一个例子 x n x^n xn

L = ( y ^ n − ( b + ∑ w i x i n ) ) 2 L=(\hat y^n-(b+\sum w_ix_i^n))^2 L=(y^n(b+wixin))2
θ i = θ i − 1 − η ▽ L n ( θ i − 1 ) \theta^i =\theta^{i-1}- \eta\triangledown L^n(\theta^{i-1}) θi=θi1ηLn(θi1)

此时不需要像之前那样对所有的数据进行处理,只需要计算某一个例子的损失函数Ln,就可以赶紧update 梯度。

2.4 维度缩放

对于有些输入,两个输入的分布不相同,此时需要将它们的范围缩放,使得输入的范围一样的。

在这里插入图片描述

上图左边是 x 1 x_1 x1 的scale比 x 2 x_2 x2 要小很多,所以当 w 1 w_1 w1 w 2 w_2 w2 做同样的变化时, w 1 w_1 w1 y y y 的变化影响是比较小的, x 2 x_2 x2 y y y 的变化影响是比较大的。

解决缩放问题的方法是Z-score标准化

2.5 梯度下降法的局限

容易陷入局部极值
还有可能卡在不是极值,但微分值是0的地方(鞍点)
还有可能实际中只是当微分值小于某一个数值就停下来了,但这里只是比较平缓,并不是极值点

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值