Post

SO(3)上的黎曼梯度

SO(3)上的黎曼梯度

原标题:\(\mathrm{SO(3)}\)上的黎曼梯度


Problem Statement

在\(\mathrm{SO(3)}\)上定义了一个势能函数后,我们希望求其梯度。与多元微积分里的梯度相比,需要解决的新问题有:

  • 方向导数的定义:因为存在\(\mathrm{SO(3)}\)流形约束,需要保证在\(X \in \mathrm{SO(3)}\)处加上方向向量微元\(Hdt\)后,\(X+Hdt\in \mathrm{SO(3)}\);在欧式空间中,方向向量微元仍属于原欧氏空间,然而由于流形的约束,\(H \in T_A \mathrm{SO(3)}\)在\(A\)处的切空间中,不再属于\(\mathrm{SO(3)}\)
  • 为了沿用多元微积分中梯度的定义(梯度与单位方向向量的内积等于在该方向向量上的方向导数),需要在切空间中定义内积
  • 定义好黎曼梯度后,如何求得黎曼梯度

00 概述

设约束流形为 \(\mathcal{M}\) ,当前点为 \(X\) ,实值函数 \(f: \mathcal{M} \rightarrow \mathbb{R}\) ,要求在\(X\)处的黎曼梯度 \(\mathrm{grad }f(X)\) ,首先计算欧式梯度 \(\nabla f(X)\) ,由于 \(X-\nabla f(X)\) 不一定仍在 \(\mathcal{M}\) 中,因此需要构造一个合适的映射:\(\mathbb{R}^n \rightarrow T_X \mathcal{M}\) 来将欧式梯度映射为黎曼梯度。

01 切向量与切空间

设 \(R(t)\) 为 \(\mathrm{SO(3)}\) 上的一条光滑曲线,设 \(R(t_0)=X\),则 \(H=\dot{R}(t_0)\) 即为 \(X\) 处的一个切向量。

因为 \(R(t)^{\top }R(t)=I\) ,对其求导得到

\[\dot{R}(t)^{\top }R(t) + R(t)^{\top }\dot{R}(t) =\mathbf0\]

即在\(\mathrm{SO(3)}\)中,\(X\)处的切向量满足 \(H^\top X + X^\top H=0\),所有在\(X\)处的切向量构成在\(X\)处的切空间 \(T_X \mathrm{SO}(3)\),即

\[T_X \mathrm{SO}(3)=\{ H: H^\top X + X^\top H=0 \}\]

设 \(\Omega = X^\top H\) ,则亦可表示为

\[T_X \mathrm{SO}(3)=\{ X\Omega: \Omega^\top + \Omega=0 \}\]

\(\Omega\) 为反对称矩阵,也可以理解为单位元处的切向量,因此说 \(\mathfrak{so}(3)\) 是 \(\mathrm{SO}(3)\) 单位元(幺元)处的切空间

02 切空间上的内积

在欧氏空间中,(向量)内积定义为 \(\langle a,b \rangle =a^\top b \space \space ,\forall\space \space a,b\in\mathbb{R}^n\)

沿用到欧氏空间子流形 \(\mathrm{SO(3)}\) 上,切空间 \(T_X \mathrm{SO}(3)\) 上的内积定义为:

\[\langle A,B \rangle _X := \mathrm{tr}(A^\top B)\]

内积定义的理解:

\[\mathrm{tr}(A^\top B) =\mathrm{tr}\left((X\Omega_A )^\top X\Omega_B\right)=\mathrm{tr}\left(\Omega_A^\top X^\top X \Omega_B\right)=\mathrm{tr}\left(\Omega_A^\top \Omega_B \right)=2a^\top b\]

其中\([a]=A,[b]=B\)

因此,如此定义的切空间内积对应于\(\mathbb{R}^3\)中角速度向量的标准点积,只相差一个常数因子2

因此 \(\langle A,B \rangle _X := \mathrm{tr}(A^\top B)\) 在\(\mathrm{SO(3)}\)所有的切空间上定义了一个左不变黎曼度量

03 方向导数

对 \(f: \mathcal{M} \rightarrow \mathbb{R}\) ,可以在 \(T_X \mathrm{SO}(3)\) 上定义 \(f\) 在 \(H\in T_X \mathrm{SO}(3)\) 方向上的方向导数:

\[\mathbf{D}_Hf(X) = \lim_{t \rightarrow 0} \frac{f(X+tH)-f(X)}{t}\]

04 黎曼梯度

在多元微积分中,方向导数定义为

\[\begin{align*} \mathbf{D}_v f(x) &=\lim_{t \rightarrow 0} \frac{f(x+tv)-f(x)}{t}\\\\ &=v^\top \cdot\nabla f(x) \end{align*}\]

其中\(\|v\|=1\)。

上式的第二行可以视作对欧式梯度的定义,即梯度与单位方向向量的内积(向量点乘)等于该方向上的方向导数,其存在性和唯一性的证明可由Taylor展开得到。显然,梯度即是使方向导数最大的方向。

重写上式为

\[\mathbf{D}_v f(x)=\langle \nabla f(x),v\rangle\]

可以得到黎曼梯度 \(\mathrm{grad} f(X)\) 的定义:

对于黎曼流形 \(\mathrm{SO(3)}\) 和实值函数 \(f:\mathrm{SO(3)}\rightarrow \mathbb{R}\) ,函数 \(f\) 在 \(X\) 处的黎曼梯度 \(\mathrm{grad} f(X)\) 是 \(T_X \mathrm{SO}(3)\) 中的一个向量,由下式唯一确定:

\[\mathbf{D}_\xi f(X)=\langle \mathrm{grad} f(X),\xi\rangle\space,\space\space \forall\xi \in T_X \mathrm{SO}(3)\]

由于 \(\mathrm{SO(3)}\) 是欧氏空间中的黎曼子流形,因此其黎曼梯度就是欧式梯度 \(\nabla f(X)\) 在 \(T_X \mathrm{SO}(3)\) 中的投影,即

\[\mathrm{grad} f(X) = Proj._{\space T_X \mathrm{SO}(3)}\left(\nabla f(X)\right)\]

投影计算公式为(推导见下一节):

\[Proj._{\space T_X \mathrm{SO}(3)}\left( M \right)=X skew(X^\top M)\\ ,其中skew()是反对称算子:skew(A)=\frac{A-A^\top}{2}\]

展开得:

\[\begin{align*} \mathrm{grad} f(X) &= Xskew\left( X^\top \nabla f(X) \right)\\ &=\frac{1}{2}X\left( X^\top \nabla f(X) - \nabla f(X)^\top X\right)\\ &=\frac{1}{2}\left(\nabla f(X) - X \nabla f(X)^\top X\right)\\ &=\nabla f(X) - X sym\left( X^\top \nabla f(X)\right) \end{align*}\]

其中,\(sym\) 是对称算子:\(sym(\cdot)=\frac{\cdot \space\space + \space\space \cdot^\top}{2}\)。

05 投影公式的推导

设 \(G\in \mathbb{R}^{3\times3}\) ,其在切空间 \(T_X \mathrm{SO}(3)\) 上的投影 \(Proj._{\space T_X \mathrm{SO}(3) }G \space\dot{=}\space X\Omega\) ( \(\Omega\)待求 )需要满足:

\[\langle X\Omega,\xi \rangle _X=\mathrm{tr}\left( (X\Omega)^\top\xi\right)=\mathrm{tr}\left( G^\top\xi\right), \space\space \forall\xi\in T_X \mathrm{SO}(3)\]

这是投影的本质属性。

设 \(\xi=X\Omega_\xi\) ,则

\[\mathrm{tr}\left( (X\Omega)^\top X\Omega_\xi\right)=\mathrm{tr}\left( \Omega^\top X^\top X\Omega_\xi\right)=\mathrm{tr}\left( \Omega^\top\Omega_\xi\right)\]

投影的定义式改写为

\[\mathrm{tr}\left( \Omega^\top\Omega_\xi\right)=\mathrm{tr}\left( G^\top X\Omega_\xi\right),\space\space \forall \space\Omega_\xi^\top =-\Omega_\xi\]

注意到,第二节中定义的切空间内积继承自Frobenius内积,而在Frobenius内积下,对称矩阵与反对称矩阵正交,即

\[\mathrm{tr}\left( S^\top A \right)=0, \space\forall S^\top =S,A^\top =-A\]

而任意矩阵可分解为对称部分和反对称部分:

\[G=\frac{G+G^\top}{2}+\frac{G-G^\top}{2}=sym(G)+skew(G)\]

因此 \(\mathrm{tr}\left( \Omega^\top\Omega_\xi\right)=\mathrm{tr}\left( G^\top X\Omega_\xi\right)\) 当且仅当

\[\Omega^\top =skew(G^\top X)=\frac{1}{2}(G^\top X - X^\top G)\]

故

\[Proj._{\space T_X \mathrm{SO}(3) }G=Xskew(G^\top X)^\top=Xskew(X^\top G)\]

设 \(G=\nabla f(X)\) 即得到欧式梯度在切空间 \(T_X \mathrm{SO}(3)\) 上的投影(即黎曼梯度)\(\mathrm{grad}f(X)\) :

\[\begin{align*} \mathrm{grad}f(X)&=Proj._{\space T_X \mathrm{SO}(3)}\left(G\right)= Xskew(X^\top G)\\\\ &=\frac{1}{2}\left(\nabla f(X) - X \nabla f(X)^\top X\right) \end{align*}\]

\(\mathrm{grad}f(X)\) 满足:

\[\langle \mathrm{grad}f(X),\xi\rangle _X=\mathrm{tr}\left( G^\top\xi\right)\]
This post is licensed under CC BY 4.0 by the author.