Deep Learning of Graph Matchingを読んだのでメモ
はじめに
Deep Learning of Graph Matchingを読んだのでメモ.タイトルの通り,graph matchingの問題をdeep learningで解くと言うもの.
Graph Matching
まずgraph matchingの定式化から入る.二つのグラフが与えられたとする.ただし,とする.graph matchingの目的はこの二つのグラフのノード間の最適な対応関係を作ること.
を,とが対応する場合,それ以外を0とする指示ベクトルとする.さらに二組みのエッジ,がどれくらい対応(類似)しているかを成分に持つ行列を定義する.ただし,この行列は対角成分にを持つ.すなわちはノードの対応関係とエッジの対応関係を記述した行列となる.論文の言葉を使えば,対角成分はunaryで非対角成分はpair-wiseのスコアを記述する.この行列を使えば最適な割り当ては次のように定式化される.
ここでは2値の行列で,と言う二つの写像を表す.この問題はNP-hardということが知られているため,次のように緩和する.
この問題はの各要素が非負かつが正方行列であることからPerron-Frobeniusの定理からの最大固有値の固有ベクトルとして解が与えられる.Perron-Frobeniusの定理は簡単に言えば,各要素が非負の正方行列の最大固有値は重複度1で,その固有ベクトルは各成分が正になるというもの.上記の緩和によりであるため通常の固有値問題ではこの制約を満たせないが,Perron-Frobeniusの定理から得られる最大固有値の固有ベクトルはであることが保証されることにより,固有値問題として解くことが可能になるというもの.
この論文の目標はこのgraph matching問題を学習ベースで解くことで,言い換えれば真の対応関係を記述するをparameterizeするというもの.
Affinity Matrix Factorization
この論文で重要となるの表現方法.ここでは2012年のCVPRで提案されたFactorized Graph Matchingを使う.Factorized Graph Matchingはunary scoreとpair-wise scoreを別々に表現できるように(という解釈で合ってるかは微妙だが)を分解する.
を対角成分とする対角行列を表し,はクロネッカー積を表す.はそれぞれunary score(ノード間のスコア)とpair-wise score(エッジ間のスコア)を表す行列で,は番目のエッジがのノードからのノードに入る場合となる行列で,をエッジの数とすればとなる.なので上の分解表現におけるとのクロネッカー積の項は行列となり,は行列となる.のクロネッカー積をにかける意味としては,要素がのエッジ間のスコアと対応付くようにするということ.
の単純な構成方法としては次のようなものが考えられる.
はエッジごとの特徴量を要素に持つ行列で,はノードごとの特徴量を要素に持つ行列.はブロック対称行列でおそらく学習パラメータ.エッジの特徴量を記述した行列はエッジによって結ばれる二つのノードの特徴量を使って次のように記述する.
の違いは,グラフの特徴表現を得る埋め込みモデル(多層のニューラルネットを仮定)の異なる層から得られる特徴とのこと.上付きの数字,1と2はグラフの種類.
Deep Network Optimization for Graph Matching
ここから具体的なアルゴリズムの話.構成としては
- Deep Feature Extractor(今回は2枚の画像を入力として想定しているため,個別にVGG-16で特徴抽出)
- Affinity Matrix
- Power Iteration
- Bi-Stochastic
- Voting
- Loss
からなる(論文のFigure 1参照).
Affinity Matrix
ノード間のエッジの有無を表す隣接行列が各グラフごとにとして定義されているとする.するとそれぞれ以下のような関係が成り立つ.
つまり隣接行列が与えられればが得られる(分解方法は非自明だがはノード・エッジ間の関係なので,行列分解によって計算するというより解析的に計算可能).が得られれば前段のfeature extractorから得られた特徴行列を用いて,Factorized Graph Matchingの関係からを作ることが可能.forward, backward計算の詳細な計算は割愛.
Power Iteration Layer
最適な割り当てを得るためにはの最大固有値の固有ベクトルを計算すればいいが,固有値分解はコストが高いためここでは以下のようにPower Iterationで計算する.
ただし初期値はとする.iteration数はハイパラ.backwardの詳細は割愛(ただし計算オーダーを落とすための工夫が所々あるので要参照).
Bi-Stochastic Layer
Graph matchingの解としてはという二重確率を満たす必要がある.ここではを入力としての二重確率行列を出力するBi-Stochastic Layerを提案する.
初期行列が与えられたとし,以下の繰り返し計算を行う.
このiterationの元を辿ったところ,これはを満たさないが,が成り立つらしい(もしかしたら参考にした論文と多少違いがあるかもしれないので要出展).
Converting Confidence-maps to Displacements
最後にからdisplacement vectorを得る.これは正規化をしたいということらしく,割り当てられた点がの行目で与えられたスコアと一致するようにしたいということらしいが,イマイチよくわからない.なので以下は殴り書き.the matrix of positions という行列を用意して,対応する点の位置との差を使って以下のようにdisplacement vectorを得るとのこと.
はハイパラで200とか大きな値に設定する.は今までは対角行列を作るものだったがここではただの括弧とのこと.最終的な損失は次のように計算.
はで表されるロバスト損失.
まとめ
読んでいて非常に学びの多い論文だった.関連研究含めてもう少し勉強したいところ.唯一納得いかないのが,3.4節のConverting Confidence-maps to Displacementsのところで説明が急に雑になってよくわからなかったところ.