Steihaug-Toint truncated conjugate gradient method
Solve the constraint optimization problem on the tangent space
\[\begin{align*} \operatorname*{arg\,min}_{Y ∈ T_p\mathcal{M}}&\ m_p(Y) = f(p) + ⟨\operatorname{grad}f(p), Y⟩_p + \frac{1}{2} ⟨\mathcal{H}_p[Y], Y⟩_p\\ \text{such that}& \ \lVert Y \rVert_p ≤ Δ \end{align*}\]
on the tangent space $T_p\mathcal M$ of a Riemannian manifold $\mathcal M$ by using the Steihaug-Toint truncated conjugate-gradient (tCG) method, see [ABG06], Algorithm 2, and [CGT00]. Here $\mathcal H_p$ is either the Hessian $\operatorname{Hess} f(p)$ or a linear symmetric operator on the tangent space approximating the Hessian.
Interface
Manopt.truncated_conjugate_gradient_descent — Functiontruncated_conjugate_gradient_descent(M, f, grad_f, p; kwargs...)
truncated_conjugate_gradient_descent(M, f, grad_f, p, X; kwargs...)
truncated_conjugate_gradient_descent(M, f, grad_f, Hess_f; kwargs...)
truncated_conjugate_gradient_descent(M, f, grad_f, Hess_f, p; kwargs...)
truncated_conjugate_gradient_descent(M, f, grad_f, Hess_f, p, X; kwargs...)
truncated_conjugate_gradient_descent(M, mho::ManifoldHessianObjective, p, X; kwargs...)
truncated_conjugate_gradient_descent(M, trmo::TrustRegionModelObjective, p, X; kwargs...)solve the trust-region subproblem
\[\begin{align*} \operatorname*{arg\,min}_{Y ∈ T_p\mathcal{M}}&\ m_p(Y) = f(p) + ⟨\operatorname{grad}f(p), Y⟩_p + \frac{1}{2} ⟨\mathcal{H}_p[Y], Y⟩_p\\ \text{such that}& \ \lVert Y \rVert_p ≤ Δ \end{align*}\]
on a manifold M by using the Steihaug-Toint truncated conjugate-gradient (tCG) method. For a description of the algorithm and theorems offering convergence guarantees, see [ABG06, CGT00].
Input
M: a manifold $\mathcal M$f: a cost function $f: \mathcal M → ℝ$ to minimizegrad_f: the gradient $\operatorname{grad}f: \mathcal M → T\mathcal M$ ofFHess_f: (optional, cf.ApproxHessianFiniteDifference) the Hessian $\operatorname{Hess}f: T_p\mathcal M → T_p\mathcal M$, $X ↦ \operatorname{Hess}F(p)[X] = ∇_X\operatorname{grad}f(p)$p: a point on the manifold $p ∈ \mathcal M$X: an initial tangential vector $X ∈ T_p\mathcal M$
Instead of the three functions, you either provide a ManifoldHessianObjective mho which is then used to build the trust region model, or a TrustRegionModelObjective trmo directly.
Optional
evaluation: (AllocatingEvaluation) specify whether the gradient and Hessian work by allocation (default) orInplaceEvaluationin placepreconditioner: a preconditioner for the Hessian Hθ: (1.0) 1+θ is the superlinear convergence target rate.κ: (0.1) the linear convergence target rate.randomize: set to true if the trust-region solve is initialized to a random tangent vector. This disables preconditioning.trust_region_radius: (injectivity_radius(M)/4) a trust-region radiusproject!: (copyto!) for numerical stability it is possible to project onto the tangent space after every iteration. By default this only copies instead.stopping_criterion: (StopAfterIteration(manifol_dimension(M)) |StopWhenResidualIsReducedByFactorOrPower(;κ=κ, θ=θ) |StopWhenCurvatureIsNegative() |StopWhenTrustRegionIsExceeded() |StopWhenModelIncreased()) a functor inheriting fromStoppingCriterionindicating when to stop,
and the ones that are passed to decorate_state! for decorators.
Output
the obtained (approximate) minimizer $Y^*$, see get_solver_return for details
See also
Manopt.truncated_conjugate_gradient_descent! — Functiontruncated_conjugate_gradient_descent!(M, f, grad_f, Hess_f, p, X; kwargs...)
truncated_conjugate_gradient_descent!(M, f, grad_f, p, X; kwargs...)solve the trust-region subproblem in place of X (and p).
Input
M: a manifold $\mathcal M$f: a cost function $F: \mathcal M → ℝ$ to minimizegrad_f: the gradient $\operatorname{grad}f: \mathcal M → T\mathcal M$ offHess_f: the Hessian $\operatorname{Hess}f(x): T_p\mathcal M → T_p\mathcal M$, $X ↦ \operatorname{Hess}f(p)[X]$p: a point on the manifold $p ∈ \mathcal M$X: an update tangential vector $X ∈ T_x\mathcal M$
For more details and all optional arguments, see truncated_conjugate_gradient_descent.
State
Manopt.TruncatedConjugateGradientState — TypeTruncatedConjugateGradientState <: AbstractHessianSolverStatedescribe the Steihaug-Toint truncated conjugate-gradient method, with
Fields
a default value is given in brackets if a parameter can be left out in initialization.
Y: (zero_vector(M,p)) Current iterate, whose type is also used for the other, internal, tangent vector fieldsstop: aStoppingCriterion.X: the gradient $\operatorname{grad}f(p)$`δ: the conjugate gradient search directionθ: (1.0) 1+θ is the superlinear convergence target rate.κ: (0.1) the linear convergence target rate.trust_region_radius: (injectivity_radius(M)/4) the trust-region radiusresidual: the gradient of the model $m(Y)$randomize: (false)project!: (copyto!) for numerical stability it is possible to project onto the tangent space after every iteration. By default this only copies instead.
Internal fields
Hδ,HY: temporary results of the Hessian applied toδandY, respectively.δHδ,YPδ,δPδ,YPδ: temporary inner products withHδand preconditioned inner products.z: the preconditioned residualz_r: inner product of the residual andz
Constructor
TruncatedConjugateGradientState(TpM::TangentSpace, Y=rand(TpM); kwargs...)See also
Stopping criteria
Manopt.StopWhenResidualIsReducedByFactorOrPower — TypeStopWhenResidualIsReducedByFactorOrPower <: StoppingCriterionA functor for testing if the norm of residual at the current iterate is reduced either by a power of 1+θ or by a factor κ compared to the norm of the initial residual. The criterion hence reads $\Vert r_k \Vert_p \leqq \Vert r_0 \Vert_p \min \bigl( \kappa, \Vert r_0 \Vert_p^θ \bigr)$.
Fields
κ: the reduction factorθ: part of the reduction powerreason: stores a reason of stopping if the stopping criterion has one be reached, seeget_reason.
Constructor
StopWhenResidualIsReducedByFactorOrPower(; κ=0.1, θ=1.0)Initialize the StopWhenResidualIsReducedByFactorOrPower functor to indicate to stop after the norm of the current residual is lesser than either the norm of the initial residual to the power of 1+θ or the norm of the initial residual times κ.
See also
Manopt.StopWhenTrustRegionIsExceeded — TypeStopWhenTrustRegionIsExceeded <: StoppingCriterionA functor for testing if the norm of the next iterate in the Steihaug-Toint truncated conjugate gradient method is larger than the trust-region radius $θ \leq \Vert Y_{k}^{*} \Vert_p$ and to end the algorithm when the trust region has been left.
Fields
reason: stores a reason of stopping if the stopping criterion has been reached, seeget_reason.
Constructor
StopWhenTrustRegionIsExceeded()initialize the StopWhenTrustRegionIsExceeded functor to indicate to stop after the norm of the next iterate is greater than the trust-region radius.
See also
Manopt.StopWhenCurvatureIsNegative — TypeStopWhenCurvatureIsNegative <: StoppingCriterionA functor for testing if the curvature of the model is negative, $⟨δ_k, \operatorname{Hess}[F](\delta_k)⟩_p ≦ 0$. In this case, the model is not strictly convex, and the stepsize as computed does not yield a reduction of the model.
Fields
reason: stores a reason of stopping if the stopping criterion has been reached, seeget_reason.
Constructor
StopWhenCurvatureIsNegative()See also
Manopt.StopWhenModelIncreased — TypeStopWhenModelIncreased <: StoppingCriterionA functor for testing if the curvature of the model value increased.
Fields
reason: stores a reason of stopping if the stopping criterion has been reached, seeget_reason.
Constructor
StopWhenModelIncreased()See also
Manopt.update_stopping_criterion! — Methodupdate_stopping_criterion!(c::StopWhenResidualIsReducedByFactorOrPower, :ResidualPower, v)Update the residual Power θ to v.
Manopt.update_stopping_criterion! — Methodupdate_stopping_criterion!(c::StopWhenResidualIsReducedByFactorOrPower, :ResidualFactor, v)Update the residual Factor κ to v.
Trust region model
Manopt.TrustRegionModelObjective — TypeTrustRegionModelObjective{O<:AbstractManifoldHessianObjective} <: AbstractManifoldSubObjective{O}A trust region model of the form
\[ m(X) = f(p) + ⟨\operatorname{grad} f(p), X⟩_p + \frac{1}(2} ⟨\operatorname{Hess} f(p)[X], X⟩_p\]
Fields
objective: anAbstractManifoldHessianObjectiveproving $f$, its gradient and Hessian
Constructors
TrustRegionModelObjective(objective)with either an AbstractManifoldHessianObjective objective or an decorator containing such an objective
Technical details
The trust_regions solver requires the following functions of a manifold to be available
- if you do not provide a
trust_region_radius=, theninjectivity_radiuson the manifoldMis required. - the
normas well, to stop when the norm of the gradient is small, but if you implementedinner, the norm is provided already. - A
zero_vector!(M,X,p). - A `copyto!
(M, q, p)andcopy(M,p)for points.
Literature
- [ABG06]
- P.-A. Absil, C. Baker and K. Gallivan. Trust-Region Methods on Riemannian Manifolds. Foundations of Computational Mathematics 7, 303–330 (2006).
- [CGT00]
- A. R. Conn, N. I. Gould and P. L. Toint. Trust Region Methods (Society for Industrial and Applied Mathematics, 2000).