SO(3), tangent spaces and tangent spaces at identity

46 views
Skip to first unread message

J Shi

unread,
May 18, 2024, 9:43:56 PMMay 18
to Manopt
Hi,

I'm going through Section 3 of Prof. Boumal's excellent textbook "An introduction to optimization on smooth manifolds" and referencing the manopt code, and I'm having a question regarding the use of Riemannian gradients in the case for steepest descent. 

Assuming we are working with M = SO(3) and a cost function f: M->R. The Riemannian gradient grad f = Proj_X(grad f^bar(x)) = X skew(X^T grad f^bar(x)). If X=I, then grad f = skew(X^T grad f^bar(x)). 

Here comes the part where I am having some confusion: for steepest descent, do we use the Riemannian gradient at X, or at identity? Based on manopt source code for SO(3) it seems like we need to use the gradient at identity. What's the reason behind this?

Thanks in advance for any assistance or advice.

Best,
Jingnan Shi






Ronny Bergmann

unread,
May 19, 2024, 8:53:01 AMMay 19
to Manopt
Hi,
“use” is a bit broad here.
Manopt _represents_ the tangent vectors using the tangent space at the identity. That way for example parallel transport is (in representation) the identity, which is nice (and fast).
But we only _represent_ them that way, since of course when we want to take a step (e.g. in gradient descent) using a retraction we have to – at least implicitly – convert it to the “right” tangent vector.
But we could also (and that is done in reality) say, that the retraction accepts as an input a tangent vector from the identity; in other words the multiplication with X is done during computation of the retraction.

So, the numerical representation of XA (A skew) as just A is mainly a numerical decision, since several things are then faster.

Best
Ronny

Nicolas Boumal

unread,
May 22, 2024, 4:43:47 AMMay 22
to Manopt
Hello,

Adding to Ronny's reply:  some manifolds have a function that translates between how we represent a tangent vector and the actual tangent vector (in the embedding space for example).

The function is called tangent2ambient.

For most manifolds, that function is identity: there is no difference between the actual tangent vector and the way we represent it numerically.

But for SO(n) (rotationsfactory), tangent2ambient is not identity: a tangent vector at X is of the form XO where O is skew-symmetric. We numerically store O. But that O "represents" XO. So, tangent2ambient transforms O into XO.

To be honest, while this is (arguably) a good thing to do numerically,  it has been a source of confusion for lots of users. This is all documented in "help rotationsfactory". Also, the tools checkgradient and checkhessian have some extra warning messages built-in to detect if users run into errors that may be related to that confusion and try to be helpful, but if you happen to have other ideas for how to make these things clearer, feel free to let us know.

Best,
Nicolas

J Shi

unread,
May 23, 2024, 4:56:33 PMMay 23
to Manopt
Hi Nicolas & Ronny,

Thanks for the detailed explanations. I think I understand it now.

Best,
Jingnan

Nicolas Boumal

unread,
Jul 5, 2024, 12:46:46 PMJul 5
to Manopt
This is now better documented here:

Reply all
Reply to author
Forward
0 new messages