梯度下降法
来源:互联网 发布: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)
- 梯度下降法
- 梯度下降法
- 梯度下降法
- 梯度下降法
- 梯度下降法 简记
- 梯度下降法一
- 梯度下降法二
- 梯度下降法三
- 梯度下降法
- 梯度下降法实例
- 梯度下降法
- 梯度下降法
- 随机梯度下降法
- 梯度下降法
- 梯度下降法
- 梯度下降法
- 梯度下降法入门
- 梯度下降法
- Codefores 539A 字符串基础
- 最小生成树的prim
- ubuntu安装nodejs, nginx
- 《android 学习》二、Activity的四种启动模式
- 在Linux中创建静态库和动态库
- 梯度下降法
- 第六章 注解式控制器详解(5)——跟着开涛学SpringMVC
- iOS APP提交上架最新流程
- 关于universal-image-loader中的几种内存缓存策略
- Oracle BLOB内容批量导出
- AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
- Struts2核心和工作原理
- Fresco正传(1):总览
- PHP使用方法重载实现动态创建属性的get和set方法