Matlab @fminunc objective 函数优化

Matlab @fminunc objective function optimization

我目前正在 Matlab 中练习一个简单的函数优化,希望您能对以下错误提供一点帮助/解释:

%quadramin.m
function z=quadramin(param,data);
z=data.*(param(1).^2 - param(2).^3)+3;

%quadramin_lik.m
function quadlik = quadramin_lik(param,data);
%pseudo/ad-hoc log-likelihood function
quadlik = quadramin(param,data)- 10;

%script.m
data=trnd(5,6,1);
param0=[2,3];
[param_eq,exitflag,output,grad,hessian] = ... 
fminunc(@(param) quadramin_lik(param,data),param0)

执行 %script.m 后的输出:使用 fminunc 时出错(第 333 行) 用户提供的 objective 函数必须 return 标量值。

ps:它看起来很矛盾,因为用户定义的函数 quadramin && quadramin_lik 做 return 值。

谢谢

你的两个函数 return 一个值向量,而 fminunc 要求函数 return 是一个 标量/单个 值。错误很明显。函数 fminunc 试图找到最小化成本函数的最佳解决方案,因此您需要提供的是成本函数。

因此,也许在 returning 之前尝试对每个函数的结果求和....但这样做并不能保证全局最小值,因为 fminunc 假设您的成本函数是凸函数。但是,从您计算对数似然时的评论来看,求和是您应该做的任何事情!