01_Regression回归——李宏毅

Machine Learning 

        所谓机器学习到底是什么呢?顾名思义,就是机器具有学习的能力。事实上,机器学习概括来说可以用一句话来描述:机器学习就是让机器具备寻找一个函数式的能力。

        Machine Learning  ~= Looking for Function 这件事可以用很多例子来证明。

         1.在做语音识别的时候,目的就是寻找一个解析声音讯号的函数式,该函数式的输入为声音讯号,输出为声音讯号的具体文本内容。

        2.在做图像识别的时候,目的就是寻找一个“图片解析器”的函数式,该函数式的输入为图片的信息,输出为图片的内容是什么。

        3.AlphaGo,让机器学会下围棋,其实也可以看作是函数式,函数式的输入为棋盘上黑白棋的位置,输出则为下一步落子的位置。

Different types of Functions

 寻找的函数式不同,机器学习的类别也有所不同。

       Regression回归

         Regression回归的意思是说,假设我们今天要找一个函数式,他的输出是一个数值,是          一个scalar(标量),那这样的任务就称之为Regression回归。

          假设我们要预测未来某时间PM2.5的值,我们要做的就是让机器寻找到一个函数式f,函数式f的输入可以是各种与PM2.5有关的系数(如今天的PM2.5数值,温度,臭氧浓度等),函数式的输出是明天PM2.5的值(具体数值),相当于是在做数学中的填空题,输出为一个具体的数值,这种任务叫做Regression回归。

        Classification分类

        除了Regression回归以外,另外一种耳熟能详的机器学习任务叫做Classification分类,那Classification分类就相当于是机器在做选择题。分类的目标是要求机器从人类事先准备好的若干种类别(class)中选择出正确的类别。

        举个例子来说, 现在每个人都有自己的邮箱。那我们可以设计一个函数式,来帮我们侦测收到的邮件是否为垃圾邮件?那么该函数式的输入就是一封邮件,输出就是 “垃圾邮件” or “非垃圾邮件”,那么机器的任务就是从输出的两个class中做出正确的判断,这种任务就叫做Classification分类,那分类任务不仅仅是二分类,也可以是多分类(AlphaGo从19*19的棋盘上选择落子的位置)

        其实,机器学习不仅仅包括Regression回归和Classification分类这两大类任务,除此之外,还有Structured Learning等。所谓Structured Learning,也就是说,机器不止要会做填空题和选择题,还要产生一个有结构的东西,比如:写作文。

        Case Study(以预测youtube流量举例描述机器寻找函数式的过程)

        假设我们对youtube上的频道每日观看次数比较关心,想要对频道每日观看次数进行预测。那我们在youtube的后台上是可以看到很多和日流量相关的资讯,比如说订阅的人数,观看次数,点赞人数等。我们能不能根据频道上过去所有的相关资讯,来预测频道明天的观看次数?我们的目标就是寻找一个函数式,该函数式的输入为youtube后台相关的资讯,输出就是为未来某一天频道的观看次数。

        机器学习寻找这个函数式的过程,分为三个步骤:

        1. Function with unknown parameters

        

         第一个步骤,我们要写出一个带有未知参数的函数式,简单来说就是我们先预测一下这个函数式,它长什么样子。举例来说,我们先做一个初步的猜测,函数式如下:

         其中y表示我们要预测的东西,x表示今天的观看次数, w和b均为未知参数,是要通过训练资料去找出来的。

        这个带有未知参数的函数式(Function with unknown parameters),我们称之为model。

        假设我们要靠2月25号频道的观看次数 x1 来预测2月26号频道的观看人数  y ,那 x1 就叫做Feature(特征),而w和b是我们不知道的参数parameter,w叫做weight权重,b叫做bias偏差。

        2.Define Loss from train data 

        第二步,我们要定义一个东西,叫做Loss,Loss它也是一个funciton,这个function的输入是model里面的参数parameter,对上述的例子而言,参数就是w和b,所以Loss的输入就是w和b,是一个关于w和b的函数式。Loss存在的意义就是用来衡量model中参数parameter的好坏。 

        那Loss怎么来?将N笔中每一笔训练资料得出的预测值 y  与 真实值yhat 做差得到误差e,将每一笔训练资料的e求和,最终再除以训练资料笔数N,得到Loss-funciton。L越大,则代表这组参数越不好,L越小,则代表这组参数越好。

         其实,估计实际值与预测值之间有不同的方法,上述的方法是通过计算实际值与预测值之间绝对值的差距,这种计算差距的方法,叫做MAE(mean absolute error)。如果是将预测值与实际值相减 再求 平方的方法 叫做MSE(mean square error)。如果有一些任务,预测值和实际值代表的都是几率,一般使用cross-entropy loss。

        2.1.error surface

                我们通过调整w和b的不同组合,再通过训练资料去计算Loss。假设我们得到如下的等高线图。在这个等高线上面,越偏红色系,Loss越大,越偏蓝色系,Loss越小。Loss越小代表参数越好。在通过调整参数的不同组合下, 得到的Loss图,就称之为error surface。

        3.Optimization

        optimization所做的事就是一个寻找最优解的过程。我们知道,Loss越小,代表其参数越好。那如何找到当Loss最小时的参数值呢?

        我们用到的Optimization方法叫做Gradient Descent梯度下降法,为了简化起见,我们假设只有一个参数w。我们知道w不同,Loss也会不同,我们假设下图的曲线为error surface(由于只有一个参数w,所以是error surface是1D的)

         那如何去找Loss最小时对应的参数值呢?

        ①首先随机初始一个点 w0

        ②计算当w=w0时,w这个参数对Loss的微分值

         其实就是w0这点的切线斜率,如果说斜率是负的,则代表左边高,右边低,反正左边低,右           边高。

        ③如果左边高,右边低的话,就代表要将w往右移动,反之则将w往左移动。

           

        那每一次要移动多少,这取决于两件事:斜率大小 以及 学习率(Learning rate)

         那在上述过程后把w往右移动一步之后到达w1的位置,这一步的步伐大小就是斜率大小乘上学习率大小的结果,公式如下:

         接下来要做的事情就是反复以上的操作,不断的移动w,直到停下来。

        那什么情况下会停下来?往往有两种情况

        第一种就是你失去耐心了,假设你本来计划要更新w一百万次,但是更新了五十万次之后你迫不及待了。至于要更新几次,这其实也是一个超参数(hyper parameter)。

        第二种是理想上的情况,当我们不断的调整参数,知道参数在某个地方的梯度为0,乘以学习率还是等于0,所以你的参数就不会再次移动。

        但你可以能会发现,Gradient descent有一个巨大的问题,我们要找的值是Loss的global minima,但是这个过程中会受到local minima局部最小值的影响,当参数w更新为wT的时候,这个时候左右两边的Loss都比较高,梯度可能为0,会使得Gradient descent 不再运作,但他不是整个erros surface上的最低点。

        上述的例子是只有一个参数w的情况下,那如果有两个参数w和b呢?其实道理是一样的,只不过它的error surface是2D的。

          2D的error surface上的梯度下降法也没有什么不同,将每次w和b更新的方向结合起来,再结合斜率大小和学习率,就可以得到方向向量,如图中的红色箭头,就是参数更新的方向。

Linear Model

        

        通过一系列操作,我们找到了一组使得Loss值比较小的参数w = 0.97  b =0.1k,此时对应的Loss值为0.48k。但我们真正在意的是对未来某一天的观看人数的预测,预测如下:

         其实可以发现,蓝色的线不过是红色线的平移而已,这也很合理,因为你所得出的funciton 就是前一天的人数乘上0.97 再加上0.1k,得到的值就是隔天的观看人次。

        但其实真实的资料上有一个神奇的现象,就是它是有周期性的,它每隔七天都会呈现出相似的曲线。那么如果我们有一个模型,它不是只参考前一天的资料,而是参考前七天的资料,会有什么样的结果?其实,这就是你对这个问题的理解,也就是Domain Knowledge。

        所以我们更改模型,利用前7,28,56天的参考资料作为Feature,训练并得到新的模型。这样的模型有一个共同的名字,叫做Linear Model。

     

         

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值