为什么 `fmincg()` 中的迭代次数是随机的,即使最大迭代次数是固定的

Why is the number if iterations in `fmincg()` random, even though the maximum number of iterations is fixed

我遇到了函数 fmincg(),它优化梯度更新并运行迭代和 returns 优化参数。尽管它经历的迭代次数似乎是随机的。 'MaxIter'参数固定为200。每次调用时迭代次数仍然是随机的。

为什么 fmincg() 中的迭代次数是随机的,即使最大迭代次数是固定的?

costFunction = @(t) linearRegCostFunction(X, y, t, lambda);
options = optimset('MaxIter', 200, 'GradObj', 'on');
theta = fmincg(costFunction, initial_theta, options);

这是一个最大的迭代次数,不是固定的。如果计算在达到最大迭代次数之前收敛,则计算停止。如果不收敛,它将继续,直到达到 'MaxIter'.

基本上这个程序是一个大的while循环,在伪代码中看起来像

while iter<MaxIter & convergence_reached == false
    % Do calculations
    iter = iter + 1
    if converged
        convergence_reached == true

PS:这意味着您每次尝试都将不同的值输入到您的方案中,或者该代码中某处有一个随机数生成器。