Learning to Infer and Execute 3D Shape Programs メモ
論文, ICLR2019ポスター
論文内容
DNNによってプログラムのinterpreterを模倣し、gradient descentによる最適化でProgram Synthesisする手法を提案した。 研究目的はProgram Synthesisではなくて、3D物体のsemanticな識別・理解のための道具としてProgram Synthesisを用いている。
背景
人間のような3D物体の理解には、物体形状に対する事前知識の利用が必要となる。一方で現在主流の方法はmeshやvoxelを3D物体のデータ形式として用いており事前知識が活用できない。 CSGNet等の手法はデータ形式としてより人間の理解しやすいprimitive (例えば直方体、球など) を用いている。しかしこれらで利用しているデータ形式は、「同じ形が繰り返されている」や「対称な形状である」のような抽象度の高い特徴を表すことはできない。
3D物体を表すデータ形式として、「3D物体を生成するプログラム (DSL) 」をもちいることで、このような問題を解決し人間と同じように3D物体を認識する機械学習モデルが実現できる。
提案手法
プログラムをデータ形式として用いる課題として、新しいデータ形式であるためデータセットが存在せず機械学習の適用が難しいというものがある。
この問題を解決するため、A) 3D形状からプログラムを推論するDNN、A) プログラムから3D形状を推論するDNNの2つを用意し、半教師あり学習のような手法でDNNの学習を可能とした。学習自体はAとBのDNNをそれぞれ独立にランダムに生成したデータセット (3D形状とプログラムのペアが得られる) で学習している。これだけだと複雑な形状に対するProgram Synthesisがうまくいかなかった。そのため、
- AのDNNでプログラムを生成
- BのDNNでプログラムを (近似的に実行)
- 2の結果と欲しい3D形状でlossを計算
- backpropしてAの重みを更新
というステップを踏み、AのDNNを修正した (guided adaptation) 。
guided adaptationをするにあたり、複数のstatementの結果をmax poolで統合することで可変長のプログラムに対応している。max poolで扱えるのはこの論文が扱うDSLの特徴によるもの
評価
ShapeNetなどにおいて既存手法 (CSGNetなど) と比較し、提案手法が優れた数値指標を示すこと、対称性のような特徴を捉えられること、を確認した。
メモ・コメント
Guided Adaptationの処理自体は微分可能レンダラとかの考え方にかなり近い気がする。微分可能レンダラのほうを実際に使ったことないので間違っているかもしれないけど。
ランダムに生成したデータセットだけでもprogram generator (B) のDNNは十分に学習できているのがこの手法の実用性を支えている部分に見える。ただ、program generatorが近似するプログラムはかなり短いので複雑なデータセットはいらなそう。
一方で、interpreterをDNNで近似するProgram Synthesis手法全体を考えると、
- 求めている出力との差分をどう計算するか
- 複雑なプログラムをどう実行するか
あたりは難しい問題らしい。この論文だと1については3D形状が出力なので自然なロス関数があって、2については短いプログラムの結果をmax poolすることで複雑なプログラムを実行している。どちらもドメインの特徴を活用した手法なので、他ドメインに適用しようとすると問題になりそう。