FEM と幾何学の機械学習

はじめに

数値シミュレーションはものづくりのプロセスにおいて重要ですが、近年その計算コストが問題視されてきています。また、数値シミュレーションはそれ自体が目的ではなく、それを設計にフィードバックすることによる最適設計の実現が目的であることが多いです。そういった活動を総称して Computer Aided Engineering ( CAE )といいます。

科学計算総合研究所(Research Institute of Computational Science Co. Ltd., RICOS )では、CAE を用いた理想的な最適設計を機械学習の技術を用いて実現しようとしています。特に、有限要素法(Finite Element Method, FEM )の機械学習に注力しています。具体的な方針を以下に示します:

  • 計算コストの削減:FEM シミュレーションを機械学習モデルで置き換える(順問題の学習)
  • 最適化計算の効率化:FEM シミュレーションの結果から入力を推定する機械学習モデルを作成する(逆問題の学習)

ひとつめの、FEM シミュレーションを機械学習モデルで置き換えるほうはイメージがつかみやすいのではないでしょうか。シミュレーションをするアルゴリズムを機械学習で置き換えることにより、短時間でシミュレーション結果を近似的に求めることができます。

ふたつめの FEM シミュレーションの結果から入力を推定する機械学習モデルを作成するほうは、少し発想の転換が必要かもしれません。最適化とは、ある望みの状態を実現しているときの条件を求める問題であると言えますが、これは望みの状態(計算結果)を入力としてそのときの条件(計算の入力)を出力として得る問題とも言えます。すなわち、結果から原因を推定する、 逆問題 ととらえることができます。すなわち、 FEM の逆問題を解くアルゴリズムを機械学習で置き換えれば、短時間で最適化結果を近似的に求めることができます。

FEM の順問題と逆問題の例。逆問題では、力と変位の関係からそれを満たす形状を推定している。

このように、FEM と機械学習を組み合わせることで、今までより一層ものづくりのプロセスが加速されることが期待できます。そこで、ここでは FEM の機械学習について軽く触れ、その後で FEM の機械学習にとって不可欠である幾何学の機械学習について紹介します。中でも、幾何学の機械学習についての論文紹介がメインの内容になります。

FEM の機械学習

FEM の機械学習のよいところとして、教師データの作りやすさが挙げられます。特に FEM の順問題や逆問題を解く機械学習モデルを作成する場合、機械学習モデルの入出力は FEM によるシミュレーションの入出力となります(逆問題の場合は入力と出力を入れ替える)。シミュレーションはコンピュータにより自動的に行えるため、人手を介さず膨大なデータを作ることが可能となります。また、他の機械学習では起こりがちなデータのノイズや人手ラベリングの誤りといった問題も生じないため、非常に質のよいデータが得られることも特長の一つです。

一方で、FEM のデータ構造に起因した難点もあります。FEM では メッシュ と呼ばれる、形状を単純形状で分割したモデルを用います。このメッシュのマス目のそれぞれに材料の固さや温度など、用途に応じてさまざまな物理量が付与されているわけです。FEM では形状が非常に重要なので、この形状をいかにして機械学習モデルに認識させるかがひとつの鍵となります。すなわち、 幾何学の機械学習 が重要になります。

ml_fem_geometry_fig2@2x

幾何学 の機械学習

幾何学の機械学習で深層学習を用いたものは特に Geometric Deep Learning という言葉でまとめられているようです。Google Trends で見てみると、近年注目度が増してきてはいるものの、まだまだポピュラーとはいえないようです1

Geometric Deep Learning がまだあまりポピュラーになっていない原因としては、特徴量選択の難しさと学習アルゴリズムの難しさが挙げられると思います。詳しくは後述しますが、形状(とくに 3 次元形状)を表す方法は何通りもあり、またどれも一長一短でこれがすべてにおいてベストといったものは存在していない現状です。学習アルゴリズムはデータ構造に依存する部分も大きいため、当然学習アルゴリズムの選択も難しくなってきます。

しかしながら、物体検知やモーションキャプチャなどの領域で有用であることからコンピュータビジョンなどの領域では盛んに研究され始めている分野でもあります。この節では、Ahmed et al. のサーベイ論文2 をベースに、3 次元形状の表現方法とその機械学習の例について紹介してきます。

3 次元形状の表現方法

3 次元形状の表現方法は、以下の図がわかりやすいと思います。この論文では大きく、Euclidean-structured data と Non-Euclidean data に分けています。ここではざっくり、画像のように格子状の構造になっているデータ(Euclidean-structured data)かそうでないデータ(Non-Euclidean data)か、くらいのイメージで十分かと思います3。以下では、それぞれの表現方法について見ていきます。

3 次元形状の表現方法の一覧
3 次元形状の表現方法の一覧

3D shape descriptor

3D shape descriptor は、3D オブジェクトの空間から有限次元の別の空間への写像と考えられます4。例えば、形状をモーメント、オイラー標数などの位相不変量、フーリエ変換をした際のスペクトラムなどに変換し、それを特徴量とする方法です。近年では、手でこれらの特徴量を抽出して、より高次な特徴量を機械学習によって生成するといったことも行われているようです。

長所としては、データ構造が単純であるため、異なる形状との比較がしやすいことが挙げられます。例えばモーメントは 1 次元の量なので、それの差をとれば少なくとも形状のモーメントが異なることがわかります。短所としては、3 次元形状を何か別の形式に変換してしまうので、その際に形状の情報が失われてしまう、すなわち複雑形状には向かないことです。

3D data projection

こちらも 3D shape descriptor に似ていますが、形状から抽出した特長の場を 2 次元の面に射影するという方法です。この射影する先は一般に曲面であり、必ずしも平面でなくても構いません。

長所としては、球面や円筒面に投影することによって、回転対称な形状に対して一貫性のある表現が得られることです。対する短所としては、射影によりやはり 3 次元形状がもつリッチな情報が多少失われてしまい、複雑形状の表現には向かないことです。

RGB-D data

RGB-D data は、 Microsoft の Kinect などによって近年ポピュラーになってきた形式です。色彩を表す際に通常用いられる RGB に加えて深さの情報を加えた RGB-D の 4 チャネルの画像として 3 次元形状を表現します。通常の画像に比べて、深さの情報を持っているのでどの部分がカメラに近く、どの部分がカメラより遠いかがより確からしく判定できます。

長所としては、画像のフォーマットにかなり近いためシンプルに扱えることと、データセットが潤沢にあることです(これはデータ構造そのものの長所ではないですが)。一方、論文には書いていませんが、これも 2 次元のデータへの変換ですので、入り組んでいて内部構造を持つような複雑形状には不向きであると考えられます。

Multi-view data

こちらも画像のアプローチですが、複数の画角で 3D オブジェクトを描画し、その複数の画像をまとめてひとつの特徴量として扱おうというものです。こちらも画像の集まりなので扱いやすいことが長所で、画像の数や位置を適切に調整すれば、後述するボクセルベースの手法を上回る性能が出ている例もあるようです。ただし、何枚の画像が必要で、どういった画角で描画すればよいのかがタスクや対象形状によりけりでチューニングが必要といったところが短所として挙げられると思います。

Volumetric data

今までは紹介したものは画像に変換するアプローチがメインでしたが、こちらは 3 次元データを 3 次元データとして扱う手法です。中でもボクセル(Voxel)は画像の三次元版とも言えるようなデータで、3 次元空間にある格子状のセルそれぞれがオブジェクトで埋まっているか埋まっていないかを表現する形式となります。8 分木ではそれをもう少し複雑にして、形状の表面まわりではセルを細かくとり、それ以外の場所では粗くとることでデータ量を削減しようとしたものです。

ボクセルデータの例

長所は、データ構造がシンプルであるにもかかわらず 3 次元形状の特徴をそのまま 3 次元空間で表現しているため、形状の表現力が高いことです。短所としては、特にボクセルについては、オブジェクトで埋まっていない部分もデータとして持っておかなければいけないため、計算リソースを余分に消費してしまうことです。そのためセルのサイズを小さくして高解像度のデータを扱おうとすると計算量がネックになりますが、これらの問題は 8 分木を使うことで多少改善されます。また、セルが埋まっているかいないかで形状を表現するため、どうしても表面がカクカクしてしまい、もともとの形状がもっていた表面のなめらかさやエッジのシャープさなどの情報が失われてしまうことも問題になることがあります。

3D point cloud

上記までは Euclidean structured data と呼ばれる、格子状の空間構造をベースにしたデータ形式でした。ここからは、Non-Euclidean data を見ていきます。

3D point cloud は、3 次元空間上の点群(point cloud)と呼ばれる点の集まりで形状を表現したものです。これもデータ自体の長所ではないですが、3 次元系有情を実際に 3D スキャナなどで測定するとだいたいのデータの形式はこの 3D point cloud になるのではないでしょうか。そのため、学習タスクのスタートラインがどうしてもこの形式にならざるを得ないことが多く、3D point cloud をいかにうまく扱うかは応用上非常に重要であると考えられます。また、点の集まりとはいえ 3 次元の情報を持っているため、3 次元形状の概形をつかむのには適していると言えます。

3D point cloud の例

主な短所は 3 つ挙げられます。一つめは、3D point cloud は実際の形状を測定したものであることが多く、ノイズが乗っていることが多いことです。二つめは、点どうしがどのように繋がっているかの情報が欠けていることにより、どこが表面であるかの情報が不確かになってしまっていることです。三つめは、複数の形状を独立に測定したとすると、点群の個数は異なりますし、それらの順番が不同であることです。機械学習モデルでは入出力を多次元配列で与えることが多いと思いますが、配列のサイズが不定であり、また順番を一意に決められないということになり、学習タスクをうまく回す上で重大な障害になります。

上記三つめの短所を克服するべく、すでに様々な研究が行われています。まず一般の問題に対して順不同データに対応できる機械学習モデルが提案され5、それを点群データに応用した一連の研究があります6 7

この中で Deep Sets について少し触れておきます。この論文の主なコントリビューションは、配列の順序を入れ替えても計算結果が変わらない(=順不同データを扱える)関数を記述し、それが必要十分であることを数学的に証明したことです。これによって、順不同のデータを扱う機械学習モデルを作る際の強力な指針が得られたことになります。

具体的には、 $M$ 個の要素を持つ順不同データ $X = \{x_1, \dots, x_M\}$ に対して、要素の入れ替えについて不変な関数 $f$ は必ず、ある関数 $\rho$ と $\phi$ を用いて
\[
f(X) = \rho \left( \sum_{x \in X} \phi(x) \right)
\]
の形式で書けることが示せます(定理 2)。さらに、これを一般的なニューラルネットワークの層として実現するためには
\[
\boldsymbol{f}(\boldsymbol{x}) = \boldsymbol{\sigma}(\lambda \boldsymbol{I} \boldsymbol{x} + \gamma \boldsymbol{1} \boldsymbol{1}^T \boldsymbol{x})
\]
または
\[
\boldsymbol{f}(\boldsymbol{x}) = \boldsymbol{\sigma}(\lambda \boldsymbol{I} \boldsymbol{x} + \gamma \ \mathrm{maxpool}(\boldsymbol{x}) \boldsymbol{1})
\]
のようにすればよいことがわかります。ここで、
\[
\begin{align*}
\boldsymbol{f} : &\mathbb{R}^M \rightarrow \mathbb{R}^M, \text{$M$ 次元ベクトルから $M$ 次元ベクトルへ移す、要素の入れ替えに対して不変な関数}
\\
\boldsymbol{x} \in & \mathbb{R}^M, \text{$M$ 次元ベクトルの入力データ}
\\
\boldsymbol{\sigma}: & \mathbb{R}^M \rightarrow \mathbb{R}^M, \text{活性化関数}
\\
\lambda, \gamma \in & \mathbb{R}, \text{学習パラメータ}
\\
\boldsymbol{I} \in & \mathbb{R}^{M \times M}, \text{単位行列}
\\
\mathrm{maxpool}: & \mathbb{R}^M \rightarrow \mathbb{R}, \text{max pooling 関数}
\\
\boldsymbol{1}: & \mathbb{R}^{M \times 1}, \text{1 が $M$ 個並んだ行ベクトル} [1, 1, \dots, 1]^T
\end{align*}
\]
です。点群の機械学習については、こちらの資料でより網羅的にまとめられています。

3D mesh and graph

こちらは形状を、要素と呼ばれる単純な図形の分割で表現する方法で、この表現をメッシュと呼びます。数学的には節点(node、vertex)をエッジ(edge)で繋いだものの集まりとして捉えられるため、グラフとも呼ばれます(関数の増減を描いたようなグラフとは異なります)。

3D mesh and graph の例

長所としては、3D 形状の表現方法としてポピュラーで、コンピュータグラフィックスやシミュレーションなどで多く使われているデータ構造であるということです。FEM でもメッシュを形状の表現として用いています。また、3D 形状を 3D で表現しており表面の情報も失われていないので、表面のなめらかさといった情報もある程度保持することが可能です。

短所としては、3D point cloud のときと同様、データ構造がイレギュラーで機械学習モデルにとって扱いにくいということです。たとえば形状やメッシュ分割の仕方が変われば、メッシュを構成する節点や要素の数、より一般にはグラフの構造が変わってしまうため、それらの変化に強い機械学習アルゴリズムを作らなければいけないということです。一般のグラフデータを機械学習で取り扱おうという試みはすでになされており、Graph Neural Network や Graph Convolution などといった言葉でまとめられています。Graph Neural Network については web 上では日本語の情報もあります(たとえば https://tech-blog.abeja.asia/entry/2017/04/27/105613https://www.slideshare.net/emakryo/neural-networks-for-graph-data-neurips2018pfn など)。

これを特に mesh データに適用した論文として、Lenssen et al.8や Monti et al.9などがあります。

おわりに

この記事では、FEM の機械学習、そしてその根幹をなす幾何学の機械学習について紹介してきました。幾何学の機械学習に関しては論文が出てくるようになりましたが、それらの知見を活かして FEM や他の数値シミュレーションに関する機械学習を高度化することはまだあまり広くやられていないように思います。RICOS では幾何学の機械学習を発展させるとともに、それを FEM の機械学習へ適用すべく日夜開発を進めております。この記事を読んで少しでも興味を持たれましたら、RICOS への応募を検討してみて下さい 採用ページへ

  1. ただの Deep Learning と比較してしまうと、見えなくなってしまうほどです。
  2. E. Ahmed, A. Saint, A. E. R. Shabayek, K. Cherenkova, R. Das, G. Gusev, D. Aouada and B. Ottersten, “Deep Learning Advances on Different 3D Data Representations: A Survey,” arXiv preprint arXiv:1808.01462, 2018.
  3. ただし、ここで挙げられている Non-Euclidean data は局所的には Euclidean-structured data として振る舞うこともありえると論文では指摘されています。
  4. L. Zhang, M. J. da Fonseca, A. Ferreira, and C. R. A. eRecuperac ̧a ̃o,“Surveyon3dshapedescriptors,”FundaA ̃gaopara a Cincia ea Tecnologia, Lisboa, Portugal, Tech. Rep. Technical Report, DecorAR (FCT POSC/EIA/59938/2004), vol. 3, 2007.
  5. O. Vinyals, S. Bengio, and M. Kudlur, “Order matters: Sequence to sequence for sets,” arXiv preprint arXiv:1511.06391, 2015.
  6. S. Ravanbakhsh, J. Schneider, and B. Poczos, “Deep learning with sets and point clouds,” arXiv preprint arXiv:1611.04500, 2016.
  7. M. Zaheer, S. Kottur, S. Ravanbakhsh, B. Poczos, R. R. Salakhut- dinov, and A. J. Smola, “Deep sets,” in Advances in Neural Information Processing Systems, 2017, pp. 3394–3404.
  8. M.Fey,J.E.Lenssen,F.Weichert,andH.Mu ̈ller,“Splinecnn:Fast geometric deep learning with continuous b-spline kernels,” arXiv preprint arXiv:1711.08920, 2017.
  9. F. Monti, D. Boscaini, J. Masci, E. Rodola, J. Svoboda, and M. M. Bronstein, “Geometric deep learning on graphs and manifolds using mixture model cnns,” in Proc. CVPR, vol. 1, no. 2, 2017, p. 3.