梯度下降法的原理,本文不再描述,请参阅其它资料。

梯度下降法函数function [k ender]=steepest(f,x,e),需要三个参数f、x和e,其中f为目标函数,x为初始点,e为终止误差。输出也为两个参数,k表示迭代的次数,ender表示找到的最低点。

steepest.m:

function [k ender]=steepest(f,x,e)
%梯度下降法,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

调用示例1:

syms x1 x2;
f=(x1-2)^2+2*(x2-1)^2;
x=[1;3];
e=10^(-20);
[k ender]=steepest(f,x,e)

结果:

k =

    27

ender =

     2
1

调用示例2:

syms x1 x2;
f=x1-x2+2*x1^2+2*x1*x2+x2^2;
x=[0;0];
e=10^(-20);
[k ender]=steepest(f,x,e)

结果:

k =

    58

ender =

   -1.0000
1.5000

调用示例3:

syms x1 x2;
f=3/2*x1^2+1/2*x2^2-x1*x2-2*x1;
x=[0;0];
e=10^(-2);
[k ender]=steepest(f,x,e)

结果:

k =

     9

ender =

    0.9959
0.9877

在matlab中实现梯度下降法的更多相关文章

  1. 2.9 logistic回归中的梯度下降法(非常重要,一定要重点理解)

    怎么样计算偏导数来实现logistic回归的梯度下降法 它的核心关键点是其中的几个重要公式用来实现logistic回归的梯度下降法 接下来开始学习logistic回归的梯度下降法 logistic回归 ...

  2. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自网上的免费课程和一些经典书籍,免费课 ...

  3. (3)梯度下降法Gradient Descent

    梯度下降法 不是一个机器学习算法 是一种基于搜索的最优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 举个栗子 直线方程:导数代表斜率 曲线方程:导数代表切线斜率 导数可以代表方向, ...

  4. <反向传播(backprop)>梯度下降法gradient descent的发展历史与各版本

    梯度下降法作为一种反向传播算法最早在上世纪由geoffrey hinton等人提出并被广泛接受.最早GD由很多研究团队各自发表,可他们大多无人问津,而hinton做的研究完整表述了GD方法,同时hin ...

  5. 梯度下降法的python代码实现(多元线性回归)

    梯度下降法的python代码实现(多元线性回归最小化损失函数) 1.梯度下降法主要用来最小化损失函数,是一种比较常用的最优化方法,其具体包含了以下两种不同的方式:批量梯度下降法(沿着梯度变化最快的方向 ...

  6. 梯度下降法求解函数极大值-Matlab

    目录 目录题目作答1. 建立函数文件ceshi.m2. 这是调用的命令,也可以写在.m文件里3. 输出结果题外话 题目 作答 本文使用MATLAB作答 1. 建立函数文件ceshi.m functio ...

  7. 机器学习中梯度下降法原理及用其解决线性回归问题的C语言实现

    本文讲梯度下降(Gradient Descent)前先看看利用梯度下降法进行监督学习(例如分类.回归等)的一般步骤: 1, 定义损失函数(Loss Function) 2, 信息流forward pr ...

  8. 如何选择梯度下降法中的学习速率α(Gradient Descent Learning Rate Alpha)

    梯度下降算法的任务是寻找参数θ,使之能够最小化损失函数. 那么梯度下降法中的学习速率α应该如何选择呢?通常我们画出损失函数随迭代次数增加而变化的曲线. 可能会得到如下的一条曲线,x轴表示迭代次数,y轴 ...

  9. sklearn中实现随机梯度下降法(多元线性回归)

    sklearn中实现随机梯度下降法 随机梯度下降法是一种根据模拟退火的原理对损失函数进行最小化的一种计算方式,在sklearn中主要用于多元线性回归算法中,是一种比较高效的最优化方法,其中的梯度下降系 ...

随机推荐

  1. Win7 VS2013环境编译boost1_58_0

    备忘,发现好多不常用的东西不记笔记再想用要重新花时间找,所以试着开始记笔记,写入博客吧. 首先去官网下最新的版本 http://www.boost.org/ 写本文时boost最新版本为1_58_0, ...

  2. Failed to place enough replicas

    如果DataNode的dfs.datanode.data.dir全配置成SSD类型,则执行"hdfs dfs -put /etc/hosts hdfs:///tmp/"时会报如下错 ...

  3. WinSockets编程(六)select模式

    select模式的思想 创建FD_SET fd_all,并初始化FD_ZERO(&fd_all); Step1  初始时: Step2   加入一个套接字之后,比如FD_SET(sServer ...

  4. (转)C# 中使用分布式缓存系统Memcached

    转自:http://blog.csdn.net/devgis/article/details/8212917 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了 ...

  5. Foundation-NSOperation-NSInvocationOperation/NSBlockOperation/NSOperationQueue

    iOS多线程编程技术之NSThread.Cocoa NSOperation.GCD 线程之间的通信 iOS开发系列--并行开发其实很容易 GCD由浅入深学习 iOS多线程NSOperation/Que ...

  6. rsync+sersync+inotify实现服务器间文件同步之一

    rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...

  7. B - Avoiding a disaster

    Description Percy likes to be punctual. So much so that he always keeps three watches with him, so t ...

  8. Delphi IDHTTP控件:GET/POST 请求

    Delphi IDHTTP控件:GET/POST 请求   最近一直在使用IDHTTP,下面是一些关于 GET.POST 请求基本使用方法的代码 一.GET 请求 1 procedure GetDem ...

  9. LDAP常用属性及其描述

    属性 全名 描述 dn distinguished name 唯一标识名,类似于绝对路径,每个对象都有唯一标识名. 例如:uid=tester,ou=People,dc=example,dc=com ...

  10. Mirror--不同SQL Server版本使用的默认镜像端点加密算法不同

    在搭建镜像时遇到一个小问题,搭建镜像时报错,排查好半天,对证书/用户/登陆/连接授权等方面都做了逐一排查,未发现异常,最后生成镜像端点创建脚本时,才发现问题原因: 镜像主节点(10.50.4276)的 ...