梯度下降法-gradient descent --实例解析

来源:互联网 发布:php 接口验证 编辑:程序博客网 时间:2024/06/05 08:51

from http://blog.csdn.net/coder_oyang/article/details/46544089

写作目的:发现很多机器学习算法中,多少涉及到迭代求解无约束函数的最值,故整理如下

梯度下降法是求解无约束最优化问题的一种常用算法,具有实现简单的优点;

  • 无约束最优化问题,因为求解问题无约束,所以,我们可以用一种试探的算法:一个个值的试探,在解空间内总是能找到最有解,这种算法其实暗含了迭代的思想,但是试探这种算法盲目性比较大,导致其时间复杂度较高,结合已知信息:函数沿着梯度方向函数值上升最快,那么要求最小值,我们是不是可以循着梯度的反方向呢?就是这种想法催生出梯度下降算法,顾名思义,他是沿着梯度下降方向迭代的一种寻优算法。
  • 要求解的无约束问题形式如下

既然是一种迭代算法,那么初始迭代点需要我们人为选取,设为不断迭代,更新x的值。目标函数值最小化,直到收敛为止。假设第 k迭代值为,那么第k+1次发迭代值的表达式:
...  
其中,表示步长,由一维搜索确定,即使
  • 举例

那么这样迭代涉及到一个问题,何时迭代终止?所以,给出迭代终止条件:
  • 梯度小于我们事先设定的一个正极小值的时候,停止迭代 —— 对应于本例中的情形一
  • 前后两次求得的函数值之间的差异小于我们设定的一个正极小值,同样停止迭代—— 对应于本例中的情形三
  • 前后两次求得的迭代变量之间的差异小于我们设定的一个正极小值,停止迭代
你会发现其中,迭代步长对迭代的影响,尤其是情形三,原来步子迈大了真的会扯着淡

总结:选初值,求梯度,用初始值以及其梯度迭代

说明:当函数是凸函数时候(如本例),梯度下降法的解是全局最优解,一般情形下,其解不能保证全局最优解。并且其收敛速度未必是很快的。



参考:统计学习方法,李航



0 0
原创粉丝点击