梯度下降法小结

关于机器学习的方法,大多算法都用到了最优化求最优解问题。梯度下降法(gradient descent)是求解无约束最优化问题的一种最常用的方法。它是一种最简单,历史悠长的算法,但是它应用非常广。下面作一下小总结:

一、梯度下降的初步认识

先理解下什么是梯度,用通俗的话来说就是在原变量的基础上每次迭代增加一定的量,比较各个变量下目标函数的大小。

例如有一个目标函数 y = 2χ,那么求目标函数的最小值,我们先给x赋一个值-5,然后每次给x加一个值(有正负方向的值),这样y每次都会有一个值,当值减小幅度达到一定精确度时停止,这是的x就是我们求的最优解。

是不是有一点感觉了,上面的例子比较简单,通常在求解最优解的时候,目标函数就是我们要优化的,找出满足目标函数的最优解。有时候目标函数是比较复杂的,这时候梯度下降法就比较有用了。

    

所谓梯度,如果目标函数可微,我们把目标函数的各个变量的偏导组成一个向量,既是梯度。主要是在优化过程中,我们怎么给变量增加还是减少的方向变量。如上例中我们怎么知道给x增加一定的量的,就是靠方向变量了。

二、梯度下降法的概念

梯度:即对变量的偏微分的组成的向量,(∂f/∂x1,∂f/∂x2 ...)。

步长:即每次迭代给变量增加的值,通常是一个值*梯度

梯度下降法就是沿着负方向迭代,直到找到最小值。

与之相反的是梯度上升法,沿着梯度正方向迭代。

梯度下降法的有缺点:

优点:实现比较简单,当目标函数是凸函数可以找到全局最优解。

缺点:容易陷入局部最优,靠近极小值时收敛速度会变慢,可能成之字下降,直线搜索可能会产生一些问题。

三、具体实现的算法例子

我们以逻辑回归的参数最大似然估计为例。

目标函数:求目标函数的极大值。我们要对式中的w进行参数估计。

(1)我们这里初始化w1,w2 , ... w都为0

(2)计算梯度,即各个w的偏导∂L(w)/∂w

  (3) gi+1= L(w)i+1-L(w)i   ,i表示第i次迭代,gi+1代表第i+1次的目标函数和第i次的差

(4)对变量进行迭代  wij=wi+1j+∂L(w)i/∂wj  ...

代入计算wij,再计算gi+1,若gi+1大于阈值,重复3、4,直至g小于阈值,既是我们要的最优解。

四、梯度下降算法的调优

1、步长。在设定步长的时候如果设置过大收敛较快但是可能错过最优解,步长太小收敛较慢。实际用法中可以根据样本进行决定。设置多组步长实验。

2、初始值。初始值不同不仅影响算法的收敛速度,还影响变量的是否陷入局部最优。需要多次用不同的初始值进行运算,选择目标最优的一组解。

3、特征归一化:由于不同的特征取值范围不一样,可能导致迭代很慢,可以参数归一化解决。

五、梯度下降算法的衍生

后面再补。。。

猜你喜欢

转载自www.cnblogs.com/haosu/p/11228368.html