码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-11-14 22:45:17      阅读:785      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   使用   sp   div   on   2014   

matlab可以用

-Conjugate gradient
-BFGS
-L-BFGS
等优化后的梯度方法来求解优化问题。当feature过多时,最小二乘计算复杂度过高(O(n**3)),此时
这一些列优化版梯度下降算法就成为了解优化问题的更优选择。
它们的优点为:
不需要像对原始梯度下降那样手动选择学习速率α
一般比梯度下降收敛速度要快
相应的缺点为:比梯度下降要复杂得多
好在,我们可以直接用matlab内置函数进行计算。
例子如下:
bubuko.com,布布扣
我们需要输入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表示是否收敛
 

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

标签:blog   http   io   os   使用   sp   div   on   2014   

原文地址:http://www.cnblogs.com/instant7/p/4098189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!