matlab 强度梯度,梯度算法的Matlab实现
一、通过一个例子来看梯度下降法是怎么算的
函数
,求解其最小值
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实现相关推荐
- matlab dfp法,DFP算法及Matlab程序.docx
DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...
- matlab dfp法,DFP算法及Matlab程序(最新整理)
<DFP算法及Matlab程序(最新整理)>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.作 业 二用 ...
- matlab dfp法,DFP算法及Matlab程序Word版
<DFP算法及Matlab程序Word版>由会员分享,可在线阅读,更多相关<DFP算法及Matlab程序Word版(6页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版 ...
- matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀
作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...
- ukf实测信号的预测 matlab,ukf(无迹卡尔曼滤波)算法的matlab程序.
ukf(无迹卡尔曼滤波)算法的matlab程序. function [x,P]=ukf(fstate,x,P,hmeas,z,Q,R) % UKF Unscented Kalman Filt ...
- 神经网络算法二matlab实现,模糊神经网络算法之MATLAB实现.doc
模糊神经网络算法之MATLAB实现.doc 用户名 密码 提 交登录 注册 矿业人生的空间主页博客相册|个人档案 |好友 |i 贴吧 查看文章 [转] 模糊神经网络算法之 MATLAB 实现2011- ...
- pso算法matlab程序,基本PSO算法的matlab源程序
<基本PSO算法的matlab源程序>由会员分享,可在线阅读,更多相关<基本PSO算法的matlab源程序(2页珍藏版)>请在人人文库网上搜索. 1.主函数源程序( main. ...
- mcra matlab,噪声估计的算法及matlab实现毕业设计
噪声估计的算法及matlab实现毕业设计 (53页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 I噪声估计的算法及MATLAB实现毕业设计 ...
- matlab粒子群优化算法工具箱,MATLAB粒子群优化算法(PSO)
MATLAB粒子群优化算法(PSO) 一.介绍 粒子群优化算法(Particle Swarm Optimization Algorithm)是一种群智能算法,为了寻求全局最优.群体迭代,粒子在解空间追 ...
- 图论算法及其matlab实现 程序,图论算法及其matlab程序代码.doc
图论算法及其matlab程序代码.doc 图论算法及其MATLAB程序代码求赋权图GV,E,F中任意两点间的最短路的WARSHALLFLOYD算法设AAIJNN为赋权图GV,E,F的矩阵,当VIVJ∈ ...
最新文章
- Java 8 失宠!开发人员向 Java 11 转移...
- Git clone密码输入错误如何修改
- 详解XStream别名
- 客户端负载均衡及透明应用切换(TAF)tnsnames failover=on
- 在线制作GIF图片项目愿景与范围
- 数据结构课程设计-商品货架管理(C语言)
- 电容或电感的电压_电感电容等储能元件
- nssa和stub_OSPF里几个特殊区域(stub、Totally stubby、NSSA、Totally NSSA)总结
- Go语言 linux安装
- 推荐一款前端轻量级的toolTip插件-Tippy.js
- 关于Shine-hale
- 星号密码查看器原理完全揭秘
- Python分析中国大陆各直辖市及各省省会的平均工资与平均房价 课程报告+源码及数据
- 什么是java?以及java的初步简单学习
- Final Cut Pro 初识/常用快捷键
- 微信小程序--企业认证篇
- 第19节 HSRP-热备份路由协议原理及实验演示—基于Cisco Packet Tracer
- mysql连接异常:The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zo
- OTTO机器人之MAX7219点阵
- 【数据结构】各种数据结构的简单特点