机器学习(Advanced Optimization) : fminunch和optimset函数的用法

吴恩达老师,机器学习系列课程 - 6.6 Advanced Optimization中出现了optimset和fminunch这两个函数。

定义一个可以计算代价函数的函数

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);
end

jVal, gradient是函数返回的值。定义函数名为costFunction,传入参数为theta。

options=optimset('GradObj','on','MaxIter',100);
initialTheta = zeos(2, 1);
[optTheta, funtionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

optimset是matlab中的一个函数,主要设置一些options, 如options=optimset('GradObj','on','MaxIter',100);的作用包括是否使用用户自定义的梯度下降公式(GradObj = ‘on’)以及迭代次数(MaxIter = ‘100’)。

fminunc的输出参数[x, fval, exitflag],其中第一个返回值x为上面function [jVal,gradient] = costFunction(theta);中的第二个返回值gra, 第二个返回值fval返回的是costFunction函数的第一个返回值jVal 这个关系是理解fminunc的重点。 第三个返回值exitflag返回值为0或1,表示在theta点定义的Jval函数是否收敛。

fuminunc的输入参数(@costFunction, initialTheta, options):

  • @costFunction :传入我们上面自己定义的函数
  • initialTheta :该参数为一个 2x1矩阵(2个元素的列向量),该列向量为用户自定义梯度下降法的输出参数。使用前要预先初始化。
  • options:我们上面设置的一些Options。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35843514/article/details/109736624