Currently, the package implements the exponential map through an ODE solver (ODEExponentialRetraction), which uses OrdinaryDiffEq under the hood. This implementation is quite computationally intensive. It would be beneficial to have a more computationally efficient approximation.
One popular approach, especially in information geometry, is to use a second-order approximation. For reference, see equation 16 in section 5.3 of this paper: https://proceedings.mlr.press/v119/lin20d/lin20d.pdf. This approximation is relatively easy to implement and doesn't require any heavy dependencies.
it seems not to much of work and it will come just from a careful implementation of smt like this
function exp_secondorder(
...
Γ,
p0,
v0
)
Δ = similar(p0) # Preallocate Δ with same type/size as p0
Manifolds.@einsum Δ[k] = -0.5 * Γ[k,i,j] * v0[i] * v0[j]
return p0 + v0 + Δ
end
I want to propose implementing this approximation for the Manifolds.jl package if you find it a reasonable proposal. I can file a PR myself.
Currently, the package implements the exponential map through an ODE solver (
ODEExponentialRetraction), which usesOrdinaryDiffEqunder the hood. This implementation is quite computationally intensive. It would be beneficial to have a more computationally efficient approximation.One popular approach, especially in information geometry, is to use a second-order approximation. For reference, see equation 16 in section 5.3 of this paper: https://proceedings.mlr.press/v119/lin20d/lin20d.pdf. This approximation is relatively easy to implement and doesn't require any heavy dependencies.
it seems not to much of work and it will come just from a careful implementation of smt like this
I want to propose implementing this approximation for the Manifolds.jl package if you find it a reasonable proposal. I can file a PR myself.