梯度下降法是一个最优化算法,通常也称为最速下降法。
最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。
最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。
可以用于求解非线性方程组。
![](https://images2015.cnblogs.com/blog/517519/201611/517519-20161115211414826-1863939243.jpg)
举一个非常简单的例子,如求函数
f(x) = x^2 的最小值。
利用梯度下降的方法解题步骤如下:
1、求梯度,
▽ = 2x
2、向梯度相反的方向移动
,如下x = x - v·▽,其中,
![](http://f.hiphotos.baidu.com/baike/s%3D9/sign=73cdb460a86eddc422e7b8ca392a1a/908fa0ec08fa513d5baef65b386d55fbb2fbd92b.jpg)
v
为步长。如果步长足够小,则可以保证每一次迭代都在减小,但可能导致收敛太慢,如果步长太大,则不能保证每一次迭代都减少,也不能保证收敛。
![](https://images2015.cnblogs.com/blog/517519/201611/517519-20161115211451592-1220521721.jpg)
当x=1的时候,斜率是2,x = 1-0.001×2 = 1-0.002 = 0.998,逐渐接近0
当x=1的时候,斜率是-2,x = -1+0.001×2 = -1+0.002 = -0.998,逐渐接近0
3、循环迭代步骤2,直到x的值变化到使得
f(x) 在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的
f(x)基本没有变化,则说明此时
f(x)已经达到局部最小值了。
4、此时,输出x,这个
就是使得函数
![](http://g.hiphotos.baidu.com/baike/s%3D9/sign=72fb84642a2eb938e86d76c3d57e39/38dbb6fd5266d0162f3819ad922bd40735fa3515.jpg)
f(x)
最小时的x的取值 。