梯度下降法

梯度下降法,基于这样的观察:如果实值函数 在点 处可微且有定义,那么函数 在 点沿着梯度相反的方向 下降最快。

因而,如果

对于 为一个够小数值时成立,那么 。

考虑到这一点,我们可以从函数 的局部极小值的初始估计 出发,并考虑如下序列 使得

因此可得到

如果顺利的话序列 收敛到期望的极值。注意每次迭代步长 可以改变。

,这里假设 定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线(水平集),即函数 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 值最小的点

.最速下降法的基本思想和迭代步骤

  最速下降法又称为梯度法,是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

你可能感兴趣的:(梯度下降法)