[論文メモ] VARIATIONAL NEURAL CELLULAR AUTOMATA

arxiv.org
github.com
ICLR2022

セル・オートマトンを使った生成モデルVariational Neural Cellular Automataを提案
f:id:Ninhydrin:20220203090902p:plain

導入

人や木、微生物など多様な生物は細胞の成長と分化により生成される。
セル・オートマトン(CA)はここから着想を得たモデルでセルの状態を近傍セルの状態とルールに基づいて反復的に更新する。
既存のCAはライフゲームやNeural Cellular Automata(NCA)等がある。NCAもgenerative modelの一つだが、学習したものしか生成できない(多様性がない)。
提案するVariational Neural Cellular Automata(VNCA)は多様性を実現する。

手法

VNCAは潜在変数を持つ生成モデルで、 z \thicksim p(z)、学習するパラメータ \thetaを持つデコーダ x \thicksim p_{\theta}(x|z)、ガウシアン p(z)=\mathcal{N}(z|\mu=0,\Sigma=I)を考える。モデルはELBO最大化で学習する。
f:id:Ninhydrin:20220203092423p:plain
 q_{\phi}(z|x)はパラメータ \phiを持つエンコーダ、 D_{KL}はKLダイバージェンス


デコーダの生成プロセスはNCAに基づく(図2参照)。
f:id:Ninhydrin:20220203092751p:plain

NCAはグリッド内のセルに対する再帰計算で、時間[t]における更新は以下の式。
f:id:Ninhydrin:20220203093122p:plain
 u_{\theta}は学習する更新式、 iがセルのインデックス、 N(i) iの近傍のセル(iを含む3x3)。セルの更新は並行して行われるのでこの[u_{\theta}]は3x3のConvolutionで実現できる。正確にはConvolutionの後に1x1のConvolutionが続く。
なお初期のグリッド z_0は潜在空間からサンプリングして2x2にリピートしたもの。

既存のNCAではセルの生死をセルやその近傍セルの状態で決定し、これが「成長」を可能にした。
提案手法では有糸分裂から着想を得たセルの分裂を行う。
 Mステップ毎同じ状態セルのセルを3つ複製する。つまり最近傍法のリサンプリング。図2の右側を参照。
これを K回行った M(K+1)ステップ後の z_Tがセルの最終状態になる。
これをRGBや2値の画像にあわせて最適化する。

実装を見ると u_\thetaはConv3x3 -> (Res1x1) x 4 -> Conv1x1となっている。活性化関数はELU。このモジュールをforで繰り返し適用する。

実験・結果

MNIST
f:id:Ninhydrin:20220204093554p:plain

CelebA。conditionなしだと微妙。
f:id:Ninhydrin:20220204093654p:plain

D_{KL}のパラメータを調整すると改善。
[f:id:Ninhydrin:20220204094117p:plain

セルの成長
f:id:Ninhydrin:20220204094201p:plain

欠損修復。サイズを2倍にする処理を取り除き、欠損を与えて復元する形で学習する。
f:id:Ninhydrin:20220204094320p:plain

所感

いわれると確かに近傍と自身の9セルの状態を元に更新するセル・オートマトン
品質はまだ微妙だが面白いアイディアだった。
今後の発展に期待。