使用matlab用优化后的梯度下降法求解达最小值时参数
2014-11-14 21:20
411 查看
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表示是否收敛
-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表示是否收敛
相关文章推荐
- 最小二乘参数估计---梯度下降法求解参数的sas代码实现
- 使用梯度下降与牛顿法求解最小平方和问题
- 深度学习(三十七)优化求解系列之(1)简单理解梯度下降
- 单变量线性回归中的梯度下降法求解代价函数的最小值
- 深度学习(三十七)优化求解系列之(1)简单理解梯度下降
- 机器学习通俗入门-使用梯度下降法求解二分问题
- [置顶] windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- 机器学习3:使用梯度下降和退火算法得到全局最小值
- 使用matlab求解镜头畸变参数以及使用opencv进行畸变矫正
- 详解梯度下降法求解线性模型参数
- 机器学习(六)梯度下降的优化算法和matlab/octave中的应用
- 多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项
- 使用DLT算法求解相机参数及相机与物体的位置关系(附加C/C++和Matlab代码)
- Matlab中使用varargin来实现参数可变的函数
- matlab实现最速下降法和dfp求函数最小值
- matlab中如何使用fminunc进行优化
- opencv 中,使用cvSolve函数,求解线性方程组,或者最小二乘法问题
- vc编译exe的体积最小优化(附编译器参数)
- Matlab中使用varargin来实现参数可变的函数
- wubi安装ubuntu后,增加swap大小,优化swap的使用参数-----------让ubuntu健步如飞,为编译android源码准备