李宏毅老师机器学习2020学习笔记与思考(二)Regression

Regression—Predict Combat Power(CP) of pokemon after evolution

Step 1:Find a Model

首先需要找到函数模型,假设为
y = b + w ∗ x c p y = b+w*x_{cp} y=b+wxcp
w和b是不同可以调整的参数,通过调整w和b,可以得到一个无穷的函数集。然后可以进一步延伸得到一个Linear Model:
y = b + ∑ w i ∗ x i y=b+\sum w_{i}*x_{i} y=b+wixi
其中, w i w_{i} wi叫做weight, b b b叫做bias, x i x_{i} xi叫做feature。

Step 2:Evaluate the Goodness of Function

抓10只宝可梦,得到其初始值与进化后的cp值,定义一个新函数:Loss Function L:input: a function, output: how bad it is
L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 L(f)=L(w,b)=\sum_{n=1}^{10}(\hat{y}^{n}-(b+w*x_{cp}^n))^{2} L(f)=L(w,b)=n=110(y^n(b+wxcpn))2
这个损失函数是用来衡量一组参数b,w的好坏.

Step 3:Choose the Best Function-Gradient Descent

1. 一个参数 w w w

找到让loss最小的函数或者 w w w, b b b,经常使用gradient descent(梯度下降法),只考虑一个参数 w w w,具体来说:

  • 选取一个初始位置 w 0 w^{0} w0,或不随机,采用其他方法,这里随机选取。

  • 计算 d L d w ∣ w = w 0 \frac{dL}{dw}|_{w=w^{0}} dwdLw=w0也可以理解为该点的切线斜率

  • 梯度下降:如果切线斜率是负的,就增加 w 0 w^{0} w0 w 1 w^{1} w1,反之则减小。
    w 1 = w 0 − η d L d w ∣ w = w 0 w^{1}=w_{0}-\eta\frac{dL}{dw}|_{w=w^{0}} w1=w0ηdwdLw=w0
    其中 η \eta η被称为learning rate,之后继续计算 w 1 w^{1} w1处的微分值,经过很多次iteration,直至进入local minimum(非global optical),微分为0。完成迭代。但是在线性回归中,不存在local optimal。
    2. 两个参数 w , b w,b wb
    同样的,也是先随机找到两个参数的初始值,然后分别计算对 w w w b b b的微分,根据微分的正负结合learning rate分别找到下一个 w w w b b b,以此类推不断更新参数,直到进入local minimum。
    3. 计算
    L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 L(f)=L(w,b)=\sum_{n=1}^{10}(\hat{y}^{n}-(b+w*x_{cp}^n))^{2} L(f)=L(w,b)=n=110(y^n(b+wxcpn))2
    ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ∗ x c p n ) ) ( − x c p n ) \frac{\partial L}{\partial w}=\sum_{n=1}^{10}2(\hat{y}^{n}-(b+w*x_{cp}^n))(-x_{cp}^{n}) wL=n=1102(y^n(b+wxcpn))(xcpn)
    ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ∗ x c p n ) ) ( − 1 ) \frac{\partial L}{\partial b}=\sum_{n=1}^{10}2(\hat{y}^{n}-(b+w*x_{cp}^n))(-1) bL=n=1102(y^n(b+wxcpn))(1)

How’s the results?

通过计算,得到最好的 w w w b b b,然而,在预测其他数据时表现不是非常好,因此考虑换一个更复杂的模型:
y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 y = b+w_{1}*x_{cp}+w_{2}*(x_{cp})^2 y=b+w1xcp+w2(xcp)2
通过梯度下降法得到更小的Average Error和Best Function发现在测试集中表现更好。
进一步地,设计一个三次模型:
y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 + w 3 ∗ ( x c p ) 3 y = b+w_{1}*x_{cp}+w_{2}*(x_{cp})^2+w_{3}*(x_{cp})^3 y=b+w1xcp+w2(xcp)2+w3(xcp)3
结果在训练集中表现更好了,在测试集中表现稍微好一点。
再提高次数,得到新的模型:
y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 + w 3 ∗ ( x c p ) 3 + w 4 ∗ ( x c p ) 4 y = b+w_{1}*x_{cp}+w_{2}*(x_{cp})^2+w_{3}*(x_{cp})^3+w_{4}*(x_{cp})^4 y=b+w1xcp+w2(xcp)2+w3(xcp)3+w4(xcp)4
在测试在训练集中表现更好了,在测试集中表现反而不好。在五次的模型中这一特性体现得更显著。
过拟合
出现这一现象的原因是过拟合(overfitting),更复杂的模型在训练集表现很好,但是在测试集并不一定好,因为会学习到很多仅适用于训练集的特殊现象。
Hidden Factor
随着数量增加,发现明显还有一个隐藏的要素影响着进化后的cp值—物种属性,因此可以重新定义函数,通过 δ ( x s ) \delta(x_{s}) δ(xs)函数来调节不同物种下不同的参数,然后重新进行计算。同时可以将其初始的weight、height、hp值构建模型。然而,考虑过多的feature容易产生overfitting,因此可以进行正则化(regularization)处理。
正则化
调整Loss函数如下:
y = b + w ∗ x c p y = b+w*x_{cp} y=b+wxcp L ( f ) = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L(f)=\sum_{n}(\hat{y}^{n}-(b+\sum w_{i}x_{i}))^{2}+\lambda\sum(w_{i})^{2} L(f)=n(y^n(b+wixi))2+λ(wi)2
在新的loss函数中可以看出,相较之前,增加了一部分,这部分的含义是期待 w i w_{i} wi的和最小,也即期待模型能更好的拟合的同时,参数 w i w_{i} wi平方和最小。原因如下:当 w w w小时,函数更平滑,即调整输入,输出的变化越小,这样一来,当输入中含有噪音,平滑的函数受影响更小。 λ \lambda λ 值越大,则代表考虑更多的考虑函数的平滑,通过调整 λ \lambda λ值从0—>100000,在Training data中Average error越来越大,这是合理的,但是在testing data中,表现先变好后变差,通过手动调整 λ \lambda λ,找到最好的情况,在这个过程中要考虑函数的拟合程度和平滑性的一个均衡,即 λ \lambda λ不能太小也不能太大。
参数 b b b(bias)不影响函数平滑程度,因此不需要考虑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值