This release improves optimizer robustness, input validation, and progress diagnostics.
check_mize_gradient(), which compares an
analytic gradient with a finite-difference approximation.mize() now returns status fields:
converged, status, and message,
plus explicit best/last result fields (best_par,
best_f, last_par, and
last_f).mize(), mize_step(),
mize_step_summary(), and stored progress now report
accepted Hessian and inverse-Hessian callback counts as nh
and nhi.store_progress = TRUE, mize() now
exposes optional line-search reason, selected-point provenance, local
callback counts, initial scale, and exact-Newton direction
provenance.line_search_failed prematurely when small steps are needed
to reach the requested convergence tolerance.step0 after returning a zero
step when step_next_init depends on previous search
results. This allows momentum methods to recover on the next
iteration.step0 instead of always starting
at 1. It requires a positive finite numeric scalar, with
NULL retaining the default of 1.cg_update = "HZ+" safeguard now uses Euclidean
norms as specified by its formula. This correction can change
optimization trajectories and iteration counts.check_mize_gradient() rejects unrepresentable or
non-finite coordinate perturbations and dimensioned callback results
instead of reporting misleading agreement or flattening matrices.store_progress = TRUE has lower time and allocation
costs on long runs.mom_schedule = 0, and
NAG with the "nsconvex" schedule, nest_q = 1,
and nest_convex_approx = FALSE, no longer make redundant
function and gradient calls. In these configurations,
restart is ignored and progress no longer includes
mu.fn_inf or
gr_inf failures when a later objective or gradient is
non-finite, and par_inf if an update would produce
non-finite parameters. Such an update is rolled back before callbacks
can observe it. DBD also validates its initial step controls and
safeguards named initial-step estimates using the current parameter
scale."ramp" and
"switch" schedules require numeric mom_init
and mom_final values, and adaptive restart safely rejects
non-finite comparisons instead of raising a control-flow error.step0 to be a positive finite scalar; string initializers
are unchanged.line_search_failed instead
of tolerance convergence. Bold Driver now follows this contract, reports
line-search diagnostics, and avoids callbacks at trial step lengths that
reproduce an evaluated parameter vector.alpha diagnostic reports the selected
gradient step length, and is zero when no gradient step was selected.
Its ls_max_fn = 0 limit is handled consistently whether
progress is stored.mom_type = "nesterov" now applies to momentum schedules
attached to methods other than "Momentum", including DBD.
These configurations previously used classical momentum silently.Bug fix release.
LazyData from the DESCRIPTION
file.Bug fix release.
line_search = "backtracking" with a specified
step_down parameter, an incorrectly large number of
gradient calculations was being reported.step_down argument with
line_search = "backtracking", interpolation using function
and gradient evaluations is carried out. To get a typical Armijo-style
backtracking line search, specify a value for step_down
(e.g. step_down = 0.5 to halve the step size), and only
function evaluations are used.A patch release to fix an incompatibility with R-devel.
class was being checked directly and
a scalar value was assumed. The correct behavior is to use
methods::is.A patch release for a bug fix.
ls_max_fn parameter), a
'bracket_step' not found error could result. Thank you to
reporter Charles Driver.A patch release to fix an incompatibility with R-devel.
method = "TN"). Can be
controlled using the tn_init and tn_exit
options.method = "SR1"), falling back to the
BFGS direction if a descent direction is not found.preconditioner, which applies to the
conjugate gradient and truncated newton methods. The only value
currently available is preconditioner = "L-BFGS" which uses
L-BFGS to estimate the inverse Hessian for preconditioning. The number
of updates to store for this preconditioner is controlled by the
memory parameter, just as if you were using
method = "L-BFGS".fg list,
supply a function hi, that takes the par
vector as input. The function can return a matrix (obviously not a great
idea for memory use), or a vector, the latter of which is assumed to be
the diagonal of the matrix.ls_max_alpha (for
line_search = "More-Thuente" only): sets maximum value of
alpha that can be attained during line search.ls_max_alpha_mult (for Wolfe-type line search only):
sets maximum value that can be attained by the ratio of the initial
guess for alpha for the current line search, to the final value of alpha
of the previous line search. Used to stop line searches diverging due to
very large initial guesses.ls_safe_cubic (for
line_search = "More-Thuente" only): if TRUE,
use the safe-guarded cubic modification suggested by Xie and
Schlick.cg_update = "prfr", the “PR-FR”
(Polak-Ribiere/Fletcher-Reeves) conjugate gradient update suggested by
Gilbert and Nocedal.cg_update = "hs"), Conjugate Descent
(cg_update = "cd"), Dai-Yuan
(cg_update = "dy") and Liu-Storey
(cg_update = "ls").Initial release.