GraphNVP: An Invertible Flow Model for Generating Molecular Graphsを読んだのでメモ
はじめに
GraphNVP: An Invertible Flow Model for Generating Molecular Graphsを読んだのでメモ.Generative flowを使ってmolecular graphを生成する初めての試みとのこと.
GraphNVP
Generative Flowの一般的な話は何度か記事にしているのでここでは割愛.
今回は,molecular graphをgenerative flowを使って生成するのが目的.ここではグラフの生成を,ノードの隣接関係の記述とノードの表現(ラベル)の二つに分けて考える.
定義として,グラフをとし,をそれぞれ,adjacency tensorとfeature matrixとする.ただし,隣接関係の種類を,ノードのラベルの種類をとした.グラフが与えられた時にとなるようなモデルを作る.今回はモデルとしてGenerative flowを考えているので,潜在変数の次元数はデータの次元数と同じになることに注意.目的関数は変数変換の公式から次のように表現される.
はのに関するヤコビアンを表し,は潜在変数のpriorで今回はガウス分布とする.
Graph Representation
今回考えているグラフは離散的に表現されているのに対し,上で議論したモデルは連続な分布を考えている.このギャップを埋めるため,uniform noiseを加えるdequantizationと呼ばれるテクニックを使う.それぞれに一様分布からサンプリングされたノイズを加えることで連続的な表現にしようというもの.
はのハイパーパラメータで,論文の実験ではにしたそう.
Coupling layers
ここではadjacency tensor に関するカップリング(adjacency coupling layer)とfeature matrix に関するカップリング(node feature coupling layer)の二つのカップリング方法を提案する.
まずnode feature coupling layerから考える.層目の出力として得られるnode feature matrixをとする.するとを入力とする層目のnode coupling layerは次のように表現される.
複雑なように見えるが基本的にはrealNVPのaffine coupling.はそれぞれとの行目を入力として,scaleとtranslationの度合いを返す関数(任意の関数でいいため今回は多層のGraph Neural Netとのこと)で,はアダマール積.とは,coupling layerなので変換されるノードと,変換のパラメータを推論するためのノードを意味する.なのでの行目の値に関しては恒等写像となる.
Adjacency coupling layerもほぼ同様の表現で,次のように表される.
Node feature coupling layerとの違いはの入力が1変数の多層パーセプトロンになっただけ.
上記の二つのlayerを実装する際には論文のFigure 2に示したように,1ノードずつの変換として表現する(ということを多分言っている.maskingという表現がひっかかって自信はない).これが実験的に良かったらしい.ただそのような変換にすると計算結果が順序に依存してしまうが,permutation-invariantなmasking patternにするとパフォーマンスが落ちてしまうとのことで苦肉の策らしい.
Two-step Molecular Graph Generation
グラフから潜在表現に落とす側の計算はnode feature couplingもadjacency couplingもそれぞれ独立して計算可能だが,逆の計算はnode feature couplingにadjacency tensorが必要となるため,adjacency coupling側から計算が必要ということ.
まとめ
グラフにもgenerative flowが来たかという感じ.個人的には,Kipf & Wellingとかの形に近いgraph convはinvertibleだと思うのでGNNをそのままgenerative flowのモデルとして組める気がするのだがどうだろう.