李宏毅机器学习2-回归

李宏毅机器学习2-回归案例学习

Regression

  • 股票预测系统:input过去十年股票起伏资料,output股市明天的平均值

  • 自动驾驶车辆:input sensor感受到的信息,output方向盘的角度

  • 推荐系统:商品A的特性、商品B的特性,output购买可能性

具体案例:预测宝可梦的CP值

找一个f,input某一只宝可梦,output这只宝可梦进化后的CP值是多少(是一个scalar)

一种宝可梦用 x x x表示,则:

x c p x_{cp} xcp宝可梦进化前的CP值

x s x_{s} xs宝可梦的属于的物种

x h p x_{hp} xhp宝可梦的生命值

x w x_{w} xw宝可梦的重量

x h x_{h} xh宝可梦的高度

y y y进化后的CP值

Regression的具体过程

machine Learning的三个步骤:

  • 定义一个model即function set
  • 定义一个goodness of function损失函数去评估该function的好坏
  • 找一个最好的function

一元一次线性模型

Step1:模型

假设 y = b + w ⋅ x c p y=b+w\cdot x_{cp} y=b+wxcp w w w b b b是参数可以是任意值,但从常理可以判断 w w w b b b不能同时为负值

李宏毅机器学习2-回归_第1张图片

这样模型称为线性模型
y = b + ∑ w i x i y=b+\sum w_{i} x_{i} y=b+wixi
其中

x i x_i xi:feature(特征值),输入的宝可梦的不同属性

w i w_i wi:weight(权重)

b b b:bias(偏移量)

Step2:模型优化

收集trainning data

x i x^i xi:用上标来表示一个完整的object的编号

y ^ i \widehat{y}^{i} y i :代表function的输出,^ 所代表的是实际观察的真实值
李宏毅机器学习2-回归_第2张图片

图中十个蓝色的点代表十只宝可梦,x轴为进化前的CP值,y轴为进化后的CP值, ( x c p n , y ^ n ) \left(x_{c p}^{n}, \hat{y}^{n}\right) (xcpn,y^n)代表着第n只宝可梦进化前的CP值和进化后的CP值。

为了衡量function set中的某个function的好坏,定义了一个Loss function L,
L ( f ) = L ( w , b ) \mathrm{L}(f)=\mathrm{L}(w, b) L(f)=L(w,b)

  • input:一个function
  • output:how bad/good it is

Loss function实际上在衡量一组参数的好坏

如何衡量一个模型的好坏呢?用真正的数值减去预测的数值,然后平方,作为估测的误差(Estimation error),来衡量模型的好坏。
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}\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} L(f)=L(w,b)=n=110(y n(b+wxcpn))2
如果 L ( f ) L(f) L(f)越大,说明该function表现得越不好; L ( f ) L(f) L(f)越小,说明该function表现得越好
在该例子中我们用估测误差来表示Loss function,
L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \mathrm{L}(w, b)=\sum_{n=1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} L(w,b)=n=110(y^n(b+wxcpn))2
L ( f ) L(f) L(f)的图像中,

李宏毅机器学习2-回归_第3张图片

  • 一个点代表着一个模型对应的 w w w b b b ,每个点都代表一个function,而该点的颜色对应着的 L ( f ) L(f) L(f)

  • 越偏蓝色表示function越好,即 L ( f ) L(f) L(f)最低的一个function

Step3:梯度下降

这个function set里面,挑选一个最好的function,用公式表示就是
f ∗ = arg ⁡ min ⁡ f L ( f ) f^{*}=\arg \min _{f} L(f) f=argfminL(f)
或是
w ∗ , b ∗ = arg ⁡ min ⁡ w , b L ( w , b ) = arg ⁡ min ⁡ w , b ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 \begin{aligned} w^{*}, b^{*} &=\arg \min _{w, b} L(w, b) \\ &=\arg \min _{w, b} \sum_{n=1}^{10}\left(\hat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \end{aligned} w,b=argw,bminL(w,b)=argw,bminn=110(y^n(b+wxcpn))2
f ∗ f^{*} f或者 w ∗ , b ∗ w^{*}, b^{*} w,b就是使 L ( f ) L(f) L(f)最小的

Gradient Descent 梯度下降

我们使用gradient descent(梯度下降法)解决这个问题,gradient descent的厉害之处在于,只要 L ( f ) L(f) L(f)是可微分的,gradient descent都可以拿来处理这个 L ( f ) L(f) L(f),找到表现比较好的parameters

只有一个参数的情况

假设 L ( w ) L(w) L(w) 只有一个参数 w w w,找一个 w w w 使 L ( w ) L(w) L(w) 最小, w ∗ = arg ⁡ min ⁡ w L ( w ) w^{*}=\arg \min _{w} L(w) w=argminwL(w)

步骤如下:

  1. 随机选取一个 w 0 w^0 w0

  2. 计算 L L L w = w 0 w=w^{0} w=w0 的位置的微分,即 d L d w ∣ w = w 0 \left.\frac{d L}{d w}\right|_{w=w^{0}} dwdLw=w0 ,意义就是切线斜率

  3. 根据斜率的大小来增加或者减小 w w w 的值

    • 斜率大于0则 w w w 左移减小
    • 斜率小于0则 w w w 右移增大

    w w w 移动的step size取决于两点

    • d L d w \frac{d L}{d w} dwdL 的大小,微分值越大, w w w 移动越多,反之越小
    • η \eta η (learning rate)的大小,学习率越大, w w w 更新的幅度越大
  4. 计算移动后 w 1 w^1 w1 的微分值

  5. 重复步骤2、3、4,直到微分为0,找到local minima,此时可能图像中可能会出现比这个点更小的值为global minima

    但在linear regression上,是没有local minima的

李宏毅机器学习2-回归_第4张图片

有两个参数的情况

推广到两个参数: w ∗ , b ∗ = arg ⁡ min ⁡ w , b L ( w , b ) w^{*}, b^{*}=\arg \min\limits_{w, b}L(w, b) w,b=argw,bminL(w,b)

步骤如下:

  1. 随机选取两个初始值 w 0 w^0 w0 b 0 b^0 b0

  2. 计算在这两个点上的偏微分 ∂ L ∂ w ∣ w = w 0 , b = b 0 \left.\frac{\partial L}{\partial w}\right|_{w=w^{0}, b=b^{0}} wLw=w0,b=b0 ∂ L ∂ b ∣ w = w 0 , b = b 0 \left.\frac{\partial L}{\partial b}\right|_{w=w^{0}, b=b^{0}} bLw=w0,b=b0

  3. 更新 w 0 w_0 w0 b 0 b_0 b0

    w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^{1} \leftarrow w^{0}-\left.\eta \frac{\partial L}{\partial w}\right|_{w=w^{0}, b=b^{0}} w1w0ηwLw=w0,b=b0 b 1 ← b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^{1} \leftarrow b^{0}-\left.\eta \frac{\partial L}{\partial b}\right|_{w=w^{0}, b=b^{0}} b1b0ηbLw=w0,b=b0

  4. 重复步骤2、3

这里的gradient就是梯度 ∇ L = [ ∂ L ∂ ψ ∂ L ∂ b ] gradient  \nabla L=\left[\begin{array}{l}\frac{\partial L}{\partial \psi} \\ \frac{\partial L}{\partial b}\end{array}\right]_{\text {gradient }} L=[ψLbL]gradient 

L ( w , b ) L(w, b) L(w,b) 图像中

李宏毅机器学习2-回归_第5张图片

  • 颜色代表loss的值,越偏蓝色表示loss越小,越偏红色表示loss越大
  • 计算得到的 ∂ L ∂ b \frac{\partial L}{\partial b} bL ∂ L ∂ w \frac{\partial L}{\partial w} wL 组成的vector向量,是图中的红色箭头的方向,也是等高线的法线方向。

在linear regression里,loss function实际上是convex的,是没有local optimal,随便找一个点,根据gradient descent最终找出来的,都会是同一组参数,就不会出现下图这种情况

李宏毅机器学习2-回归_第6张图片

计算 w w w b b b的偏微分

L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − 1 ) \begin{gathered} L(w, b)=\sum_{n=1}^{10}\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)^{2} \\ \frac{\partial L}{\partial w}=\sum_{n=1}^{10} 2\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)\left(-x_{c p}^{n}\right) \\ \frac{\partial L}{\partial b}=\sum_{n=1}^{10} 2\left(\widehat{y}^{n}-\left(b+w \cdot x_{c p}^{n}\right)\right)(-1) \end{gathered} L(w,b)=n=110(y n(b+wxcpn))2wL=n=1102(y n(b+wxcpn))(xcpn)bL=n=1102(y n(b+wxcpn))(1)

使用训练集和测试集的平均误差来验证模型的好坏

训练集的平均误差为31.9

李宏毅机器学习2-回归_第7张图片

测试集的平均误差为35.0

李宏毅机器学习2-回归_第8张图片

更复杂的模型: x c p x_{cp} xcp 的一元n次线性模型

为了进一步优化,重新设计模型

( x c p ) 2 (x_{cp})^2 (xcp)2 的模型

李宏毅机器学习2-回归_第9张图片

( x c p ) 3 (x_{cp})^3 (xcp)3 的模型

李宏毅机器学习2-回归_第10张图片

( x c p ) 4 (x_{cp})^4 (xcp)4 的模型

李宏毅机器学习2-回归_第11张图片

( x c p ) 5 (x_{cp})^5 (xcp)5 的模型

李宏毅机器学习2-回归_第12张图片

过拟合现象

如果我们令高次项的系数 w i w_i wi 为0,则可以将高次项转化为低次项,如图所示的高次式将低次式包含在内。因此可以解释随着次数的增加在训练集上的表现的Average Error是不断减小的
李宏毅机器学习2-回归_第13张图片

但是在testing data上,model从第三次开始,error非但不会减小,反而会暴增

李宏毅机器学习2-回归_第14张图片

复杂的model在training上有好的结果,而在testing的结果反而更差,这种情况被称为Overfitting过拟合

重新设计model

当我们选出更多只的宝可梦时,发现CP值还受物种 x s x_s xs的影响

李宏毅机器学习2-回归_第15张图片

将 4个物种的线性模型合并到一个线性模型中重新设计:

 if  x s =  Pidgey  : y = b 1 + w 1 ⋅ x c p  if  x s =  Weedle  : y = b 2 + w 2 ⋅ x c p  if  x s =  Caterpie  : y = b 3 + w 3 ⋅ x c p  if  x s =  Eevee  : y = b 4 + w 4 ⋅ x c p \begin{array}{ll} \text { if } x_{s}=\text { Pidgey }: & y=b_{1}+w_{1} \cdot x_{c p} \\ \text { if } x_{s}=\text { Weedle }: & y=b_{2}+w_{2} \cdot x_{c p} \\ \text { if } x_{s}=\text { Caterpie }: & y=b_{3}+w_{3} \cdot x_{c p} \\ \text { if } x_{s}=\text { Eevee }: & y=b_{4}+w_{4} \cdot x_{c p} \end{array}  if xs= Pidgey : if xs= Weedle : if xs= Caterpie : if xs= Eevee :y=b1+w1xcpy=b2+w2xcpy=b3+w3xcpy=b4+w4xcp

改写成Linear model

李宏毅机器学习2-回归_第16张图片

分别得到了在training data和testing data上测试的结果:

李宏毅机器学习2-回归_第17张图片

但观察图中有点还是不能正好fit在直线上

加入更多的input

李宏毅机器学习2-回归_第18张图片

将血量(HP)、重量(Weight)、高度(Height)也加入到模型中
 if  x s =  Pidgey  : y ′ = b 1 + w 1 ⋅ x c p + w 5 ⋅ ( x c p ) 2  if  x s =  Weedle  : y ′ = b 2 + w 2 ⋅ x c p + w 6 ⋅ ( x c p ) 2  if  x s =  Pidgey  : y ′ = b 3 + w 3 ⋅ x c p + w 7 ⋅ ( x c p ) 2  if  x s =  Eevee  : y ′ = b 4 + w 4 ⋅ x c p + w 8 ⋅ ( x c p ) 2 \begin{array}{ll} \text { if } x_{s}=\text { Pidgey }: & y^{\prime}=b_{1}+w_{1} \cdot x_{c p}+w_{5} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Weedle }: & y^{\prime}=b_{2}+w_{2} \cdot x_{c p}+w_{6} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Pidgey }: & y^{\prime}=b_{3}+w_{3} \cdot x_{c p}+w_{7} \cdot\left(x_{c p}\right)^{2} \\ \text { if } x_{s}=\text { Eevee }: & y^{\prime}=b_{4}+w_{4} \cdot x_{c p}+w_{8} \cdot\left(x_{c p}\right)^{2} \end{array}  if xs= Pidgey : if xs= Weedle : if xs= Pidgey : if xs= Eevee :y=b1+w1xcp+w5(xcp)2y=b2+w2xcp+w6(xcp)2y=b3+w3xcp+w7(xcp)2y=b4+w4xcp+w8(xcp)2
写成线性模型
y = y ′ + w 9 ⋅ x h p + w 10 ⋅ ( x h p ) 2 + w 11 ⋅ x h + w 12 ⋅ ( x h ) 2 + w 13 ⋅ x w + w 14 ⋅ ( x w ) 2 y=y^{\prime}+w_{9} \cdot x_{h p}+w_{10} \cdot\left(x_{h p}\right)^{2}+w_{11} \cdot x_{h}+w_{12} \cdot\left(x_{h}\right)^{2}+w_{13} \cdot x_{w}+w_{14} \cdot\left(x_{w}\right)^{2} y=y+w9xhp+w10(xhp)2+w11xh+w12(xh)2+w13xw+w14(xw)2
结果发生了过拟合的现象

李宏毅机器学习2-回归_第19张图片

重新判断function的好坏:正则化

Regularization则是在原来的Loss function的基础上加上了一项 λ ∑ ( w i ) 2 \lambda \sum\left(w_{i}\right)^{2} λ(wi)2

李宏毅机器学习2-回归_第20张图片

我们期待参数 w i w_i wi 越小甚至接近于0的function
因为参数值接近0的function,是比较平滑(当今天的输入 x i x_i xi Δ x i \Delta x_{i} Δxi变化的时候,如果 w i w_i wi 越小越接近于0,Output对输入的变化是比较不敏感的

λ值越大代表考虑smooth的那个regularization那一项的影响力越大,我们找到的function就越平滑

  • 当λ越大的时候,在training data上得到的error其实是越大的,因为当λ越大的时候,就越倾向于考虑w的值而越少考虑error的大小
  • 在training data上得到的error越大,但是在testing data上得到的error可能会是比较小的

李宏毅机器学习2-回归_第21张图片

不考虑b是因为b不会影响曲线的平滑

总结

  • Pokemon:原始的CP值极大程度的决定了进化后的CP值,但可能还有其他的一些因素。
  • Gradient descent:梯度下降的做法;后面会讲到它的理论依据和要点。
  • Overfitting和Regularization:过拟合和正则化,主要介绍了表象;后面会讲到更多这方面的理论

你可能感兴趣的:(李宏毅机器学习,机器学习,人工智能,深度学习)