坚持才是硬道理,剩下的交给时间
由上一篇文章得知,逻辑回归的目标函数已经确定,现在是如何求出W,B的参数值。就相当于构建了模型。
回顾一下,逻辑函数的目标函数
所以我们如果要求使得f(w,b)值最小的参数w和b,那就需要判断
- 是否是凸函数
- 最优化算法
1、如果是凸函数,求出的是全局最优,如果是非凸函数,求的是局部最优。logistic回归,由于进行了sigmoid非线性映射就是非凸函数,所以可能在寻优的时候容易陷入局部最优。
2、优化算法一般使用GD(梯度下降)或者SGD
由于逻辑回归是非凸函数,不能直接用导数求出极值,很容易陷入局部最优,所以就需要优化算法来优化目标函数,那么梯度下降法就是一个很好的寻找全局最优的算法。下面来讲讲梯度下降法。
百度 梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和[人工智能当中用来递归性地逼近最小偏差模型。
顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)
这就是目标函数要转换为求最小值,因为沿下降方向比较方便求解。
梯度下降法最经典的应用
举一个非常简单的例子,如求函数 的最小值。
利用梯度下降的方法解题步骤如下:
1、求梯度,
2、初始化x的值
3、向梯度相反的方向移动,如下
,其中,
为步长。如果步长足够小,则可以保证每一次迭代都在减小,但可能导致收敛太慢,如果步长太大,则不能保证每一次迭代都减少,也不能保证收敛。步长的取值在0~1之间
4、循环迭代步骤2,直到x的值变化到使得f(x)
在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的f(x)基本没有变化,则说明此时f(x)已经达到局部最小值了。
5、此时,输出x,这个x就是使得函数f(x)最小时的x的取值 。
给出一个计算的方法
所以根据前面的梯度下降法的概念和应用,那么回到我们的逻辑回归,如果使用梯度下降法求导w和b的值呢?
逻辑回归的梯度下降法
步骤个上面的讲解步骤是一样的,先对目标函数进行求导,分别求出w和b的倒数,然后初始化w和b的值
1、对目标函数进行求导流程如下所示:
因目标函数是
其中
根据复合函数和幂函数复合求导公式:
根据上面两个函数可得,函数求导如下:
同理可得
使用GD优化算法步骤如下:
1、初始化w',b'
2、for t=1,2,3....
3、迭代计算w,b
以上是批量梯度下降法,就是每次都使用全部样本才更新参数。
则梯度下降法有几个分类
一、批量梯度下降法
1.优点
(1)迭代次数少
若损失函数为凸函数,能够保证收敛到全局最优解;若为非凸函数,能够收敛到局部最优值(结果的准确度)
2.缺点
(1)训练速度慢(时间,每一次训练需要的时间)
(2)需要内存大(空间)
(3)不支持在线更新
二、随机梯度下降法
求解流程:
for t =1....T
shuffle(样本n)
for i = 1....n
每一次都是一个样本的更新。
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j求梯度
1.优点
训练速度快
支持在线更新
有几率跳出局部最优解
2.缺点
容易收敛到局部最优,并且容易被困在鞍点
迭代次数多
那么有没有办法折中呢,取GD和SGD的有点呢,有的就是mini-batch GD
三、小批量梯度下降法(mini-batch GD)
1.小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代,1<x<m。一般可以取x=10。