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

% f=x1-x2+2*x1^2+2*x1*x2+x2^2; 假设f等于

% x=[0;0];

% e=10^(-20);

syms x1 x2 m; %m为学习率

d=-[diff(f,x1);diff(f,x2)] %分别求x1和x2的偏导数,即下降的方向

% - 4*x1 - 2*x2 - 1

% 1 - 2*x2 - 2*x1

flag=1; %循环标志

k=0; %迭代次数

while(flag)

d_temp=subs(d,x1,x(1)) ; %分别对x1,x2求一阶偏导数值

%先把x1带入二阶导函数

d_temp=subs(d_temp,x2,x(2)); %再把x2带入1阶导函数

%以上求出1阶偏导数在x1,x2的函数值

nor=norm(d_temp)%范数 求出此时的偏导数范数

if(nor>=e) %因为在局部最优点偏导数接近0,所以拿来和误差比较

x_temp=x+m*d_temp ; %改变初始点x的值

% 开始迭代x的路径,而且此路径和 该点到数值有关

f_temp=subs(f,x1,x_temp(1)); %将改变后的x1和x2代入目标函数

f_temp=subs(f_temp,x2,x_temp(2))

%分别把更新后的x1,x2带代入 f

h=diff(f_temp,m) %代入含有rate m的x1,x2后的f 对m求导

%此时 是关于m的一元函数,g(m)与f不同,是由(x1,x2)处梯度和f 产生,找到g(m)的最小值,如果最小值不是梯度近似为0,则进行下一次迭代

m_temp=solve(h) ; %求方程,得到当次m 。找出极值

x=x+m_temp*d_temp ;%更新起始点x

%正式求出m并带入 迭代x的方程,求出第二个点

k=k+1 %迭代次数更新

else

flag=0;

end

end

ender=double(x); %此时是满足条件的更新后的 x

end

测试

syms x1 x2;

f=(x1-2)^2+2*(x2-1)^2; %f可以为任意可微的函数

x=[1;3];

e=10^(-20);

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

原文:https://www.cnblogs.com/china520/p/11615225.html

梯度下降matlab程序,梯度下降法 matlab实现相关推荐

  1. 最小二乘法、迭代优化、坐标轴下降法(Coordinate Descent, CD)、坐标下降和梯度下降对比、梯度下降法/最速下降法

    最小二乘法.迭代优化.坐标轴下降法(Coordinate Descent, CD).坐标下降和梯度下降对比.梯度下降法/最速下降法 目录

  2. 梯度下降法和随机梯度下降法的区别

    这几天在看<统计学习方法>这本书,发现 梯度下降法 在 感知机 等机器学习算法中有很重要的应用,所以就特别查了些资料.  一.介绍 梯度下降法(gradient descent)是求解无约 ...

  3. 梯度下降法和随机梯度下降法

    1. 梯度 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度.比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y) ...

  4. 梯度下降算法_批梯度下降法,Minibatch梯度下降法和随机梯度下降法之间的区别...

    什么是梯度下降法? 梯度下降法是一种机器学习中常用的优化算法,用来找到一个函数(f)的参数(系数)的值,使成本函数(cost)最小. 当参数不能解析计算时(如使用线性代数),并且必须通过优化算法搜索时 ...

  5. 大白话5分钟带你走进人工智能-第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6)...

                                第十一节梯度下降之手动实现梯度下降和随机梯度下降的代码(6) 我们回忆一下,之前咱们讲什么了?梯度下降,那么梯度下降是一种什么算法呢?函数最优化 ...

  6. 梯度下降和随机梯度下降为什么能下降?

     梯度下降和随机梯度下降为什么能下降? 标签: 深度学习梯度下降SGD 2016-02-22 19:19 663人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: Deep Learning ...

  7. 梯度、梯度下降,随机梯度下降

    一.梯度gradient http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6 在标量场f中的一点处存在一个矢量G,该矢量方向为f在该点处变化率最大的方向,其 ...

  8. 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)

    目录 梯度 梯度下降 常用的梯度下降算法(BGD,SGD,MBGD) 梯度下降的详细算法 算法过程 批量梯度下降法(Batch Gradient Descent) 随机梯度下降法(Stochastic ...

  9. 【stanford】梯度、梯度下降,随机梯度下降

    一.梯度gradient http://zh.wikipedia.org/wiki/%E6%A2%AF%E5%BA%A6 在标量场f中的一点处存在一个矢量G,该矢量方向为f在该点处变化率最大的方向,其 ...

  10. 梯度下降和随机梯度下降

    梯度下降和随机梯度下降 目标函数 大多数机器学习或者深度学习算法都涉及某种形式的优化. 优化指的是改变 以最小化或最大化某个函数 f(x) 的任务. 我们通常以最小化 f(x) 指代大多数最优化问题. ...

最新文章

  1. Web开发领域最热门的话题之混搭
  2. spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0
  3. 百度智能云开物再收“一个奖状”
  4. 工作289:父子组件传值控制弹窗关闭
  5. mysql rsync复制,mysql复制又同步
  6. c语言作业ce是什么错误代码,[求助]C语言实现ce搜索功能的两道题
  7. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
  8. 75 ----平面二次曲线方程的化简、移轴变换、转轴变换、伸缩变换
  9. 我常去的编程技术网站[最近更新:2011.07.10
  10. Elasticsearch版本客户端与服务端版本不一致问题
  11. 程序员也要学英语——印欧语音变规律总结
  12. 测试大佬带你揭秘功能测试的内幕
  13. N维数组( ndarray)
  14. Cluster analysis :Basic Concepts and Algorithms -- Part 1 Overview
  15. 基于STM32的Flash擦除方式
  16. 安装centos7遇到问题记录:nouveau xxx unknown chipset
  17. 泰拉瑞亚服务器插件注册,泰拉瑞亚服务器 House 圈地教程(Tshock 插件)
  18. 基于java的springboot疫情下社区健康评估系统毕业设计springboot开题报告
  19. Android App开发实战项目之模仿美图秀秀的抠图工具(附源码和演示视频 简单易懂 可直接使用)
  20. 守护石谈学习Java之路

热门文章

  1. 高级前端面试100问
  2. SRS流媒体服务器SDP解析流程
  3. [简单教程]java下扫号器的制作
  4. python无限循环通过while保留字构建_Python学习笔记(四)
  5. 关于VS编译DevExpress默认产生几个多余的多国语言包的问题解决
  6. 通过Gson解析Json数据
  7. 黄静致华硕计算机总公司董事长的一封信
  8. 【Linux】创建文件链接(ln | 符号链接和硬链接)
  9. highchart给滑块配置滚动条
  10. 由于之前的分页链接url不规范,导致百度爬虫搜索到死链接