Convolutional Neural Networks on Graphs with Fast Localized Spectral Filteringを読んだのでメモ
はじめに
Convolutional Neural Networks on Graphs with Fast Localized Spectral Filteringを読んだのでメモ.
Convolution on Graph
この論文ではグラフフーリエ変換に基づく畳み込みを考える.
Graph Fourier transform
無向グラフで定義された信号を考える.は個の頂点集合,はエッジの集合,は重み付きの隣接行列を表す.を対角行列とすれば,非正規化ラプラシアンは,正規化ラプラシアンはとして表現される.グラフラプラシアンは実対称半正定値行列であるため直交固有ベクトルを持ち,非負の固有値を持つ.グラフラプラシアンの固有ベクトルはフーリエ基底として知られ,固有値分解からグラフラプラシアンはフーリエ基底をもちいてとして表現できる.グラフ上に定義された信号のフーリエ変換は,逆フーリエ変換はとして記述される.
Spectral filtering of graph signals
以前読んだ論文と変わりないのでさっくりと式だけ.Fourier domainで定義された信号に対するパラメータを持つフィルタによる畳み込みは次のように表現できる.
ただしフィルタは.
Polynomial parametrization for localized filters
グラフ上でのフィルタの学習はvertex domainでの局所性を考慮できないこととパラメータがとデータの次元によるという問題がある.そこでこの論文ではこの問題を解決するため次のような多項式展開したフィルタを使う.
パラメータは多項式の係数.頂点を中心とするフィルタの頂点の値はで与えられ,カーネルはクロネッカーのデルタによって表現される.ここで,グラフ上の2つの頂点を最短距離で結ぶパスのエッジの数がである時であることが知られている.結果としてラプラシアンの次の多項式で表現されるspectral fileterは近傍までの頂点を含んだ計算になっていることがわかる(つまりを畳み込みのカーネルサイズとした時にからより遠い頂点は畳み込みの計算に含まれないということ).さらにパラメータ数もになっていて従来のCNNと同様のオーダーになっている.
Recursive formulation for fast filtering
ここがこの論文の主な貢献部分.基本的にフィルタリングの処理はの計算コストがかかる.解決方法としては前節のようなから再帰的に計算可能な多項式関数としてを定義することが考えられる.疎な行列に対して回行列積を計算する時その演算回数のオーダーはになる.グラフ信号処理においてはグラフ上での畳み込みにおけるフィルタの多項式表現は昔から研究されていて,一般的な方法としてチェビシェフ多項式を使ってフィルタの近似をする方法がある.そこでここではチェビシェフ多項式を使ってフィルタを近似する.
次のチェビシェフ多項式はとして計算することが可能.この多項式はを測度とするヒルベルト空間を作ることが知られている(ちなみにこのあたりの初等的な教科書として金谷 健一先生の「これならわかる応用数学教室」などが自分のような数学弱者にも優しい).次のチェビシェフ多項式を使えばフィルタは次のように定義できる.
はチェビシェフ係数ではによって計算される次のチェビシェフ多項式.と定義すれば,チェビシェフ多項式の再帰関係からとして計算することができ,フィルタリング計算の演算回数はになる.
Learning filters
サンプルの番目の出力の特徴マップは次のように計算できる.
は入力の特徴マップでチェビシェフ係数が学習係数となっている.よって最終的な計算コストはになる.フィルタリング処理の入力と学習パラメータに関するbackprop中の微分計算は次のようになる.
ただし,は目的関数ではミニバッチ内のサンプル数.
Graph Coarsening
ここではグラフ上でのプーリングについて考える.グラフ上のプーリングは基本的に近傍の似た頂点同士を一つのクラスタにまとめる処理を指す.ただし,グラフのクラスタリングはNP-hardであることが知られていて一般的には何らかの近似を用いなければならない.Grapn Convの文脈ではマルチレベルなクラスタリングが可能でダウンサンプリングのスケールがコントロールできる必要がある.この論文ではGraclus multilevel clustering algorithmを転用したとのこと.このアルゴリズムはgreedy algorithmの一種で,クラスタが割り振られていないノードを適当に取り出して局所的なnormalized cut を最大化するような近傍のノードを選んでクラスタリングする.
Fast Pooling of Graph Signals
グラフ上でプーリングの処理は単純に行うと対応関係を保持する必要があって計算コストが非常にかさむ.そこでこの論文ではちょっとした工夫をして1Dプーリングと同程度の計算効率でgraph poolingを行う.具体的にはbalanced binary treeの構築と頂点の振り直しの二つの処理によって効率化する.
グラフ上でのプーリング処理が行われた場合,プーリング後のグラフの各ノードはプーリング前の2つ,もしくは1つのノードと結びつくことになる.そこで,全てのノードが二つの子ノードを持つように擬似ノード(fake node)を作る(これがbalanced binary tree).すると,全てのノードは(1)二つの真のノードを持つ(2)1つの真のノードと1つの擬似ノードを持つ(3)2つの擬似ノードを持つ3種類のノードに分けられる.ただし,全ての擬似ノードは(3)にあたる.擬似ノードはプーリング後に影響を及ぼさないような値,例えばReLUを活性化関数に使ってmaxpoolingをする場合は0などの値で初期化される.当然擬似ノードを導入するとその分次元が増えて計算コストは増えるが,実験的にGraclus algorithmを使った時には孤立ノードは少量しか出ないため特に問題はないとのこと.
で,このbalanced binary treeを作ることの何がいいかというと,こうして作られたグラフは二つのノードを一つにまとめることでプーリングされる,すなわち孤立ノードがないため綺麗に番号を並び替えることで1Dプーリングと同様の演算でプーリングを行うことが可能なため高速に演算することができる.Figure 2にこのプーリング処理の図解があるのでそこを見ればわかりやすい.ちなみに,今までの説明はスケールを2分の1にする際の処理だが,ダウンサンプリングのスケールを大きくしたい場合にはスケールに対応した数の子ノードを持つように擬似ノードを導入すればいい.
まとめ
実験で面白かったのは普通にフィルタの重みを用意するより多項式近似の形にした方が精度がよかったというところ(MNISTでの実験だからなんとも言えないが).普通のspectral filteringの方法で学習するとパラメータ多すぎて過学習気味になるってことなのかなんなのか.