李宏毅2017机器学习课程视频笔记2:Regression


从需要解决的问题来说,Regression的目的就是让模型根据输入得到一个scalar的输出
李宏毅教授使用的是预测宝可梦进化后的cp值作为讲解Regression的例子
宝可梦进化预测的例子

1. 机器学习基本步骤

根据上一篇文章中介绍的ML三部曲choose Model->define loss function->pick the best funciton来完成Regression任务
Step1 choose Model
linear model
y = b + w ∗ x c p y = b + w*x_{cp} y=b+wxcp 使用进化前的cp值预测进化后的cp值
w i w_i wi——权重参数(weight)
b i b_i bi——偏置参数(bias)
x c p x_cp xcp——特征量(feature),
x j i x^{i}_j xji——第i个样本的第j个特征,即上标表示一个object,下标表示一个object对应的那个feature component

Step2 define loss function
均方误差
L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 L(w, b) = \sum^{10}_{n=1}(\hat{y}^{n}-(b+w*x^n_{cp}))^2 L(w,b)=n=110(y^n(b+wxcpn))2
( y ^ n − f ( x c p n ) ) 2 (\hat{y}^n-f(x^n_{cp}))^2 (y^nf(xcpn))2——预测误差(estimation error)

Step3 pick the best function
w ∗ , b ∗ = a r g m i n w , b L ( w , b ) w*, b* = arg min_{w, b}L(w, b) w,b=argminw,bL(w,b)
so how to pick the best w ∗ w^* w and b ∗ b^* b?——使用梯度下降方法(gradient descent)

2. Gradient Descent

使用gradient descent的步骤:

  1. 随机选取一个初始参数 w 0 w^0 w0 b 0 b^0 b0
  2. 计算梯度 ∂ L ∂ w ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial w}|_{w=w^0,b=b^0} wLw=w0,b=b0 ∂ L ∂ b ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial b}|_{w=w^0, b=b^0} bLw=w0,b=b0
  3. 更新参数 w 1 = w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^1 = w^0-\eta\frac{\partial L}{\partial w}|_{w=w^0, b= b^0} w1=w0ηwLw=w0,b=b0 b 1 = b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^1 = b^0-\eta\frac{\partial L}{\partial b}|_{w = w^0, b=b^0} b1=b0ηbLw=w0,b=b0
  4. 继续迭代…
    η \eta η——学习率(learning rate),表示参数更新快慢程度

η \eta η对梯度下降的影响: η \eta η越大,梯度下降速度是越快的。 η \eta η太小的时候,找到相同的best function所需迭代次数将更多; η \eta η太大的时候,可能会错过the best function,找不到最优解。
(ps:在迭代过程中的理想情况是,loss function的值越来越小,最后我们pick一个合适的参数值。但事实上,当学习率比较大的时候,loss function在过程中是会出现震荡的。这也就要求我们要pick一个合适的learning rate,顺便说一句,像learning rate这种需要我们自己pick的参数称为超参数,这与w,b等参数是不同的。在DL中选择合适的超参数的过程也称为“炼丹”)

随机梯度下降存在的问题
这页ppt中指出了我们使用的梯度下降法存在的问题:

  1. 在plateau也即梯度值比较小的位置参数更新慢,
  2. 在saddle point也即鞍点即梯度值为0点参数更新会停滞
  3. 可能陷入局部最小值点的困境(local minima)

ps:这里linear regression使用均方误差作为loss function是convex function,其局部最小值就是全局最小值,不会出现local minima的困境

3. 修改Model

  1. 对得到的 w ∗ w^* w b ∗ b^* b的泛化能力进行评估
  • 泛化能力:将从training data上pick的best function用于testing data上进行预测的性能
  • 评估标准:average error on testing data. 这里的error指的仍然是estimation error ( ( y − ( w ∗ x + b ∗ ) ) 2 (y-(w^*x+b^*))^2 (y(wx+b))2),再求和取平均即可

当我们对当前得到的函数的generalization ability不满意的时候,我们就需要改变ML第一步中确定的Model再pick出另一个best function

3.1 通过增加参数的方式修改Model

for example: 在model里引入一次项,二次项得到 y = b + w 1 x c p + w 2 ( x c p ) 2 y = b+w_1x_{cp}+w_2(x_{cp})^2 y=b+w1xcp+w2(xcp)2
更多Model如下图所示:
增加次数得到更好拟合的机制
原因:增加参数使得prediction function能够表示的input与output之间的作用机制的范围更大,更可能在training data上达到better fit的效果,从而期望在testing data上也能better fit

但并不是在training data上有最小的error,the function就会有最好的泛化能力

过拟合(overfitting):当model 太复杂以至于我们能在training data上得到一个非常好的结果,但在testing data上的预测误差却很大

overfitting的结果展示:
过拟合现象的出现

3.2 增加feature以修改Model

将宝可梦品种和它进化前的cp值都作为输入feature得到的Model:
引入宝可梦物种的影响
这个模型进行预测得到的结果:
引入宝可梦物种影响改变function之后的预测结果
当我们认为prediction result on testing data依然不够好的时候,我们还可以怎么办?

4. 修改loss function

当更改Model得到的预测函数的泛化能力仍不能达到要求的时候,我们需要考虑改变ML第二步中的loss function
李宏毅教授在课程中使用的是regularization(正则化)

4.1 对权重参数进行regularization

  1. 怎么做?
    设计loss function L = ∑ ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L=\sum(\hat y^n-(b+\sum w_ix_i))^2 + \lambda \sum(w_i)^2 L=(y^n(b+wixi))2+λ(wi)2
  2. 正则项的影响?
    the functions with smaller w i w_i wi are better. 更可能得到一个 w i w_i wi小的预测函数
    出现error on training data增大,error on testing data减小
  3. w i w_i wi更小的作用?
    预测函数变得更平滑,对噪声更不敏感。于是在处理一些带有噪声的input的时候,它会有更好的表现。

关于"smoother",举个例子:
prediction function为 y = b + ∑ w i x i y = b + \sum w_ix_i y=b+wixi,当input变化, y + ∑ w i Δ x i y+\sum w_i \Delta x_i y+wiΔxi = b + ∑ w i ( x i + Δ x i ) = b+ \sum w_i(x_i + \Delta x_i) =b+wi(xi+Δxi) 会得到对应的output变化。
如果 w i w_i wi更小,则input的变化对应的outputp变化也更小。
这也能说明,不需要在bias上做regularization,因为 Δ y \Delta y Δy中没有受到bias的影响

课程中给出了加入正则化对预测结果的影响:
引入regularization得到的测试结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值