下面这个例子也鲜明的示例了"之字"的下降,这个例子用梯度下降法求极小值。
再举另外一个非常简单的例子,如求函数
的最小值。
利用梯度下降的方法解题步骤如下:
1、求梯度,
2、向梯度相反的方向移动
,如下
3、循环迭代步骤2,直到
的值变化到使得
在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的
基于没有变化,则说明此时
已经达到局部最小值了。
4、此时,输出
,这个
就是使得函数
最小时的
的取值 。
MATLAB如下。
1
2
3
4
5
6
7
8
9
10
11
12
|
syms x;
f=x^2;
step=0.1;
x=2;
loss_changed=x^2;
loss=x^2;
while
loss_changed>0.000000001
x=x-step*2*x;
loss_changed = loss - x^2;
loss = x^2 ;
end
x
参考问下:http://leftnoteasy.cnblogs.com/
|