CurrentModule = Manopt
adaptive_regularization_with_cubics
adaptive_regularization_with_cubics!
AdaptiveRegularizationState
There are several ways to approach the subsolver. The default is the first one.
Manopt.LanczosState
There is a generic objective, that implements the sub problem
AdaptiveRegularizationWithCubicsModelObjective
Since the sub problem is given on the tangent space, you have to provide
arc_obj = AdaptiveRegularizationWithCubicsModelObjective(mho, σ)
sub_problem = DefaultProblem(TangentSpaceAt(M,p), arc_obj)
where mho is the Hessian objective of f to solve.
Then use this for the sub_problem keyword
and use your favourite gradient based solver for the sub_state keyword, for example a
ConjugateGradientDescentState
StopWhenAllLanczosVectorsUsed
StopWhenFirstOrderProgress
The adaptive_regularization_with_cubics requires the following functions
of a manifolds to be available
- A [
retract!](@extref ManifoldsBase :doc:retractions)(M, q, p, X); it is recommended to set the [default_retraction_method](@extrefManifoldsBase.default_retraction_method-Tuple{AbstractManifold}) to a favourite retraction. If this default is set, aretraction_method=does not have to be specified. - if you do not provide an initial regularization parameter
σ, a [manifold_dimension](@extrefManifoldsBase.manifold_dimension-Tuple{AbstractManifold}) is required. - By default the tangent vector storing the gradient is initialized calling [
zero_vector](@extrefManifoldsBase.zero_vector-Tuple{AbstractManifold, Any})(M,p). - [
inner](@extrefManifoldsBase.inner-Tuple{AbstractManifold, Any, Any, Any})(M, p, X, Y)is used within the algorithm step
Furthermore, within the Lanczos subsolver, generating a random vector (at p) using [rand!](@extref Base.rand-Tuple{AbstractManifold})(M, X; vector_at=p) in place of X is required
Pages = ["adaptive-regularization-with-cubics.md"]
Canonical=false