[論文読み] ニューラルネットワークでの回転表現の連続性について

# はじめに
この記事はタイトルにある通り、論文:

> Zhou, Yi, et al. “On the Continuity of Rotation Representations in Neural Networks.” ArXiv:1812.07035 [Cs, Stat], June 2020. arXiv.org, http://arxiv.org/abs/1812.07035.

を読んで理解するための自分用メモのような物です。不必要だと思ったところは特に何も書いていないので、もし情報が足りないと思った場合は元論文をご覧ください。
専門的な知識が一切ない状態で理解しようとしているため、間違えている点等多々あると思います。もし何かありましたら、コメント・編集リクエスト等よろしくお願いいたします。
また、この記事の内容はは元論文そのままではなく、所々言い換えていますので、その点ご留意ください。

# On the Continuity of Rotation Representations in Neural Networks

## 1. Introductions
3次元空間での回転は基本的に 3D(オイラー角, 軸–角度表現) もしくは 4D(クオータニオン) を用いて表現されるのが一般的です。しかし、これらの表現は位相幾何学的問題によりニューラルネットワークの出力としては理想的とは言えません。
理論的には、なめらかもしくは強い連続性を持つ関数を用いるほうが近似誤差は小さくなるはずです。そのため、以降のセクションで連続的な回転表現の定義と上記の非連続的表現について調べ、その後有用な連続的回転表現を提案します。

## 3. Definition of Continuous Representation
### Terminology
- $SO(n)$ はn次特殊直交群(*special orthogonal group*, n次回転群) です。（$O(n)$ はn次直交群です。）

```math
SO(n)=\{A \in O(n)∣detA=1\}
```

- $S^n$ はn次単位球面です。

```math
S^n = \{x \in R^{n+1} : ||x|| = 1\}
```

-$R$ は表現空間です。詳細については`Continuous representation`の項で述べます。

### Motivating example: 2D rotations
先ずは2D回転について考えていきます。任意の2D回転 $M∈SO(2)$ は角度 $\theta \in R$ を用いて次のような行列で表現できます。

```math
M=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}
```

しかし、この表現方法は写像 $g: SO(2) \to R$ を考えたときに$g$が非連続になるという問題を抱えています。
例えば $R=[0, 2\pi)$ とした場合、 $g(M)$ の極限は $M=I$ の点で定義されません。一方からの極限で $0$ , もう一方は $2\pi$ となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431272/52069eef-d173-b5c4-5037-6f894a420d34.png)

### Continuous representation
「連続的な表現」の定義をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431272/ce4f291b-3ad9-7b99-105c-a8d0ec5ce089.png)
$R$ (*representation space*) はユークリッド位相を持つ実ベクトル空間の部分集合とします。
$X$ (*original space*) はコンパクト位相空間です。論文中ではたいていの場合 $SO(n)$ を指しています。
ネットワークの出力RとXの相互マッピング関数として写像 $f: R \to X$ と $g: X \to R$ を定義し、

```math
f(g(x)) = x,\, x \in X,
```

が成り立つ ( $f$ が $g$ の左逆元である) とき $(f, g)$ を *representation* と呼び、$g$ が連続的であるとき *representation は 連続的* です。

### Connection with topology
$(f, g)$ が*連続的representation*であるとき、$g$ はコンパクト位相空間からハウスドルフ空間への単射連続写像です。また、 $g$ の終域を $g(X)$ とすると $R$ の部分位相空間と $X$ の同相写像となるので、$g$ は $X$ から $R$ の埋め込みとなります。逆に言えば、$X$ から $R$ の埋め込みが存在しない場合、*連続的representation* $(x, g)$ は存在しません。
また、2つの回転 $r_1, r_2 \in R$ に対して回転合成を意味する演算 $\bullet$ を $r_1\bullet r_2 = g(f(r_1)f(r_2))$ として定義すると群 $(R, \bullet)$を定義でき、
この時 $g$ は群準同型写像になります。

## 4. Rotation Representation Analysis
### 4.1 Discontinuous Representation
特殊直交群 $SO(3)$ は 実射影空間 $\mathbb{R}P^3$ と位相同型であり、他論文[^1]によると $\mathbb{R}P^3$ から $\mathbb{R}^d$ への埋め込みは 任意の $d < 5$ で存在しません。
[^1]: D. M. Davis. Embeddings of real projective spaces. Bol. Soc. Mat. Mexicana (3), 4:115–122, 1998
これは、$SO(3)$ の*連続的representation* $(f, g)$ は $R = \mathbb{R}^b, b < 5$ のとき存在しないということと同値です。

### 4.2 Continuous Representation
#### Case 3: Continuous representation with n^2 - n dimensions for the n dimensional rotations.
$D$ を各列ベクトルが線形独立でない $\mathbb{R}^{n\times(n-1)}$ 行列全体の集合とし、

```math
X = SO(n)\\
R = \mathbb{R}^{n\times(n-1)} \backslash D\\
```

とします。

次に、$g_{GS}$ を単に入力された行列の最後列を除く関数

```math
g_{GS} \left(\begin{bmatrix} | && | \\ a_1 & \cdots & a_n \\ | && | \end{bmatrix}\right) = \begin{bmatrix} | && | \\ a_1 & \cdots & a_{n-1} \\ | && | \end{bmatrix}
```

と定義します。 $g_{GS}(X)$ の出力は Stiefel多様体です。

そして、 $f_{GS}$ を、グラムシュミットの直交化法と似た処理で

```math
f_{GS} \left(\begin{bmatrix} | && | \\ a_1 & \cdots & a_{n-1} \\ | && | \end{bmatrix}\right) = \begin{bmatrix} | && | \\ b_1 & \cdots & b_n \\ | && | \end{bmatrix} \\
b_i=\begin{bmatrix}\left\{\begin{array}{} N(a_1) & (i=1) \\ N(a_i - \sum_{j=1}^{i-1}(b_j\cdot a_i)b_j) & (2 \leq i < n) \\ det\begin{bmatrix} | && | & e_1 \\ b_i & \cdots & b_{n-1} & \vdots \\ | && | & e_n \end{bmatrix} & (i=n) \end{array}\right.\end{bmatrix}^T
```
と定義します。
$N(x)$ は正規化関数 $N(x) = \frac{x}{|x|}$ であり、$e_1,\dots,e_n$ はn次ユークリッド空間における標準基底ベクトルです。$f_{GS}$ の出力の最後列は、外積のn次元への一般化で求められます。
この時、 $(f_{GS}, g_{GS})$ は*連続的representation*です。

また、この場合 $R$ 上の演算 $r_1\bullet r_2 = g(f(r_1)f(r_2))$ は $f_{GS}(r_1)g_{GS}\circ f_{GS}(r_2)$ とすることができ、$g_{GS} \circ f_{GS}$ は

```math
g_{GS} \circ f_{GS} \left(\begin{bmatrix} | && | \\ a_1 & \cdots & a_{n-1} \\ | && | \end{bmatrix}\right) = \begin{bmatrix} | && | \\ b_1 & \cdots & b_{n-1} \\ | && | \end{bmatrix} \\
b_i=\begin{bmatrix}\left\{\begin{array}{} N(a_1) & (i=1) \\ N(a_i - \sum_{j=1}^{i-1}(b_j\cdot a_i)b_j) & (2 \leq i) \end{array}\right.\end{bmatrix}^T
```

であるため、計算を幾ばくか省略することができます。

#### Case 4: Further reducing the dimensionality for the n dimensional rotations.
$SO(n)$ の各列を $S^{n-1}$ 上の点とみなすことで、写像 $P: S^{n-1}\times \mathbb{R} \to \mathbb{R}^{n}$ と $Q: \mathbb{R}^{n} \to S^{n-1}\times \mathbb{R}$

```math
\vec{u} \in S^{n-1},\, a \in \mathbb{R},\, \vec{v} \in \mathbb{R}^{n} \\
P(\vec{u}, a) = \vec{u}\cdot\left(a + \sqrt{a^2+1}\right) \\
Q(\vec{v}) = \left(\frac{\vec{v}}{||\vec{v}||}, \frac{||\vec{v}||^2-1}{2||\vec{v}||}\right)
```

($Q$ は $P$ の左逆元) を用いて、Case3 からさらに次元を少なくすることができます。 ($\mathbb{R}^{n(n-2) + 2}$)

$M_j$ を行列 $M$ の $j$列のベクトル、$Q_1(v),\, Q_2(v)$ をそれぞれ $Q(v)$ の第一, 第二成分とします。
*representation* $(f_P, g_P)$ はこれらを用いて、

```math
g_P(X) = \left[X_1^1, X^2_1, \prod_{k=1}^{n-2}P(X_{k+2}, X^{k+1}_1)\right] \\
f_P(u) = f_{GS}\left(\begin{bmatrix} 
u_1 & | && |\\
u_2 & b_2 & \cdots & b_{n-1}\\
(\prod_{k=1}^{n-2}Q_2(v_{n(k-1)+1:nk}))^T &| && |
\end{bmatrix}\right), \\
v = u_{3:},\, b_i = Q_1(v_{n(i-2)+1:n(i-1)})
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431272/8b1cb734-69b4-8ef6-6bce-0661bc62564b.png)

## 5.Sanity Test

詳細は元論文参照
機械学習で 3D 空間上の回転表現各種 $R$ を出力するモデルを用いてテストをした結果、そのすべてにおいて 6D (Case 3) が一番の効率を示しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431272/5a394f07-3ac0-ff13-ca25-cd4f968c0c26.png)

# メモ
Human Body Kinematics 等で 3D rotation は多用するので、モデルとしては単純な変更(出力の形状を変更する)だけでで学習効率の向上が見込めるのは素直にうれしいですね。
5D表現 (Case 4) はDataSetの保蔵時に圧縮ができるかな？程度の使い道しか思いつきませんが、非線形になる問題をどうにかして回避する方法があればまた変わるかもしれません。