Levenberg-Marquardt
Manopt.LevenbergMarquardt — FunctionLevenbergMarquardt(M, f, jacobian_f, p, num_components=-1)Solve an optimization problem of the form
\[\operatorname*{arg\,min}_{p ∈ \mathcal M} \frac{1}{2} \lVert f(p) \rVert^2,\]
where $f: \mathcal M → ℝ^d$ is a continuously differentiable function, using the Riemannian Levenberg-Marquardt algorithm [Pee93]. The implementation follows Algorithm 1 [AOT22]
Input
M: a manifold $\mathcal M$f: a cost function $f: \mathcal M→ℝ^d$jacobian_f: the Jacobian of $f$. The Jacobian is supposed to accept a keyword argumentbasis_domainwhich specifies basis of the tangent space at a given point in which the Jacobian is to be calculated. By default it should be theDefaultOrthonormalBasis.p: an initial value $p ∈ \mathcal M$num_components: length of the vector returned by the cost function (d). By default its value is -1 which means that it is determined automatically by callingfone additional time. This is only possible whenevaluationisAllocatingEvaluation, for mutating evaluation this value must be explicitly specified.
These can also be passed as a NonlinearLeastSquaresObjective, then the keyword jacobian_tangent_basis below is ignored
Optional
evaluation: (AllocatingEvaluation) specify whether the gradient works by allocation (default) formgradF(M, x)orInplaceEvaluationin place of the formgradF!(M, X, x).retraction_method: (default_retraction_method(M, typeof(p))) aretraction(M,x,ξ)to use.stopping_criterion: (StopAfterIteration(200) |StopWhenGradientNormLess(1e-12)) a functor inheriting fromStoppingCriterionindicating when to stop.expect_zero_residual: (false) whether or not the algorithm might expect that the value of residual (objective) at minimum is equal to 0.η: scaling factor for the sufficient cost decrease threshold required to accept new proposal points. Allowed range:0 < η < 1.damping_term_min: initial (and also minimal) value of the damping termβ: parameter by which the damping term is multiplied when the current new point is rejectedinitial_residual_values: the initial residual vector of the cost functionf.initial_jacobian_f: the initial Jacobian of the cost functionf.jacobian_tangent_basis: anAbstractBasisspecify the basis of the tangent space forjacobian_f.
All other keyword arguments are passed to decorate_state! for decorators or decorate_objective!, respectively. If you provide the ManifoldGradientObjective directly, these decorations can still be specified
Output
the obtained (approximate) minimizer $p^*$, see get_solver_return for details
References
Manopt.LevenbergMarquardt! — FunctionLevenbergMarquardt!(M, f, jacobian_f, p, num_components=-1; kwargs...)For more options see LevenbergMarquardt.
Options
Manopt.LevenbergMarquardtState — TypeLevenbergMarquardtState{P,T} <: AbstractGradientSolverStateDescribes a Gradient based descent algorithm, with
Fields
A default value is given in brackets if a parameter can be left out in initialization.
x: a point (of typeP) on a manifold as starting pointstop: (StopAfterIteration(200) | StopWhenGradientNormLess(1e-12) | StopWhenStepsizeLess(1e-12)) aStoppingCriterionretraction_method: (default_retraction_method(M, typeof(p))) the retraction to use, defaults to the default set for your manifold.residual_valuesvalue of $F$ calculated in the solver setup or the previous iterationresidual_values_tempvalue of $F$ for the current proposal pointjacFthe current Jacobian of $F$gradientthe current gradient of $F$step_vectorthe tangent vector atxthat is used to move to the next pointlast_stepsizelength ofstep_vectorηScaling factor for the sufficient cost decrease threshold required to accept new proposal points. Allowed range:0 < η < 1.damping_termcurrent value of the damping termdamping_term_mininitial (and also minimal) value of the damping termβparameter by which the damping term is multiplied when the current new point is rejectedexpect_zero_residual: (false) if true, the algorithm expects that the value of the residual (objective) at minimum is equal to 0.
Constructor
LevenbergMarquardtState(M, initialX, initial_residual_values, initial_jacF; initial_vector), kwargs...)Generate Levenberg-Marquardt options.
See also
Technical details
The LevenbergMarquardt solver requires the following functions of a manifold to be available
- A
retract!(M, q, p, X); it is recommended to set thedefault_retraction_methodto a favourite retraction. If this default is set, aretraction_method=does not have to be specified. - the
normas well, to stop when the norm of the gradient is small, but if you implementedinner, the norm is provided already. - A `copyto!
(M, q, p)andcopy(M,p)for points.
Literature
- [AOT22]
- S. Adachi, T. Okuno and A. Takeda. Riemannian Levenberg-Marquardt Method with Global and Local Convergence Properties. ArXiv Preprint (2022).
- [Pee93]
- R. Peeters. On a Riemannian version of the Levenberg-Marquardt algorithm. Serie Research Memoranda 0011 (VU University Amsterdam, Faculty of Economics, Business Administration and Econometrics, 1993).