使用 TMB 进行优化时,此 outermgc 消息是什么?
What is this outermgc message while optimising with TMB?
在使用 TMB 生成 objective 函数和梯度并调用 optim
函数后,我在控制台中打印了一系列报告,其形式似乎是 "outer mgc: " :
outer mgc: 56.54273
outer mgc: 56.51064
outer mgc: 56.96065
outer mgc: 57.13384
outer mgc: 29.01959
outer mgc: 27.08267
outer mgc: 25.99866
outer mgc: 25.79068
outer mgc: 25.58621
outer mgc: 21.91722
outer mgc: 21.73952
outer mgc: 21.56449
outer mgc: 21.52924
outer mgc: 21.52189
outer mgc: 21.19551
outer mgc: 20.7331
outer mgc: 16.39087
outer mgc: 11.35111
outer mgc: 10.61466
outer mgc: 6.748524
outer mgc: 1.420802
outer mgc: 0.1197647
好像数字越小收敛越快,收敛效果越好。但我不完全确定这些是什么,所以最好知道以便诊断算法的收敛特性。
缩写mgc代表"maximum gradient component"。
对于每个参数,TMB 估计一个梯度(偏导数),优化后可以通过 运行 obj$gr(opt$par) 获得。所有这些都应该尽可能接近于零。因此,为了使模型正常,最高或最大的(离零最远的)应该仍然很低。您会注意到,在使用 sdreport() 时,还会给出最终的最大梯度分量。默认情况下,在使用 nlminb/optim 时,还会为每次迭代计算和打印这些梯度(除非 makeADfun 中的 silent=TRUE)。
在使用 TMB 生成 objective 函数和梯度并调用 optim
函数后,我在控制台中打印了一系列报告,其形式似乎是 "outer mgc: " :
outer mgc: 56.54273
outer mgc: 56.51064
outer mgc: 56.96065
outer mgc: 57.13384
outer mgc: 29.01959
outer mgc: 27.08267
outer mgc: 25.99866
outer mgc: 25.79068
outer mgc: 25.58621
outer mgc: 21.91722
outer mgc: 21.73952
outer mgc: 21.56449
outer mgc: 21.52924
outer mgc: 21.52189
outer mgc: 21.19551
outer mgc: 20.7331
outer mgc: 16.39087
outer mgc: 11.35111
outer mgc: 10.61466
outer mgc: 6.748524
outer mgc: 1.420802
outer mgc: 0.1197647
好像数字越小收敛越快,收敛效果越好。但我不完全确定这些是什么,所以最好知道以便诊断算法的收敛特性。
缩写mgc代表"maximum gradient component"。
对于每个参数,TMB 估计一个梯度(偏导数),优化后可以通过 运行 obj$gr(opt$par) 获得。所有这些都应该尽可能接近于零。因此,为了使模型正常,最高或最大的(离零最远的)应该仍然很低。您会注意到,在使用 sdreport() 时,还会给出最终的最大梯度分量。默认情况下,在使用 nlminb/optim 时,还会为每次迭代计算和打印这些梯度(除非 makeADfun 中的 silent=TRUE)。