回転の最適化(リー代数)
目的関数$ f: {\rm SO}(3) \to {\mathbb R}を最小化する回転を見つけたい.
現在のステップの回転を$ {\boldsymbol R} \in {\rm SO}(3)として,これに微小回転$ \delta {\boldsymbol R} \in {\rm SO}(3)を適用して得られる回転$ \delta {\boldsymbol R}{\boldsymbol R}を次ステップの回転とする.
注意:$ \delta{\boldsymbol R} {\boldsymbol R}は,$ {\boldsymbol R}と$ \delta {\boldsymbol R}の回転ベクトルを足し合わせたベクトルから作られる回転行列ではない.あるいは,$ {\boldsymbol R}の回転ベクトルの最適化ではなく,$ \delta {\boldsymbol R}の最適化であることに留意せよ.
$ \delta {\boldsymbol R}の回転ベクトルを$ \omegaとして,$ \delta {\boldsymbol R}{\boldsymbol R}まわりでテイラー展開すると
$ f\left(\delta{\boldsymbol R}{\boldsymbol R}\right) = f\left({\boldsymbol R} \right) + \nabla f\left({\boldsymbol R}\right) \cdot \omega + \frac{1}{2} \omega^\top \nabla^2 f \left( {\boldsymbol R} \right) \omega + O \left( \omega^2 \right),
ここで,$ \nablaは$ \omega による微分.
最適化では、勾配法やニュートン法などでを最小化しそうな$ \omegaを見つけて更新する.
code:tex
{\boldsymbol R} = I + \hat{\omega} + \frac{1}{2} \hat{\omega}^2 + \cdots ,
に含まれる高次の項は不要なので,指数写像の一次,二次近似:
$ \delta {\boldsymbol R} {\boldsymbol R} = \left( {\boldsymbol I} + \hat{\omega} \right) {\boldsymbol R} + O(\omega^2),
$ \delta {\boldsymbol R} {\boldsymbol R} = \left( {\boldsymbol I} + \hat{\omega} + \frac{1}{2} \hat{\omega}^2 \right) {\boldsymbol R} + O(\omega^3),
を用いればよい.
$ \omega を決めた後に回転を更新ときは,近似を使わずに$ {\boldsymbol R} \leftarrow \delta {\boldsymbol R} {\boldsymbol R}として,次ステップに引き継ぐ.
具体例:
ある線形変換$ {\boldsymbol A}に最も近い回転$ {\boldsymbol R},つまり$ f\left( {\boldsymbol R} \right) = \left\| {\boldsymbol A} - {\boldsymbol R} \right\|_F を最小化する$ {\boldsymbol R}をニュートン法で求める.
ニュートン法は二次の項まで必要なので,二次の近似$ \delta {\boldsymbol R} {\boldsymbol R} \approx {\boldsymbol R} + \hat{\omega} {\boldsymbol R} + \frac{1}{2} \hat{\omega}^2 {\boldsymbol R}を用いる.
$ \begin{aligned} f \left( \delta {\boldsymbol R}{\boldsymbol R} \right) \approx ~ & {\rm tr} \left( \left( {\boldsymbol A} - \left( {\boldsymbol I} + \hat{\omega} + \frac{1}{2} \hat{\omega}^2 \right) {\boldsymbol R} \right)\left( {\boldsymbol A} - \left( {\boldsymbol I} + \hat{\omega} + \frac{1}{2} \hat{\omega}^2 \right) {\boldsymbol R} \right)^\top \right) \\ =~& {\rm tr} \left( {\boldsymbol A} {\boldsymbol A}^\top - {\boldsymbol R} {\boldsymbol A}^\top - {\boldsymbol A} {\boldsymbol R}^\top + {\boldsymbol I} \right) + {\rm tr} \left( - \left( \hat{\omega} + \frac{1}{2} \hat{\omega}^2 \right) {\boldsymbol R}{\boldsymbol A}^\top - {\boldsymbol A} {\boldsymbol R}^\top \left( - \hat{\omega} + \frac{1}{2} \hat{\omega}^2 \right) \right) + O ( \omega^3) \end{aligned}
第一項は$ f({\boldsymbol R})に一致,第三項は三次以上なので無視、第二項に含まれる係数を計算する.
一次の項
$ \begin{aligned} {\rm tr} \left( - \hat{\omega} {\boldsymbol R}{\boldsymbol A}^\top + {\boldsymbol A}{\boldsymbol R}^\top \hat{\omega} \right) & = 2 ~ {\rm tr} \left( {\boldsymbol A}{\boldsymbol R}^\top \hat{\omega} \right) = 2 A_{qk} R_{lk} \epsilon_{lpq} \omega_p \end{aligned}
を$ \omega_iで微分すると
$ 2 A_{qk} R_{lk} \epsilon_{liq} = 2 ~ \epsilon_{iqp} A_{qk} R_{lk} = 2 {\boldsymbol a}_k \times {\boldsymbol r}_k,
ここで,$ {\boldsymbol a}_i, {\boldsymbol r}_iは$ {\boldsymbol A}, {\boldsymbol R}の列ベクトル.
二次の項
$ \begin{aligned} {\rm tr} \left( - \frac{1}{2} \hat{\omega}^2 {\boldsymbol R}{\boldsymbol A}^\top - \frac{1}{2} {\boldsymbol A}{\boldsymbol R}^\top \hat{\omega}^2 \right) & = {\rm tr} \left( - \hat{\omega} {\boldsymbol R} {\boldsymbol A}^\top \right) \\ & = \epsilon_{kpl} \epsilon_{lqm} R_{mn} A_{kn} \omega_p \omega_q \\ & = \left( \left( \delta_{kq} \delta_{pm} - \delta_{km} \delta_{pq} \right) R_{mn} A_{kn}\right) \omega_p \omega_q \\ & = \left( R_{pn} A_{qn} + R_{kn}A_{kn} \right) \omega_p \omega_q \end{aligned}
を$ \omega_p, \omega_qで微分すると,
$ R_{pn}A_{qn} + R_{qn}A_{pn} + 2 R_{kn}A_{kn} = {\boldsymbol R}{\boldsymbol A}^\top + {\boldsymbol A}{\boldsymbol R}^\top +2 {\rm tr} \left( {\boldsymbol A} {\boldsymbol R}^\top \right) {\boldsymbol I}