梯度下降法,基于这样的观察:如果实值函数 在点 处可微且有定义,那么函数 在 点沿着梯度相反的方向 下降最快。
因而,如果
对于 为一个够小数值时成立,那么 。
考虑到这一点,我们可以从函数 的局部极小值的初始估计 出发,并考虑如下序列 使得
因此可得到
如果顺利的话序列 收敛到期望的极值。注意每次迭代步长 可以改变。
,这里假设 定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线(水平集),即函数 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 值最小的点
.最速下降法的基本思想和迭代步骤最速下降法又称为梯度法,是1847年由著名数学家Cauchy 给出的。他是解析法中最古老的一
种,其他解析方法或是它的变形,或是受它的启发而得到的,因此它是最优化方法的基础。
设无约束问题中的目标函数f : Rn ® R1一阶连续可微。
最速下降法的基本思想是:从当前点xk出发,取函数f (x)在点xk处下降最快的方向作为我
们的搜索方向pk .由f (x)的Taylor 展式知
f (xk ) - f (xk + tpk ) = -tÑf (xk )T pk + o‖( tpk‖)
略去t的高阶无穷小项不计,可见取pk = -Ñf (xk )时,函数值下降得最多。于是,我们可以构造
出最速下降法的迭代步骤。
解无约束问题的的最速下降法计算步骤
第 1 步选取初始点x0,给定终止误差e > 0,令k := 0;
第 2 步计算Ñf (xk ),若‖Ñf (xk )‖£ e ,停止迭代.输出xk .否则进行第三步;
第 3 步取 pk = -Ñf (xk );
第 4 步进行一维搜索,求k t ,使得
0
( k k ) min ( k k )
k t
f x tp f x tp
3
+ = +
令 k 1 k k
k x + = x + t p ,k := k +1,转第2 步。
由以上计算步骤可知,最速下降法迭代终止时,求得的是目标函数驻点的一个近似点。
确定最优步长k t 的方法如下:
方法一:采用任一种一维寻优法
此时的f (xk - tÑf (xk ))已成为步长t的一元函数,故可用任何一种一维寻优法求出k t ,即
( k 1) ( k ( k )) min ( k ( k ))
k t
f x + = f x - t Ñf x = f x -tÑf x
方法二:微分法
因为
tf (xk - tÑf (xk )) = j(t)
所以,一些简单情况下,可令
j' (t) = 0
以解出近似最优步长k t 的值。
代码:
%% 最速下降法 %% %% 初始化 %% x=[1;3]; error=10^(-20); k=0; flag=0; %%%%%%%%%%% syms x1 x2 L m f=(x1-2)^2+2*(x2-1)^2; %% 目标函数 %% d=-[diff(f,x1);diff(f,x2)]; %% 下降方向 %% while flag==0 temp=subs(d,x1,x(1)); temp=subs(temp,x2,x(2)); tt=sqrt(temp(1)^2+temp(2)^2); tt=double(tt); if tt>error m=x+L*temp; g=subs(f,x1,m(1)); g=subs(g,x2,m(2)); g=diff(g,L); L1=solve(g); x=x+L1*temp; k=k+1; else k x=double(x) flag=1; end end
k =
27
x =
2
1