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

梯度下降法函数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. VB6.0中WinSock控件属性和方法详解

    原文链接:http://liweibird.blog.51cto.com/631764/653134 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器 ...

  2. 严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关

    “-fstrict-aliasing”表示启用严格别名规则,“-fno-strict-aliasing”表示禁用严格别名规则,当gcc的编译优化参数为“-O2”.“-O3”和“-Os”时,默认会打开“ ...

  3. AIX 批量更改密码

    使用 chpasswd 可以使用 chpasswd 方便地更改单个或多个账户密码.这意味着不需要像平时一样在命令行上重复输入密码.尽管可以以交互方式使用 chpasswd,但是我建议以非交互方式使用它 ...

  4. linux 各项分布(个人记录)

    1.根目录文件 root:存放root用户的相关文件home:存放普通用户的相关文件bin :存放常用命令的目录sbin:要具有一定权限才可以使用的命令mnt :挂在光驱和软盘的目录boot:存放引导 ...

  5. Codeforces821A Okabe and Future Gadget Laboratory 2017-06-28 14:55 80人阅读 评论(0) 收藏

    A. Okabe and Future Gadget Laboratory time limit per test 2 seconds memory limit per test 256 megaby ...

  6. 3.window窗口

    window组件依赖于draggable.resizable.panel三个组件,这三个组件的特性window都可以使用: dialog组件依赖于window.linkbutton.

  7. js五道经典练习题--第三道实现购物车功能

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  8. whu暑期集训#1

    题号:SGU123----SGU131 Problem A: 题意:求斐波那契的前N项和.. 做法:直接模拟,注意得用long long Problem B: 题意:给定一个封闭的多边形,求一个点在不 ...

  9. 关于Java-枚举的总结

    枚举 枚举的定义 枚举也是JDK5.0的新特性. JDK5.0加入了一个全新类型的“类”——枚举类型. 为此引入了一个新的关键字enum. 可以这样来定义一个枚举类型: public enum Col ...

  10. 用指定的用户名和密码无法登录到该ftp服务器

    今天在win2008 R2 服务器上默认部署FTP站点时遇到了两个小问题,在网上找了好久资料后发现还是解决不了问题,最终找到问题的原因,在此共享给大家 1.Windows无法访问此文件夹.请确保输入的 ...