梯度下降法、坐标下降法、牛顿迭代法

1 梯度下降法


2 坐标下降法

1.首先给定一个初始点,如 X_0=(x1,x2,…,xn); 
2.for x_i=1:n 
固定除x_i以外的其他维度 
以x_i为自变量,求取使得f取得最小值的x_i; 
end 
3. 循环执行步骤2,直到f的值不再变化或变化很小.

3 牛顿迭代法


牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。 
把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f’(x0)+(x-x0)^2*f”(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f’(x0)(x-x0)=0 设f’(x0)≠0则其解为x1=x0-f(x0)/f’(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f’(x(n))。

4 最小二乘法与梯度下降法区别

最小二乘是构建目标函数中的一种方法; 
梯度下降是求解最优目标函数中的一种方法。

对于变量个数为2-3个的目标函数,可以直接用方程组的方式求解出来,这也就是我们常见的狭义上的最小二乘法。 
对于变量个数多个的目标函数,这时,狭义的最小二乘法就难以胜任,而用梯度下降法求解就容易多了。

附录

梯度下降法matlab示例: 

function [k ender]=steepest(f,x,e)
    %梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[0;0]
    syms x1 x2 m; %m为学习率
    d=-[diff(f,x1);diff(f,x2)];  %分别求x1和x2的偏导数,即下降的方向
    flag=1;  %循环标志
    k=0; %迭代次数
    while(flag)
        d_temp=subs(d,x1,x(1));      %将起始点代入,求得当次下降x1梯度值
        d_temp=subs(d_temp,x2,x(2)); %将起始点代入,求得当次下降x2梯度值
        nor=norm(d_temp); %范数
        if(nor>=e) %梯度为0,说明达到极小点
            x_temp=x+m*d_temp;            %改变初始点x的值
            f_temp=subs(f,x1,x_temp(1));  %将改变后的x1和x2代入目标函数
            f_temp=subs(f_temp,x2,x_temp(2));
            h=diff(f_temp,m);  %对m求导,找出最佳学习率
            m_temp=solve(h);   %求方程,得到当次m
            x=x+m_temp*d_temp; %更新起始点x
            k=k+1;
        else
            flag=0;
        end
    end
    ender=double(x);  %终点
end
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

调用函数:

syms x1 x2;
f=(x1-1)^2+2*(x2-2)^2+x1;
x=[3;0];
e=10^(-20);
[k ender]=steepest(f,x,e)
 
 

    原文地址:http://blog.csdn.net/zkq_1986/article/details/52317258

    • 0
      点赞
    • 7
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值