台大李宏毅 机器学习 2020学习笔记(二):回归与过拟合

前言


        回归(regression)模型的输出值是一个数。股票预测,PM2.5预测,自动驾驶中方向盘角度的预测,宝可梦进化后的CP值预测等都是其应用案例。课程中老师依旧是用的他惯用的宝可梦来做的示范。在一定范围内,增加模型复杂度,可以提升模型性能,但是超出该范围就会出现过拟合。用正则化的方式,可以降低过拟合出现的可能。


线性回归


        这次回归的目标是找到一个function,我们输入宝可梦进化前的一些属性值,包括种类,体重、CP值等,然后可以较好的预测其进化后的 CP值(图引自老师PPT)

                                                      

  • 线性模型

        线性模型,即函数是线性的,统一表达式如下。其中,x是输入,也就是其特征(features) ,w是权值(weights),b是偏置(bias)

                                                                                          

        如果将所有输入x,叠成矩阵X,所有w和Y叠成列向量W和Y。然后再在X的每行行首添加一个值为1的元素,并且将W延长一个元素,那么上式将变成:

                                                                                                  

        用矩阵乘法代替循环可以提高效率。当输入只有一个时,线性模型就是我们熟悉的一元一次函数的一般式。即,y = b + w  xcp。现在训练数据有十个,图来自这里

                                                            

  • 损失函数(Loss function)

        损失函数是函数的函数,用于衡量参数的好坏。这里用一个类似均方根误差的函数L(w,b)来优化我们的线性回归函数,表示所有预测输出与正确答案差值的平方的和,乘以0.5是为了抵消求导后出现的2。

                                                                     

        矩阵表达式: 

                                                                                        

  •  模型训练-寻找最佳函数

        目标:最小化Loss Function

        方法:梯度下降

        条件:Loss可微分

        一维情况的损失函数图像如下图所示(引自老师PPT),直观的感受就是,在一个位置(w0处)要往下走。如果在w0处的梯度(一维的时候也是切线斜率)为负,则表示增大w可以降低Loss,如果梯度为正,则表示减小w可以降低Loss,可见w的变化方向是与梯度值反向的,所以梯度下降公式中是减去梯度。

                                          

        梯度下降公式: 更新参数的步长由学习率和当前梯度共同决定,n表示第n次迭代。

                                                                              

                                                                          

        带入L(w,b)表达式后可得:

                                                           

                                                           

        矩阵表达式:由于x的行数等于差值的行数,所以要转置后才能乘。

                                                                      

  • 局部最小值(local minimal)

            由数学知识,可微函数,导数为零的点是极值点,极值是一个局部的概念。在用梯度下降最小化损失函数的时候,就有可能会落入局部最小值点,由于那里梯度为零,参数会卡在那里,需要用一些特殊方法才能跳出。不过,线性回归的损失函数不存在局部最小值,因此用梯度下降找到的就是全局最小值。(图引自课程PPT)

       

  •  结果与预测

            训练结束后在训练集上的误差为31.9,在测试集上的误差为35.0。(图引自课程PPT)

                 


过拟合(over fiting)


        在训练集上表现很好,但是在测试集或者是应用中表现很差就是过拟合的表现,过拟合可能是因为参数过多或者是数据过少而引起的。直观的感觉就是,模型太过复杂,训练集太小,就会使模型“记住”训练集,然后只会“套题型”,无法举一反三,也就是泛化(generalization)能力不行。对于上述案例,如果适当增加模型参数,可以得到更好的结果,但是如果参数太多,就会出现过拟合。如下图所示(引自课程PPT),是针对上述案例,分别用1,2,3,4,5次模型,经过训练后,在测试集上的表现。可以发现开始时随着参数增多,模型在测试集上的表现在在变好,但是当模型越来越复杂,表现也就越来越烂。模型不是越复杂越好,要根据训练集的大小来选择合适的模型,当然,正则化(regularization),失活(dropout)等可以降低模型过拟合的可能。

                      

                   


L2-正则化(L2 regularization)


        L2正则化就是在惩罚w,在Loss function 里加入正则项,最小化L的时候,既考虑误差也考虑w,在减少误差的同时也让w减到很小。有较小的w的函数是比较平滑的,对于输入的变化不那么敏感。选择合适的λ,可以提升模型的泛化能力。

        注:bias不参与正则化,因为它不影响函数的平滑度。

                                                        


 参考 


         https://www.bilibili.com/video/BV1JE411g7XF?p=3

发布了28 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sinat_35907936/article/details/105075712
今日推荐