しゃけのブログ

某大学院で研究している人の備忘録

状態推定のためのLie群上の最適化4

前回の投稿からだいぶ時間が空いてしまいました.

今回は、Lie群上の最適化でとても重要な要素となる、導関数(Jacobian)についてまとめます.

実数空間におけるJacobian

復習として実数空間で定義される関数のJacobian(ヤコビ行列)についてみていきましょう.

ベクトル入力ベクトル出力の関数 f: \mathbb{R}^m \rightarrow \mathbb{R}^nについて,Jacobianは次のように定義されます.

 \begin{align}
\displaystyle \textbf{J} = \displaystyle \frac{\partial f({\boldsymbol x})}{\partial {\boldsymbol x}} \triangleq \begin{bmatrix}
\frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_m} \\
\vdots & & \vdots \\
\frac{\partial f_n}{\partial x_1} & \cdots & \frac{\partial f_n}{\partial x_m}
\end{bmatrix} \in \mathbb{R}^{n \times m}
\end{align}

ここで,各列  \begin{array}\displaystyle \textbf{j}_i = \left[\frac{\partial f_1}{\partial x_i} \cdots \frac{\partial f_n}{\partial x_i}\right]^\top \end{array} は次のように定義されます( {\boldsymbol e}_i \mathbb{R}^nにおける i番目の自然な基底.)

 \begin{align}  \label{2}
\displaystyle \textbf{j}_i = \displaystyle \frac{\partial f(\boldsymbol x)}{\partial x_i} \triangleq \lim_{h \rightarrow 0} \frac{f({\boldsymbol x} + h {\boldsymbol e}_i) - f({\boldsymbol x})}{h} \in \mathbb{R}^n 
\end{align}

つまりJacobianは,定義域の変数の各基底方向への微小な移動に対する変化率(ベクトル)を横方向に並べたもの,と捉えることができます.

元解説論文では,次のような演算を定義してJacobianの定義を簡潔にしています.

 \begin{align}
\displaystyle \textbf{J} = \displaystyle \frac{\partial f(\boldsymbol x)}{\partial {\boldsymbol x}} \triangleq \lim_{{\boldsymbol h} \rightarrow {\boldsymbol 0}} \frac{f({\boldsymbol x} + {\boldsymbol h}) - f({\boldsymbol x})}{{\boldsymbol h}} \in \mathbb{R}^{n \times m} \label{1}
\end{align}

ベクトルによる割り算なんて定義していないのですが,「分母の要素ごとに分子の要素を割って並べる」という操作とします.


Jacobianは直観的に,「変数 \boldsymbol{x}の微小移動を,関数 fの微小移動に変換する線形写像」,と考えることができます. 次の一次近似はその線形写像を表しています.

 \begin{align}
\ f({\boldsymbol x} + {\boldsymbol h}) -  f({\boldsymbol x}) \rightarrow \textbf{J}{\boldsymbol h},\ \ as\ {\boldsymbol h} \rightarrow 0,
\end{align}

Lie群上のRight Jacobian

上のJacobianは,実数空間上の関数値の微小変化率という形で定義されています.

前の話で,定義したLie群の要素間の和と差  \oplus,  \ominusを定義しました. このLie群上の演算を使うと,Lie群からLie群への写像 f: \mathcal{M} \rightarrow \mathcal{N}の,Jacobianを考えることができます. つまり,あるLie群上の変数(例えば回転)を別のLie群上(これはユークリッド空間( \in Lie群)でもいい)に移す関数のJacobianを考えることができるということです.

Right Jacobianの定義

まずは,right-  \{\oplus, \ominus\}を用いて,点 \mathcal{X} \in \mathcal{M}における Jacobianを次のように定義します.

 \begin{eqnarray}
\ \displaystyle \frac{^{\mathcal{X}} D f(\mathcal{X})}{D\mathcal{X}} &\triangleq& \displaystyle \lim_{\boldsymbol{\tau} \rightarrow 0} \displaystyle \frac{f(\mathcal{X} \oplus \boldsymbol{\tau}) \ominus f(\mathcal{X})}{\boldsymbol{\tau}} \in \mathbb{R}^{n\times m} \\
&=& \displaystyle \lim_{\boldsymbol{\tau} \rightarrow 0} \frac{\mathrm{Log}\left(f(\mathcal{X})^{-1} \circ f(\mathcal{X} \circ \mathrm{Exp}(\boldsymbol{\tau}))\right)}{\boldsymbol \tau} \\
&=& \left.\frac{\partial \mathrm{Log} \left(f(\mathcal{X})^{-1} \circ f(\mathcal{X} \circ \mathrm{Exp}(\boldsymbol \tau))\right)}{\partial {\boldsymbol \tau}}\right|_{\boldsymbol \tau = 0}
\end{eqnarray}

これを「fの点 \mathcal{X} \in \mathcal{M}におけるright Jacobian」と呼ぶことにします.

さて,これを式\eqref{2}のように説明変数の次元ごとのベクトルとして表現すると,次のようになります.  \boldsymbol{\sigma}_i(h)が,式\eqref{2}における \mathbf{j}_iの分子に対応しています.

 \begin{align} 
\boldsymbol{\sigma}_i (h) = f({\mathcal{X}} \oplus h {\boldsymbol e}_i) \ominus f(\mathcal{X}) \in \mathbb{R}^n
\end{align}
Right Jacobianの直観的な理解

この導関数の直観的な理解は 「点 \mathcal{X}の微小移動に対する,関数 fの変化度合い」 です.


ここで「接空間」について思い出してみましょう.接空間はある点における速度ベクトルがなす空間を指していました.

ならば,点 \mathcal{X}における微小移動も,関数 fの変化の度合い(言い換えれば f(\mathcal{X})における微小移動)も それぞれ \mathcal{X} f(\mathcal{X})で定義された接空間に属する要素であることが分かります.

つまり,(Right) Jacobianとは点 \mathcal{X} \in \mathcal{M}における接空間  T_{\mathcal X} \mathcal{M}から, f(\mathcal{X}) \in \mathcal{N}における接空間  T_{f(\mathcal{X})} \mathcal{N}への写像であるといえます.


もっと言えば,この写像は行列で表されるので線形写像となります. 実際,次のような一次近似が成り立ち,これはまさにそれぞれの空間における接空間同士の写像を表しています.

 \begin{align}
\ f(\mathcal{X} \oplus\ ^{\mathcal{X}} {\boldsymbol \tau}) \ominus  f({\mathcal x}) \rightarrow \frac{^{\mathcal{X}} D f(\mathcal{X})}{D\mathcal{X}}\ ^{\mathcal{X}} \boldsymbol{\tau},\ \ as\ ^{\mathcal{X}} \boldsymbol{\tau} \rightarrow 0,
\end{align}

ここで \ ^\mathcal{X}\boldsymbol{\tau}は点 \mathcal{X}における微小移動です. 点 \mathcal{X}によってこの接空間は変わってしまうので,一般的に T_{\mathcal{X}}\mathcal{M}のような接空間は,localな接空間と呼ばれます.

Lie群上のLeft Jacobian

Right Jacobianではright- \{\oplus,\ominus\}でJacobianを定義しました. 同様にleft- \{\oplus,\ominus\}を使ってleft Jacobianも定義することができます.

Left Jacobianの定義
 \begin{eqnarray}
\ \displaystyle \frac{^{\epsilon} D f(\mathcal{X})}{D\mathcal{X}} &\triangleq& \displaystyle \lim_{\boldsymbol{\tau} \rightarrow 0} \displaystyle \frac{f(\boldsymbol{\tau} \oplus \mathcal{X}) \ominus f(\mathcal{X})}{\boldsymbol{\tau}} \in \mathbb{R}^{n\times m} \\
&=& \displaystyle \lim_{\boldsymbol{\tau} \rightarrow 0} \frac{\mathrm{Log}\left(f( \mathrm{Exp}(\boldsymbol{\tau}) \circ  \mathcal{X})  \circ f(\mathcal{X})^{-1}\right)}{\boldsymbol \tau} \\
&=& \left.\frac{\partial \mathrm{Log} \left(f(\mathrm{Exp}(\boldsymbol{\tau}) \circ  \mathcal{X})  \circ f(\mathcal{X})^{-1}\right)}{\partial {\boldsymbol \tau}}\right|_{\boldsymbol \tau = 0}
\end{eqnarray}
Left Jacobianの直観的な理解

ここで, \boldsymbol{\tau} \in T_{\epsilon} \mathcal{M}であり,分子が T_{\epsilon} \mathcal{N}に属することに注意します. このことから,left Jacobianはglobalな接空間を写像する線形写像(行列)となります. 言い換えると, \mathcal{M} \mathcal{N}のLie代数を写像する行列を示すことになります.

Right Jacobianの時と同様に,一次近似が次のように計算できます.

 \begin{align}
\ f(\ ^{\epsilon} {\boldsymbol \tau}  \oplus \mathcal{X})  \ominus f({\mathcal x}) \rightarrow \frac{^{\epsilon} D f(\mathcal{X})}{D\mathcal{X}}\ ^{\epsilon} \boldsymbol{\tau},\ \ as\ ^{\epsilon} \boldsymbol{\tau} \rightarrow 0,
\end{align}

Crossed right-left Jacobian

上のようなright, leftそれぞれの \oplus,  \ominusで定義された{Right, Left} Jacobian.それぞれ写像する接空間の定義がlocal であるか globalであるかの違いがありました.

ところで,前の章でlocalな接空間とglobalな接空間を変換する演算としてAdjoint(随伴行列)を導入しました. この演算を使うと,それぞれのJacobianを相互に次のように変換することができるようになります.

 \begin{align}
\frac{^{\epsilon} D f(\mathcal{X})}{D\mathcal{X}} \mathbf{Ad}_{\mathcal X} = \mathbf{Ad}_{f(\mathcal X)} \frac{^{\mathcal{X}} D f(\mathcal{X})}{D\mathcal{X}}
\end{align}

このような変換は,いずれ状態変数の最適化を考える上で問題を簡単にするのに大変役立っていくので,覚えておいて損はないと思います.