JuliaManifolds / Manifolds.jl

Manifolds.jl provides a library of manifolds aiming for an easy-to-use and fast implementation.
https://juliamanifolds.github.io/Manifolds.jl
MIT License
373 stars 55 forks source link

Add logarithmic map on the Stiefel manifold #410

Closed sethaxen closed 2 years ago

sethaxen commented 3 years ago

http://arxiv.org/abs/2103.12046 gives an efficient shooting algorithm (Alg 2) for computing the logarithmic map on the Stiefel(n, k) manifold for n ≥ 2k for a family of metrics that includes both the Euclidean and canonical (also Alg 4) metrics. I haven't check it, but their implementation of the exponential map in Section 3.1 might also improve on ours.

kellertuer commented 3 years ago

I have read the paper already, since I know Ralf and I think I already implemented one or the other of his algorithms here. Also having their family of metrics here, too, would be nice. The other would be to also include these Quasi geodesics as retractions https://link.springer.com/chapter/10.1007%2F978-3-030-80209-7_82 (see also https://arxiv.org/abs/2105.07017).

kellertuer commented 3 years ago

I just got an email, that a reference implementation for the logarithmic maps and metrics is available for Matlab and Python at https://github.com/RalfZimmermannSDU/RiemannStiefelLog/tree/main/Stiefel_log_general_metric/.

sethaxen commented 2 years ago

I may tackle this in the coming weeks as I want to use mean on the Stiefel manifold.

kellertuer commented 2 years ago

🥾🪵? Nice!

We could also check whether your ideas to the generalised Stiefel even :) We should however implement that as an ApproximateLogarithmicRetraction, I think?

sethaxen commented 2 years ago

My thoughts are to more or less implement the method exactly as it appears in the above paper. I think generalising it would require at least some theory and should probably wait for a later PR.

Are you thinking that method itself should be an ApproximateLogarithmicRetraction? I guess it depends on how good the approximation is. Technically the matrix logarithm we use is an approximation, but it's basically always within a small tolerance of the correct value, so we can ignore it's approximate nature.

sethaxen commented 2 years ago

But implementing their family of metrics at the same time makes sense. Any ideas what the family should be named?

kellertuer commented 2 years ago

Hm, I don't see a generic name popping up there, so one could maybe trace that back to the first paper where it was mentioned and take the author names?

sethaxen commented 2 years ago

This is the paper where the family is introduced: https://www.aimsciences.org/article/doi/10.3934/jgm.2020031. They name it the "normal or submersion (pseudo-)Riemannian metrics".

kellertuer commented 2 years ago

Cool, so (1) I would prefer to only document the case $\alpha > -1$, since for now we do not have proper coverage for Pseudo-Riemannian metrics (though that could become a trait somewhen).

I like SubmersionMetric (with parameter alpha) or is that too generic? We could also call them StiefelSubmersionMetric to be more specific (and I feel submersion is more concrete than normal).

Another approach would of course be to call it either HMSLMetric or HueperMarkinaSilvaLeiteMetric (where (a) yes I think that is a double surname in Portuguese and (b) also HüperMarkinaSilvaLeite would be possible, since we have proper utf8).

sethaxen commented 2 years ago

Cool, so (1) I would prefer to only document the case α>−1, since for now we do not have proper coverage for Pseudo-Riemannian metrics (though that could become a trait somewhen).

Sounds good to me.

I like SubmersionMetric (with parameter alpha) or is that too generic? We could also call them StiefelSubmersionMetric to be more specific (and I feel submersion is more concrete than normal).

Another approach would of course be to call it either HMSLMetric or HueperMarkinaSilvaLeiteMetric (where (a) yes I think that is a double surname in Portuguese and (b) also HüperMarkinaSilvaLeite would be possible, since we have proper utf8).

I lean towards StiefelSubmersionMetric since its sufficiently specific but still descriptive.

kellertuer commented 2 years ago

perfect, when I wrote my ideas, I also thought, the names might be a little too long and StiefelSubmersionMetric is specific enough I think, yes.