美文网首页机器学习机器学习程序员
《机器学习实战》第五章梯度上升算法的直观理解

《机器学习实战》第五章梯度上升算法的直观理解

作者: 工程师milter | 来源:发表于2016-12-15 16:52 被阅读3061次

    第五章讲的是Logistic 回归,作者提出了梯度上升算法,本文是对该算法的一个通俗易懂的解释,不需要任何梯度的知识就能理解,造福广大初学者。

    简单描述问题

    给定一个样本集,每个样本点有两个维度值(X1,X2)和一个类别值,类别只有两类,我们以0和1代表。数据如下所示:

    样本 X1 X2 类别
    1 -1.4 4.7 1
    2 -2.5 6.9 0
    ... ... ... ...

    机器学习的任务是找一个函数,给定一个数据两个维度的值,该函数能够预测其属于类别1的概率。
    假设这个函数的模样如下:
    h(x) =sigmoid(z)
    z = w0 +w1*X1+w2*X2
    问题转化成了,根据现有的样本数据,找出最佳的参数w(w0,w1,w2)的值

    迭代找出最佳的w

    为进一步简化问题,我们假设样本集只有上表中的两个。
    假设现在手上已经有一个wt,也就是有了一个函数h(x),那么我们可以把样本1和样本2的数据代进去,看看这个函数的预测效果如何,假设样本1的预测值是p1 = 0.8,样本2的预测值是:p2 = 0.4。

    函数在样本1上犯的错误为e1=(1-0.8)= 0.2,在样本2上犯的错误为e2=(0-0.4)= -0.4,总的错误E为-0.20(e1+e2)。如下表所示:

    样本 X1 X2 类别 预测值 error
    1 -1.4 4.7 1 0.8 0.2
    2 -2.5 6.9 0 0.4 -0.4
    ... ... ... ... ... ...

    现在我们要改进wt的值,使得函数在样本1和2上犯的总错误E减小。

    将wt的改进拆开来,就是分别改进它的三个分量的值,我们以w1为例。

    对于样本1:
    X1*e1=-1.4*0.2= -0.28
    -0.28告诉我们什么呢?它告诉我们,样本1的X1和e1是异号的,减小w1的值,能够减小函数在样本1上犯的错误。为什么呢?
    w1减小,则X1*w1增大(因为样本1的X1是负的),进而 z = w0 +w1*X1+w2*X2增大,又由于sigmoid函数是单调递增的,则h(x)会增大。当前的h(x)是0.8,增大的话就是在向1靠近,也就是减小了在样本1上犯的错。

    对于样本2:
    X1*e2=-2.5*-0.4= 1
    1告诉我们,样本2的X1和e2是同号的,增大w1的值,能够减小函数在样本2上犯的错误。为什么呢?
    w1增大,则X1*w1减小,进而 z = w0 +w1*X1+w2*X2减小,又由于sigmoid函数是单调递增的,则h(x)会减小。当前的h(x)是0.4,减小的话就是在向0靠近,也就是减小了在样本2上犯的错。

    现在的问题就是这样的,样本1说,要减小w1的值,这样函数对我的判断就更准确了,样本2说,要增大w1的值,这样函数对我的判断就更准确了。

    显然,样本1和样本2都只从自己的角度出发,对改进w1提出了各自不同意见,我们要综合它们的意见,以决定是增大w1还是减小w1,如下:

    -0.28+1 = 0.72

    最后的结果0.72是正的,说明,增大w1对函数的总体表现更有利。就是说,增大w1后,虽然在样本1上犯的错误会稍稍增大,但在样本2上犯的错误会大大减小,一个是稍稍增大,一个是大大减小,为了函数总体表现,肯定是增大w1的值啦。

    那么具体增加多大呢?我们可以用一个专门的参数alpha来控制。

    以上,只是对书中所用算法的一个形象直观的理解,没有任何严谨的数学证明,目的是让大家能够更感性地理解这个算法在做什么。

    2016.12.16补充


    刚才学习了第6章,发现这个规律具有普遍性。下面结合SMO算法进一步说明。
    设fXi 是函数在xi元素上的预测值,yi是样本的实际值,只能是+1或-1
    ei = yi - fXi

    则yi*ei<0,表明减小ai,会减小函数在样本xi上犯的错,为什么呢?
    我们知道fXi这个值中有这样一项

    ai*yi*K(xi,xi)

    K(xi,xi)是大于0的。
    我们考虑yi为+1的情况,则ei为负数,即fXi是大于yi的,当我们减小ai的值时,由于yi和K(xi,xi)都是大于0的,所以fXi也会减小,也就是说,fXi会朝着yi的方向移动。

    yi为-1时的分析与此类似。

    可见,yi*ei的符号确实能够告诉我们优化的方向。

    相关文章

      网友评论

      • iThinkCRL:梯度上升算法跟梯度下降算法的核心区别是在于前者error可为负、后者不可为负,这样理解对吗?
      • fa880a23e31d:转载可以么?会注明原文地址的
        工程师milter:@四月晴_04d8 请注明在文章的开头,谢谢!
      • Huisama:终于知道那个error是什么鬼了,感谢。
      • Jenson_:咋一会安卓一会js一会又机器学习。。你现在工作是啥
        工程师milter: @Jenson_ 不怕,只要学不死,就往死里学😏
        Jenson_:@milter 厉害了哥。机器学习算法数学要求很高。。
        工程师milter: @Jenson_ 安卓,准备转机器学习

      本文标题:《机器学习实战》第五章梯度上升算法的直观理解

      本文链接:https://www.haomeiwen.com/subject/kqkgmttx.html