一、通过一个例子来看梯度下降法是怎么算的

函数

,求解其最小值

1.求解梯度函数

2.给定初始点,计算出该点的梯度,开始迭代

3.计算初始点梯度模,判断是否满足终止条件

,如果满足,得到终点。如果不满足,求得当前最优的学习率,然后迭代。

function [k ender]=steepest(f,x,e)

% 梯度下降法函数function [k ender]=steepest(f,x,e),需要三个参数f、x和e,其中

% f为目标函数,x为初始点,e为终止误差。输出也为两个参数,k表示迭代的次数,

% ender表示找到的最低点。

%梯度下降法,f为目标函数(两变量x1和x2),x为初始点,如[3;4]

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)

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

其中的初始点设为[3;3],误差设为10^(-20);结果为迭代27次找到了[2;1]点为最值点。

二、学习率怎么求

学习率是通过损失函数求得到的。我在CSDN中看到一篇文章。有一个总结。

针对原始的样本(1,2)

针对线性回归的函数 y=kx

对应的损失函数是 y=2kx^2,

那我们的方向就是希望最小化这个损失函数,得到最终的k值,然后再代入到

原始的线性函数中,那具体应该如何在最小化损失函数的时候得到对应的k值呢?

方法一:对于损失函数求导,然后令导数等于0,得到对应的k值,有时候并不能直接解出来,并且这种方式可能是局部最优;

方法二:采用梯度下降与学习率的方法去求得最后的k值,明确梯度下降中的梯度

实际指的是损失函数的斜率,初始对于k设定一个值例如0.3,然后将k值与样本中的x值代入到损失函数中,得到损失函数的y值就是差距值,如果这个差距值符合要求就可以,但是太大的话可能就需要不断的去调节这个k值,那新的k值如何获得呢,对应的公式如下:

k1=k+at,

其中k1就是新的k值,k是初始设定的那个k值,而其中的a就是学习率,一般可以设定0.01,对于学习率的设定,如果设定的太小就会导致最终收敛太慢,而如果设定的太大的话,可能就会错过最小值点,因此需要设定合适,而其中的t就是对应算是函数的斜率,得到的方式就是对损失函数进行求导,然后将样本中的x值与初始k值代入到对应的其中得到斜率,得到新的k值,然后再将新的k值和x值代入到损失函数中,看下函数的差值是否在那个区间内。

总结:梯度下降其实就是斜率不断的下降,最终希望是斜率为0对应的就是在谷底的时候得到对应的k值,就是最好的k值。

原文:https://www.cnblogs.com/andrew-address/p/13055909.html

matlab 强度梯度,梯度算法的Matlab实现相关推荐

  1. matlab dfp法,DFP算法及Matlab程序.docx

    DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...

  2. matlab dfp法,DFP算法及Matlab程序(最新整理)

    <DFP算法及Matlab程序(最新整理)>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.作 业 二用 ...

  3. matlab dfp法,DFP算法及Matlab程序Word版

    <DFP算法及Matlab程序Word版>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序Word版(6页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版 ...

  4. matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀

    作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...

  5. ukf实测信号的预测 matlab,ukf(无迹卡尔曼滤波)算法的matlab程序.

     ukf(无迹卡尔曼滤波)算法的matlab程序. function [x,P]=ukf(fstate,x,P,hmeas,z,Q,R) % UKF   Unscented Kalman Filt ...

  6. 神经网络算法二matlab实现,模糊神经网络算法之MATLAB实现.doc

    模糊神经网络算法之MATLAB实现.doc 用户名 密码 提 交登录 注册 矿业人生的空间主页博客相册|个人档案 |好友 |i 贴吧 查看文章 [转] 模糊神经网络算法之 MATLAB 实现2011- ...

  7. pso算法matlab程序,基本PSO算法的matlab源程序

    <基本PSO算法的matlab源程序>由会员分享,可在线阅读,更多相关<基本PSO算法的matlab源程序(2页珍藏版)>请在人人文库网上搜索. 1.主函数源程序( main. ...

  8. mcra matlab,噪声估计的算法及matlab实现毕业设计

    噪声估计的算法及matlab实现毕业设计 (53页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 I噪声估计的算法及MATLAB实现毕业设计 ...

  9. matlab粒子群优化算法工具箱,MATLAB粒子群优化算法(PSO)

    MATLAB粒子群优化算法(PSO) 一.介绍 粒子群优化算法(Particle Swarm Optimization Algorithm)是一种群智能算法,为了寻求全局最优.群体迭代,粒子在解空间追 ...

  10. 图论算法及其matlab实现 程序,图论算法及其matlab程序代码.doc

    图论算法及其matlab程序代码.doc 图论算法及其MATLAB程序代码求赋权图GV,E,F中任意两点间的最短路的WARSHALLFLOYD算法设AAIJNN为赋权图GV,E,F的矩阵,当VIVJ∈ ...

最新文章

  1. Java 8 失宠!开发人员向 Java 11 转移...
  2. Git clone密码输入错误如何修改
  3. 详解XStream别名
  4. 客户端负载均衡及透明应用切换(TAF)tnsnames failover=on
  5. 在线制作GIF图片项目愿景与范围
  6. 数据结构课程设计-商品货架管理(C语言)
  7. 电容或电感的电压_电感电容等储能元件
  8. nssa和stub_OSPF里几个特殊区域(stub、Totally stubby、NSSA、Totally NSSA)总结
  9. Go语言 linux安装
  10. 推荐一款前端轻量级的toolTip插件-Tippy.js
  11. 关于Shine-hale
  12. 星号密码查看器原理完全揭秘
  13. Python分析中国大陆各直辖市及各省省会的平均工资与平均房价 课程报告+源码及数据
  14. 什么是java?以及java的初步简单学习
  15. Final Cut Pro 初识/常用快捷键
  16. 微信小程序--企业认证篇
  17. 第19节 HSRP-热备份路由协议原理及实验演示—基于Cisco Packet Tracer
  18. mysql连接异常:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zo
  19. OTTO机器人之MAX7219点阵
  20. 【数据结构】各种数据结构的简单特点

热门文章

  1. 求1-1/2+1/3-.....+1/99-1/100
  2. jqury实现异步文件上传
  3. 从C到C++ 番外const的用法
  4. html验证座机号码_js验证输入是否为手机号码或电话号码示例
  5. 棠玥寕在剧组被拍,典雅古装照流出!
  6. 【leetcode】开密码锁
  7. 清理C盘的几种方法,帮你解决C盘爆红的烦恼
  8. 微信小程序-增加水印(自定义内容)
  9. 无论多大年纪,请保留一份童真和幻想
  10. 给本本换硬盘,直接克隆旧盘!