求解方法之梯度下降法

梯度下降法(最速下降法):

求解无约束最优化问题的一种最常用的方法,当目标函数是凸函数时,梯度下降法的解是全局最优解.一般情况下,其解不保证是全局最优解.梯度下降法的收敛速度也未必是很快的.

###############################Matlab###############################

%% 最速下降法图示

% 设置步长为0.1,f_change为改变前后的y值变化,仅设置了一个退出条件。

%syms x;%求f=x^2最小值

f=x^2;

step=0.1;x=2;k=0;       %设置步长,初始值,迭代记录数

f_change=x^2;         %初始化差值

f_current=x^2;        %计算当前函数值

ezplot(@(x,f)f-x.^2)     %画出函数图像

axis([-2,2,-0.2,3])      %固定坐标轴

hold on

while f_change>0.000000001  %设置条件,两次计算的值之差小于某个数,跳出循环

x=x-step*2*x;     %-2*x为梯度反方向,step为步长,!最速下降法!

f_change = f_current - x^2;      %计算两次函数值之差

f_current = x^2 ;            %重新计算当前的函数值

plot(x,f_current,‘ro‘,‘markersize‘,7) %标记当前的位置

drawnow;pause(0.2);

k=k+1;

end

hold off

fprintf(‘在迭代%d次后找到函数最小值为%e,对应的x值为%e\n‘,k,x^2,x)

############################## Matlab ########################################

%最速下降法,求解线性方程组Ax=b

x=初值;

r=b-A*x;

while norm(r)>1e-10

alpha=r’*r/r’*A*r;

x=x+alpha*r;

r=b-A*x;

end

时间: 2024-10-08 00:39:48

求解方法之梯度下降法的相关文章

机器学习:梯度下降法(调试、其它思考)

一.梯度下降法的调试 1)疑问 / 难点 如何确定梯度下降法的准确性? 损失函数的变量 theta 在某一点上对应的梯度是什么? 在更负责的模型中,求解梯度更加不易: 有时候,推导出公式后,并将其运用到程序中,但当程序运行时,有时对梯度的计算可能会出现错误,怎么才能发现这种错误? 2)梯度下降法的调试思路 关于导数的理解,参考:高数:关于导数: 调试思路: 如果机器学习的算法涉及到求解梯度,先使调试方式求出梯度,提前得到此机器学习算法的正确结果: 用数学推导方式(根据算法模型推导出的求解梯度的公

Python实现简单的梯度下降法

Python 实现简单的梯度下降法 机器学习算法常常可以归结为求解一个最优化问题,而梯度下降法就是求解最优化问题的一个方法. 梯度下降法(gradient descent)或最速下降法(steepest decent),是求解无约束最优化问题的一种最常用的方法. 梯度下降法实现简单,是一种迭代算法,每一步会求解目标函数的梯度向量. 本文分为理论和 Python 代码实践,希望实现简单的梯度下降法,相关代码已放在 GitHub 中. 理论 问题定义 那么什么是目标函数,在机器学习中这常常是一个损失

[机器学习入门篇]-梯度下降法

梯度下降法的作用是求到一种方案,使得拟合过程中的损失函数最小(结果可能只为局部最优值),除此之外还有最小二乘法等方法. 关于此方法详细的阐述参见:这里 梯度下降法初始点的选取分为随机选取初值和自动求取初值两种方法. 梯度下降法有两种具体的实现方法: 1.批量梯度下降法:每次向梯度的反方向移动(梯度为函数增长最快的方向,减少最快的方向为其反方向). 2.随机梯度下降法:轮流对分量求偏导,除求偏导的分量外其他分量设为0,向"偏导方向"的反方向移动. 关于这两种方法具体的阐述见:这里

【统计学习】随机梯度下降法求解感知机模型

1. 感知机学习模型 感知机是一个二分类的线性分类问题,求解是使误分类点到超平面距离总和的损失函数最小化问题.采用的是随机梯度下降法,首先任意选取一个超平面w0和b0,然后用梯度下降法不断地极小化目标损失函数,极小化过程中不是一次使所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降.假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度: 随机选取一个误分类点,对w和b进行更新: 其中n是步长,又称为学习率(learning rate),这样通过迭代可以使损失函数L(w,b)不

梯度下降法求解线性回归

梯度下降法 梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索.如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点:这个过程则被称为梯度上升法. 梯度下降的形象解释 现在有一个山谷,你想要到达山谷的最低端,你此时在A点,那么此时就可以利用梯度下降来找到最低点.你每次以你当前的方向为基准.选择一个最陡峭的方向,朝着山下

梯度下降法求解多元线性回归

线性回归形如y=w*x+b的形式,变量为连续型(离散为分类).一般求解这样的式子可采用最小二乘法原理,即方差最小化, loss=min(y_pred-y_true)^2.若为一元回归,就可以求w与b的偏导,并令其为0,可求得w与b值:若为多元线性回归, 将用到梯度下降法求解,这里的梯度值w的偏导数,利用目标公式,loss如下: 对其求偏导,公式如下: 其中x表示为(n+1)行m列,有n个属性,m个样本,最后一行值为1给偏差的:y表示m行1列为m个样本的值: w表示(n+1)行1列为n个w对应属性

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成本下,如何使利润最大化"等.最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称.随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优

机器学习之梯度下降法---梯度下降法分析

梯度下降法的基本思想是函数沿着其梯度方向增加最快,反之,沿着其梯度反方向减小最快.在前面的线性回归和逻辑回归中,都采用了梯度下降法来求解.梯度下降的迭代公式为: θj=θj−α∂J(θ)∂θj 在回归算法的实验中,梯度下降的步长α为0.01,当时也指出了该步长是通过多次时间找到的,且换一组数据后,算法可能不收敛.为什么会出现这样的问题呢?从梯度下降法的出发点可以看到,算法指出了行进的方向,但没有明确要行进多远,那么问题就来了,步子太小,走个一千一万年都到不了终点,而步子太大,扯到蛋不说,还可能越

逻辑回归(logistic-regression)之梯度下降法详解

引言 逻辑回归常用于预测疾病发生的概率,例如因变量是是否恶性肿瘤,自变量是肿瘤的大小.位置.硬度.患者性别.年龄.职业等等(很多文章里举了这个例子,但现代医学发达,可以通过病理检查,即获取标本放到显微镜下观察是否恶变来判断):广告界中也常用于预测点击率或者转化率(cvr/ctr),例如因变量是是否点击,自变量是物料的长.宽.广告的位置.类型.用户的性别.爱好等等. 本章主要介绍逻辑回归算法推导.梯度下降法求最优值的推导及spark的源码实现. 常规方法 一般回归问题的步骤是: 1. 寻找预测函数