赞
踩
转载地址:http://blog.csdn.net/nupt123456789/article/details/8281923
梯度下降法是一个一阶迭代优化算法,通常也称为最速下降法。我之前也没有关注过这类算法。近,听斯坦福大学的机器学习课程时,碰到了用梯度下降算法求解线性回归问题,于是看了看这类算法的思想。今天只写了一些入门级的知识。
我们知道,函数的曲线如下:
编程实现:c++ code
迭代步长alpha为什么要选择0.5??选择其他的值可以吗?它的取值与迭代的次数、收敛性及结果的准确性有何关系?如何选择alpha的值?
*******************
除了作者所说的alpha的取值,初值x0的取值应该怎么取?对于有多个峰值的优化函数,取得不好的话,会陷入局部极小值的。还有什么牛顿法,LM法又是什么意思??
*******************
WIKI给出的解释:
Gradient descent is a first-order iterative optimization algorithm. To find a local minimum of a function using gradient descent, one takes steps proportional to the negative of the gradient (or of the approximate gradient) of the function at the current point. If instead one takes steps proportional to the positive of the gradient, one approaches a local maximum of that function; the procedure is then known as gradient ascent.
从Wiki的解释可以看出:
1 对于单峰(或者说是凸函数)来说,梯度下降法是全局最优解,其他情况下是局部最优;
2 步长的选择可以通过线性搜索的方法获得
对于步长的选择可以用 backtracking line search(转载地址:http://www.cnblogs.com/fstang/p/4192735.html)
PS:下面的变量 t就是F在x处的更新公式中的步长,函数 f 就是我们优化的目标函数 ,即F。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。