使用matlab用优化后的梯度下降法求解达最小值时参数

matlab可以用

-Conjugate gradient

-BFGS

-L-BFGS

等优化后的梯度方法来求解优化问题。当feature过多时,最小二乘计算复杂度过高(O(n**3)),此时

这一些列优化版梯度下降算法就成为了解优化问题的更优选择。

它们的优点为:

不需要像对原始梯度下降那样手动选择学习速率α

一般比梯度下降收敛速度要快

相应的缺点为:比梯度下降要复杂得多

好在,我们可以直接用matlab内置函数进行计算。

例子如下:

我们需要输入cost function J 及其偏导数:

function [jVal, gradient]
           = costFunction(theta)

jVal =
(theta(1)-5)^2 + ...           (theta(2)-5)^2;

gradient = zeros(2,1);

gradient(1)
= 2*(theta(1)-5);
gradient(2) = 2*(theta(2)-5);

之后设置θ初始值及收敛条件

options = optimset(‘GradObj’, ‘on’, ‘MaxIter’, ‘100’);

initialTheta = zeros(2,1);

之后就可以通过调用

[optTheta, functionVal, exitFlag] ...

= fminunc(@costFunction, initialTheta, options);

来求解最优问题了。

注:返回值中的exitFlag表示是否收敛

时间: 2024-11-03 21:56:33

使用matlab用优化后的梯度下降法求解达最小值时参数的相关文章

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

线性回归形如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对应属性

『科学计算_理论』优化算法:梯度下降法&牛顿法

梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通常用一个三维图来展示,迭代过程就好像在不断地下坡,最终到达坡底.为了更形象地理解,也为了和牛顿法比较,这里我用一个二维图来表示: 懒得画图了直接用这个展示一下.在二维图中,梯度就相当于凸函数切线的斜率,横坐标就是每次迭代的参数,纵坐标是目标函数的取值.每次迭代的过程

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

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

梯度下降法求解线性回归

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

最小二乘参数估计---梯度下降法求解参数的sas代码实现

理论和公式请看网易公开课中Andrew Ng的机器学习,或者coursera中Andrew Ng的机器学习 对于多元线性回归要拟合最好的直线,要使得误差平方和最小,课本上的方法都是求偏导,并使其为0,然后求解线性方程组. 但是还有很多其他方法可以达到上述效果,Andrew在大样本和小样本的情况下给出了两种梯度下降的方法.我这里实现了他的第一种 步长参数选取为0.03,初始值选取为0 0.数据集使用的是sas内置的sashelp.class数据集. 因为变量单位不同,所以都在scaing feat

tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)

iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This function shows how to use TensorFlow to # create a soft margin SVM # # We will use the iris data, specifically: # x1 = Sepal Length # x2 = Petal Width

tensorflow实现svm多分类 iris 3分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)

# Multi-class (Nonlinear) SVM Example # # This function wll illustrate how to # implement the gaussian kernel with # multiple classes on the iris dataset. # # Gaussian Kernel: # K(x1, x2) = exp(-gamma * abs(x1 - x2)^2) # # X : (Sepal Length, Petal Wi

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

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

FISTA的由来:从梯度下降法到ISTA & FISTA

前言: FISTA(A fast iterative shrinkage-thresholding algorithm)是一种快速的迭代阈值收缩算法(ISTA).FISTA和ISTA都是基于梯度下降的思想,在迭代过程中进行了更为聪明(smarter)的选择,从而达到更快的迭代速度.理论证明:FISTA和ISTA的迭代收敛速度分别为O(1/k2)和O(1/k). 本篇博文先从解决优化问题的传统方法"梯度下降"开始,然后引入ISTA,再上升为FISTA,最后在到其应用(主要在图像的去模糊方