梯度下降法

来源:互联网 发布:winscp连接被拒绝linux 编辑:程序博客网 时间:2024/05/17 23:02

梯度下降法


1、概念

    梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。它通过最小化误差的平方和寻找数据的最佳函数匹配,可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。


2、求解过程

    顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿递度上升方向求解极大值)。

其迭代公式为     

 ,

其中代表梯度负方向,

表示梯度方向上的搜索步长。

    梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标ak+1看做是的函数,然后求满足f(ak+1)的最小值的 即可。

    因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。


3、用途

    可以用于曲线拟合等问题,从而可以用于预测。


4、举例

① 一次函数线性拟合使用polyfit(x,y,1)

②多项式函数线性拟合使用 polyfit(x,y,n),n为次数

拟合曲线

x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:MATLAB程序如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];y=[1.75,2.45,3.81,4.80,7.00,8.60];p=polyfit(x,y,2)x1=0.5:0.5:3.0;y1=polyval(p,x1);plot(x,y,'*r',x1,y1,'-b')


计算结果为:

p =0.5614 0.8287 1.1560

即所得多项式为y=0.5614x^2+0.8287x+1.15560

截图:

 

具体实现拟合详情见链接:http://blog.csdn.net/sunkun2013/article/details/49761737

③非线性函数使用

Isqcurvefit(fun,x0,x,y)

a=nlinfit(x,y,fun,b0)

0 0
原创粉丝点击