Softplus reparameterization replaces hard-clamp
positivity enforcement. Parameters in
parts$positive (formerly parts$T and
parts$P) are now handled internally via
theta_i = softplus(z_i), guaranteeing strict positivity
analytically. theta0[positive] must now be strictly
> 0; v1 silently clamped zero or negative starting
values, v2 raises an error.
parts API simplified. The preferred
form is now list(positive = ..., euclidean = ...). The
three-way {T, P, E} form from v1 remains accepted as a
backwards-compatibility alias (T and P indices both map to
positive; E maps to euclidean).
Relative function-stall detection
(FUNC_STALL_REL). In addition to the existing absolute
stall criterion (FUNC_STALL_ABS), convergence is now also
declared when |ΔV| / (|V| + ε) < tol_f_rel over five
consecutive iterations. New control parameter tol_f_rel
(default 1e-9).
rho-based trust-region adaptation. The trust
radius now adapts using the ratio of actual to predicted objective
reduction (rho), with configurable rho_shrink
(default 0.25), rho_grow (default 0.75),
shrink_factor (default 0.5), and grow_factor
(default 1.5). The v1 binary accept/reject heuristic is used as a
fallback when rho is not finite.
Richer per-iteration history.
fit$history now contains ten columns (was eight):
iter, f, g_inf,
step_norm, df, eta,
method, armijo_iters (new),
pred_red (new), rho
(new). The Lyapunov-specific columns
(delta_V_rel, lyapunov_ok) from v1 are
removed.
galahad_numgrad() — exported
finite-difference gradient helper for use when analytical gradients are
unavailable.
galahad_parts() — exported
constructor that validates and assembles the parts argument
with an optional total-parameter-count check.
rho_accept, use_rho_accept control
options enable an alternative acceptance mode based on trust-region
quality ratio instead of Armijo decrease.
| Parameter | v1 default | v2 default | Notes |
|---|---|---|---|
delta_min |
0.1 | 1e-6 | Allows finer convergence near zero |
delta_max |
100.0 | 1e3 | Slightly wider upper bound |
tol_f_rel |
(absent) | 1e-9 | New relative stall criterion |
armijo_max |
20 (hard) | 20 (in control) |
Now user-configurable |
Halpern averaging removed. The per-iteration
Halpern candidate
alpha_k * theta0 + (1 - alpha_k) * theta_proj is no longer
evaluated. This saves approximately one function evaluation per
iteration; the function-stall detection provides equivalent convergence
assurance on the smooth objectives for which GALAHAD is
designed.
Lyapunov violation tracking removed
(lyapunov_violations, monotone_descent from
diagnostics). The rho history in
fit$history$rho provides equivalent information about step
quality.
make_safe_function() wrappers
removed. Errors in V or gradV now surface
immediately via galahad_assert_finite(). Callers are
expected to supply well-defined objectives; the previous silent-fallback
behaviour could mask model specification bugs.
grad_clip_norm control option
removed.
eps_safe control option removed (no
longer applicable with softplus).
st$z bare expression in the internal
state-update helper that had no effect but generated lint warnings.Polyak (1969) corrected. Version 1 incorrectly cited the paper “Minimization of unsmooth functionals”, Vol. 9(3), pp. 14–29. The correct paper implemented in GALAHAD is “The conjugate gradient method in extremal problems”, Vol. 9(4), pp. 94–112. doi:10.1016/0041-5553(69)90035-4
Xu and An (2024) added. Citation for the regularized Barzilai-Borwein trust-region extension was absent from v1 despite the method being used. doi:10.48550/arXiv.2409.14383
Dugas et al. (2009) added. Citation for the softplus activation function was absent from v1 despite softplus being central to the positivity geometry. Journal of Machine Learning Research, 10(42), 1239–1262. https://www.jmlr.org/papers/v10/dugas09a.html