美文网首页
逻辑回归的梯度下降法

逻辑回归的梯度下降法

作者: 学人工智能的菜菜 | 来源:发表于2020-05-07 18:34 被阅读0次

    坚持才是硬道理,剩下的交给时间

    由上一篇文章得知,逻辑回归的目标函数已经确定,现在是如何求出W,B的参数值。就相当于构建了模型。
    回顾一下,逻辑函数的目标函数
    f(W,b) = argmin-\prod_{i=0}^{n}y*log(P(y=1|xi,w,b)) *(1-y)*(1-P(y=0|xi,w,b))
    所以我们如果要求使得f(w,b)值最小的参数w和b,那就需要判断

    • 是否是凸函数
    • 最优化算法
      1、如果是凸函数,求出的是全局最优,如果是非凸函数,求的是局部最优。logistic回归,由于进行了sigmoid非线性映射就是非凸函数,所以可能在寻优的时候容易陷入局部最优。
      2、优化算法一般使用GD(梯度下降)或者SGD
      由于逻辑回归是非凸函数,不能直接用导数求出极值,很容易陷入局部最优,所以就需要优化算法来优化目标函数,那么梯度下降法就是一个很好的寻找全局最优的算法。下面来讲讲梯度下降法。

    百度 梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和[人工智能当中用来递归性地逼近最小偏差模型。
    顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)
    这就是目标函数要转换为求最小值,因为沿下降方向比较方便求解。

    梯度下降法最经典的应用
    举一个非常简单的例子,如求函数f(x) = x^2 的最小值。

    利用梯度下降的方法解题步骤如下:

    1、求梯度,\bigtriangledown = 2x
    2、初始化x的值
    3、向梯度相反的方向移动,如下
    x\leftarrow x-\gamma \bigtriangledown,其中,\gamma
    为步长。如果步长足够小,则可以保证每一次迭代都在减小,但可能导致收敛太慢,如果步长太大,则不能保证每一次迭代都减少,也不能保证收敛。步长的取值在0~1之间
    4、循环迭代步骤2,直到x的值变化到使得f(x)
    在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的f(x)基本没有变化,则说明此时f(x)已经达到局部最小值了。
    5、此时,输出x,这个x就是使得函数f(x)最小时的x的取值 。

    给出一个计算的方法


    image.png

    所以根据前面的梯度下降法的概念和应用,那么回到我们的逻辑回归,如果使用梯度下降法求导w和b的值呢?

    逻辑回归的梯度下降法

    步骤个上面的讲解步骤是一样的,先对目标函数进行求导,分别求出w和b的倒数,然后初始化w和b的值
    1、对目标函数进行求导流程如下所示:
    因目标函数是
    f(W,b) = argmin-\prod_{i=0}^{n}y*log(P(y=1|xi,w,b)) *(1-y)*(1-P(y=0|xi,w,b))
    其中P(y=1|xi,w,b) = \frac{1}{1+e^{-(W^{T}x+b))}} = \delta (W^{T}X+b)
    根据复合函数和幂函数复合求导公式:
    \delta (x)=\frac{1}{1+e^{x}}
    {\delta (x)}'=\delta (x).[1- \delta (x)]
    {(logx)}'= \frac{1}{x}
    根据上面两个函数可得,函数求导如下:
    \frac{\partial L(w,b)}{\partial (w)} = - \sum_{i=1}^{n}.yi.\frac{\delta (W^{T}X+b).(1-\delta (W^{T}X+b))}{\delta (W^{T}X+b)}.xi+(1-y).\frac{-\delta (W^{T}X+b).(1-\delta (W^{T}X+b))}{\delta (1-W^{T}X+b)}.xi
    = -\sum_{i=1}^{n}.yi.(1-\delta (W^{T}X+b)).xi+(yi-1).\delta (W^{T}X+b).xi
    =\sum_{i=1}^{n}(\delta (W^{T}X+b)-yi).xi
    同理可得
    \frac{\partial L(w,b)}{\partial (b)} = \sum_{i=1}^{n}(\delta (W^{T}X+b)-yi)
    使用GD优化算法步骤如下:
    1、初始化w',b'
    2、for t=1,2,3....
    3、迭代计算w,b
    w^{t+1} = w^{t}-\eta.\sum_{i=1}^{n}(\delta (W^{T}X+b)-yi).xi
    b^{t+1} = b^{t}-\eta.\sum_{i=1}^{n}(\delta (W^{T}X+b)-yi)
    以上是批量梯度下降法,就是每次都使用全部样本才更新参数。
    则梯度下降法有几个分类
    一、批量梯度下降法
    1.优点
    (1)迭代次数少
    若损失函数为凸函数,能够保证收敛到全局最优解;若为非凸函数,能够收敛到局部最优值(结果的准确度)
    2.缺点
    (1)训练速度慢(时间,每一次训练需要的时间)
    (2)需要内存大(空间)
    (3)不支持在线更新
    二、随机梯度下降法
    求解流程:
    for t =1....T
    shuffle(样本n)
    for i = 1....n
    w^{t+1} = w^{t}-\eta.(\delta (W^{T}X+b)-yi).xi
    b^{t+1} = b^{t}-\eta.(\delta (W^{T}X+b)-yi)
    每一次都是一个样本的更新。
    随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j求梯度
    1.优点
    训练速度快
    支持在线更新
    有几率跳出局部最优解
    2.缺点
    容易收敛到局部最优,并且容易被困在鞍点
    迭代次数多

    那么有没有办法折中呢,取GD和SGD的有点呢,有的就是mini-batch GD

    三、小批量梯度下降法(mini-batch GD)
    1.小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10。

    相关文章

      网友评论

          本文标题:逻辑回归的梯度下降法

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