首页 > 代码库 > 使用matlab用优化后的梯度下降法求解达最小值时参数
使用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表示是否收敛
使用matlab用优化后的梯度下降法求解达最小值时参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。