『日経Robotics デジタル版(電子版)』のサービス開始を記念して、特別に誰でも閲覧できるようにしています。
ロボットにタスクを指示する際、人がロボットを動かして、実際にそのタスクをデモンストレーションし、それを繰り返すというアプローチは直感的かつ強力である。しかし、このアプローチは汎化という面で強い制限がある。
例えば、グリッパー付きのロボットアームを使ってマグカップを収納ラックに立てかけるようなタスクを考え、デモンストレーションをしたと考える。この場合、デモンストレーションした時と少しでも異なる環境、例えば様々な形状のマグカップ、収納ラック、様々な初期状態に対応することは容易ではない。マグカップが少し背が低く、取っ手が大きくなっている場合はどうか。マグカップが斜めに配置されている場合はどうかといったようにである。

このような問題に対し、Neural Descriptor Fields(NDF、ニューラル記述子場)を利用することで、数例のデモンストレーションからでも環境が異なる場合に対応できることが示された1)。
NDFは例えば10回の試行のみで、様々な形状のマグカップ、初期状態に対し、90%の成功率でタスクを成功させることができた(図1)。従来の強化学習や模倣学習と比べて劇的に少ない試行で学習することができる。今回はこのNDF、およびその実現に貢献しているVector Neuron2)について解説する。
NDF環境中の位置や姿勢の記述子場
NDFは対象タスク中における各位置や各姿勢を記述子(ベクトル)に変換して表すネットワークであり、位置や姿勢の場を表現する。この記述子は、形状が多少異なっている場合や、座標軸が変わったとしても対応するような位置/姿勢に対し同じような記述子を与えるように設計されている。これにより、異なる環境間での位置や姿勢の対応関係を求められるとともに、参照位置/姿勢に対して、現状の位置/姿勢がどの程度異なっているのかを表すエネルギー場を自然に定義することができ、このエネルギー場上での最適化を行うことで参照位置/姿勢までの軌道を求めることができる。
Neural Point Descriptor
始めに、位置(点)に対する記述子を与えるNeural Point Descriptor Fieldsを紹介する。Neural Point Descriptor Fieldsは関数で表現される。この関数$f(\mathbf{x}|\mathbf{P})$は環境から得られた点群$\mathbf{P}$で条件付けされ、3次元座標入力$\mathbf{x} \in \mathbb{R}^3$を与えると、その記述子を表すベクトル$\mathbf{d} \in \mathbb{R}^k$を返す。この記述子$\mathbf{d}$は点群$\mathbf{P}$が表す環境における位置$\mathbf{x}$の空間的な意味を符号化しており、例えばマグカップがある位置/姿勢における点群の場合、各点について、それが取っ手に近い、縁である、内部での右側であるといったような情報を符号化する。
NDFは記述子を与える関数を、物体形状を表すOccupancy Networkとよばれる関数を利用して表現する。Occupancy Networksは点群と入力座標が与えられた時、その入力座標が点群として観測されている物体の内部であるか外部であるかの2値を分類するようなネットワークである。この分類境界面は物体表面を表す。このOccupancy Networkを学習するためには点群データと物体の内外判定情報のみ必要であり、対応関係の教師ラベルなどが必要ないことに注意してほしい。
このOccupancy Networkは点群を潜在表現に変換する符号化器と、潜在表現と入力座標が与えられ、2値分類を行う分類器で構成される。この分類器の各層は物体表面を段階的に細かく分類するのに対応し、その活性値は物体の特徴を表している。そこで、Occupancy Networkの分類器の各層の活性値を結合して得られたベクトルを記述子として利用する。この記述子は先程述べた似た意味の位置に対し似た記述子を与えるという特徴を達成している。
また、この記述子は取っている座標軸が変わったとしても同じであってほしい。これを式で表すと任意のSE(3)変換$(\mathbf{R}, \mathbf{t}) \in \text{SE(3)}$($\mathbf{R}$は回転行列、$\mathbf{t}$は並進移動ベクトル)に対し、次が成り立つことが必要である。
\[f(\mathbf{x}|\mathbf{P}) \equiv f(\mathbf{R} \mathbf{x} + \mathbf{t}| \mathbf{R} \mathbf{P} + \mathbf{t})\]
これを達成するため$f$はSE(3)変換に対し同変であるようにする。並進移動については点群と入力座標を点群の中心を引いた形にすれば達成でき、回転同変については後述するVector Neuronを使って達成できる。
Neural Pose Descriptor
次に方向(姿勢)についての記述子であるNeural Pose Descriptorを説明する。操作タスクにおいては位置だけでなく方向(姿勢)も重要となる。
例えばグリッパーを使ってマグの取っ手を掴む際は、グリッパーのマグに対する角度が重要となる。この姿勢は並進と方向からなる6次元の自由度を持ち、これを指定できる必要がある。Neural Pose Descriptor Fieldsは固定のクエリ点群を用意し、各クエリ点の記述子を結合したベクトルを、姿勢を表す記述として利用する。
エネルギー最小化による軌道生成
Neural Point Descriptorでは現在の入力点群$\mathbf{P}$と位置$\mathbf{x}$、参照点群$\hat{\mathbf{P}}$と参照位置$\hat{\mathbf{x}}$が与えられた時、現在の点群における位置がどれだけ参照点群における参照位置と離れているかは、次のエネルギー場で与えられる。
\[E(\mathbf{x}|\hat{\mathbf{P}}, \mathbf{P}, \hat{\mathbf{x}}) = ||f(\hat{\mathbf{x}}|\hat{\mathbf{P}}) - f(\mathbf{x} | \mathbf{P})||\]
これは入力と参照が対応している場合、それらの記述子が似ている場合はエネルギーは小さく、そうでなければエネルギーは高くなることを利用している。
このエネルギー場上で、対応する点$\bar{\mathbf{x}}$は最小化問題を解くことで求められる。
\[\bar{\mathbf{x}} = \arg \min_{\mathbf{x}} E(\mathbf{x}|\hat{\mathbf{P}}, \mathbf{P}, \hat{\mathbf{x}})\]
よって現在の点から対応点まではエネルギー上で最適化し、最小化するような点を探すことで達成できる。これと同様に姿勢についても姿勢$\mathbf{T}$についてのエネルギー場を考え、その最小化問題を解くことで姿勢を求めることができる。
このエネルギー関数を使い、デモンストレーション中の接触位置や姿勢を参照点/姿勢とし、エネルギー最小化問題を解くことで、デモンストレーションを模倣することができる。冒頭にあげたように、このアプローチによって非常に少ない試行回数で環境が異なる場合でも高い成功確率を達成することができている。
Vector Neurons SE(3)同変なNN
このNDFは入力に対するSE(3)(並進移動と回転)変換について同変となっていることが重要である。学習中にはなかったような姿勢にも対応でき、高い汎化性能を達成する。この実現に貢献しているのがVector Neuronである。
Vector NeuronはSE(3)のうち回転同変を達成するようなニューラルネットワークの設計方法である。これまでもSE(3)同変を達成するニューラルネットワークは多く提案されていたが、いずれもネットワーク設計の制約が大きかったり、専門知識を必要とした。これに対しVector Neuronは汎用的なネットワークであり、専門知識を必要とせず単純である。これについて以下で説明する。
通常のニューラルネットワークは内部状態の各ニューロンはスカラー値$z \in \mathbb{R}$を持ち、チャンネル数が$C$の層の活性値は$[z_1, z_2, \ldots, z_C] \in \mathbb{R}^C$という$C$次元ベクトルで表される。これに対しVector Neuronは各ニューロンを3次元のベクトル$\mathbf{v}$で表す。そしてチャンネル数が$C$の時の活性値を$\mathbf{V} = [\mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_C] \in \mathbb{R}^{C \times 3}$という行列で表し、これらが$N$個集まった集合(点群など)からなる入力の活性値は$\mathcal{V} = \{\mathbf{V}_1, \mathbf{V}_2, \ldots, \mathbf{V}_N\} \in \mathbb{R}^{N \times C \times 3}$のようなテンソルで表す。関数$f$は入力が$\mathcal{V}$、任意の回転操作$\mathbf{R} \in \text{SO(3)}$に対し、$f(\mathcal{V}R; \theta) = f(\mathcal{V}; \theta) R$を満たせば回転同変である。これを満たせるように結合層、活性化関数を設計していく。
始めに結合層であるが、重み行列$\mathbf{W} \in \mathbb{R} ^ {C' \times C}$を使って$\mathbf{V}' = f_{lin}(\mathbf{V}; \mathbf{W}) = \mathbf{W}\mathbf{V}\in \mathbb{R}^{C' \times 3}$と定義する。このとき、任意の回転行列$R$に対し
\[f_{lin}(\mathbf{V}R; \mathbf{W}) = \mathbf{W}\mathbf{V} R =f_{lin}(\mathbf{V}; \mathbf{W}) R = \mathbf{V}'R\]
を満たすため、この結合層は回転同変である。
次に活性化関数であるが、通常のReLUは固定の境界面を使って非線形変換を行うので回転同変ではない。回転同変にするためには、入力を回転させた時、境界面も同様に回転する必要がある。そこで、固定の境界面でなく、入力から回転同変な変換を使って境界面を決定し、その境界面を使って非線形変換を行う。プーリング層もこれと同じアプローチで実現できる。
最後に、同変から不変にする方法だが、回転同変な特徴量$\mathbf{V} \in \mathbb{R}^{C \times 3}$、と他の回転同変な特徴量$\mathbf{T} \in \mathbb{R}^{C' \times 3}$の転置$\mathbf{T}^T$間の積は回転不変になることを利用する。
\[(\mathbf{V}R)(\mathbf{T}R)^T = \mathbf{V}RR^T \mathbf{T}^T =\mathbf{V}\mathbf{T}^T\]
今の特徴量との転置との積$\mathbf{V}\mathbf{V}^T$でも不変となるが、次元数が$C \times C$と大きくなるため、代わりにそのチャンネル数を少なくした特徴量の転置との積を計算して不変量を得る。
NDFは3次元でのタスク教示を大きく変えうる
Neural Descriptor Fieldsは3次元空間で操作を伴うようなタスクにおいて、対応関係を教師なしで求められ、形状が違っても汎化できること、また、そこでSE(3)同変な記述子を用いることで、初期状態や姿勢の違いについても汎化できることを示した。これにより劇的に少ないデモンストレーション数でタスクを指示できることを示した。
また今回、入力として点群を利用しているが、近年進展している画像からの3次元復元を用いれば、今後、通常のカメラや単眼カメラを用いても同様の手法を実現できる可能性がある。
2) C. Deng et al.,“Vector Neurons: A General Framework for SO(3)-Equivariant Networks,” https://arxiv.org/abs/2104.12229
Preferred Networks 代表取締役 最高研究責任者
