[dl輪読会]learning convolutional neural networks for graphs
TRANSCRIPT
Learning Convolutional Neural Networks for Graphs[ICML 2016 Niepert et. al.]
中山英樹研究室 横田 匡史
Introduction
概要
グラフ構造には様々なデータや形があり、それらを分類するのは難しい。そもそも同形性判定すら非常に難しい。
グラフ同形性判定問題はなぜ、難しいのか?
頂点番号に意味はないため、頂点番号に依存しない特徴量が欲しい。
今回の論文の目的✦ 目的
• グラフをどうにかして処理したい• 同じような構造のグラフは同じ表現になって欲しい
✦ やったこと• WL Graph Kernel を応用しグラフ構造を前処理し
CNN に突っ込めるようにした。
Related Work
グラフ類似判定アルゴリズム• Shortest-path Kernel
• Random Walk Kernel
• Graphlet Count Kernel
• Weisfeiler-Lehman Kernel• 既存のグラフカーネルの中で最も性能が良い →この後、これがたくさん出てきます。
Weisfeiler-Lehman Graph Kernel
上記のような2つのグラフに WL Graph Kernel を使う
アルゴリズムの流れ1. Multiset-label determination:近傍のラベルを集め Multi Label Set を作成2. Sorting each multiset: 集めた Multi Label Set をソート3. Label compression:
Multi Label Set を一つにまとめて、新しいラベルを作る4. Relabeling: 各ノードに新しいラベルを割り当てる5. 1 〜 4 を指定回数 or Multi Label Set が変化しなくなるまで繰り返す。
Multiset-label determination
このラベルからmultiset labelを作っていく
Multiset-label determination
隣接のラベルを取ってくる
Multiset-label determination
これを multiset label とする。
Multiset-label determination
Multiset-label determination
Multiset-label determination
上2つのグラフは、全てのノードに対してmultiset label を作ったもの。
Sorting each multiset各ノードのmultisetをソートする
Label Compression1,[4]
2,[3]
2,[3,5]
2,[4,5]
3,[2,4,5]
4,[1,1,3,5]
4,[1,2,3,5]
5,[2,3,4]
6
7
8
9
10
11
12
13
それぞれの multiset に対して、新しいラベルを付ける。( 以後、この新しくつけたラベルを WL ラベルと呼ぶ。 )
Relabeling
新しくできたグラフに対して、指定回数もしくはグラフの関係が変わらなくなるまで行う。
グラフ作成後
各グラフの multiset でのラベルをカウントしベクトルを作り、内積を取ることで類似度を計る。
全体の流れ
PATCHY-SAN( 提案手法 )
Overview
グラフに対して、 WL を応用しテンソルを得る。それを CNN に入れてクラス分類を行う。
前処理 出力
CNNテンソル
PATCHY-SAN の流れ1. Weisfeiler-Lehman Graph Kernel で新しくラベルを付ける。2. WL のラベルでノードをソートし w 個選ぶ3. 各ノードに対して近いノードを k 個以上選ぶ4. ステップ 3 で選んだノードをソート・選択する5. 選んだノードを並べてテンソルを作る。
ステップ 1グラフカーネルで新しくラベルを付ける
WL Graph Kernelこれを使ってノードを選んでいく
ステップ 2WL ラベルでノードをソートし、 w 個選ぶ
6, 7, 9,10,12,13
6, 7, 9, 10
w=4 として左のグラフから頂点ラベルを選んでいく。[ グラフの頂点リスト ]
最終的に選んだ4個のラベルをステップ 3 に移す
ステップ 3各ノードに対して近いノードを k 個以上選ぶ1. あるノード v に対して、距離1のノードが |N|≧k なら終了2. あるノード v に対して、距離2のノードが |N|≧k なら終了3. … 以下、 |N|≧k になるまで繰り返し…ラベル 6 のノードについて
距離 1 : 6→12距離 2 : 6→12,9,13,10
これを先に選んだ w 個のラベルについて行う。
ステップ 2 で選んだノードについて
ステップ 4ステップ 3 で選んだノードをソート・選択する1. 頂点からの距離でソート2. 距離が同じなら WL ラベルでソート3. ソート後の配列から top-k を選択する
ラベル 6 のノードについて距離でソート 6→12,9,13,10WL ラベルでソート 6→12,9,10,13
ステップ 5選んだノードを並べてテンソルを作る• 縦に w 個のノード ( ステップ 2)• 横に k 個のノード ( ステップ 3,4)• 各頂点の持つ属性を a 次元ベクトルとして、
(w, k, a) のテンソルを作る。
これにより作成したテンソルをCNN に入力し、グラフのクラス分類を行う
PATCHY-SAN の流れ1. Weisfeiler-Lehman Graph Kernel で新しくラベルを付ける。2. WL のラベルでノードをソートし w 個選ぶ3. 各ノードに対して近いノードを k 個以上選ぶ4. ステップ 3 で選んだノードをソート・選択する5. 選んだノードを並べてテンソルを作る。
PATCHY-SAN のメリット★ 属性に離散値・連続値のどちらでも使える
‣ これは非常に重要らしい‣ 先行研究で連続値も扱えるカーネルは精度が劣っていた
★ 辺属性も同時に用いることができる‣ 頂点属性のときに k 個属性を並べた代わりに隣接行列のように k^2 個の属性を並べる
★ 最初のラベル付けのアルゴリズムは何でも良い(WL graph kernel が絶対ではない )‣ 類似するノード同士が近い値を取るようなアルゴリズムならばなんでも良い。
実験
実験条件• 比較アルゴリズム
1. Shortest-path Kernel2. Random Walk Kernel3. Graphlet Count Kernel4. Weisfeiler-Lehman Kernel5. LIB-SVM6. PATCHY-SAN( 提案手法 )
• 使用データセット• MUTAG,PCT,NCI1,NCI109→ 化学化合物• PROTEIN,D&D → タンパク質 (3D 構造 )
提案手法での使用モデル• モデルへの入力
‣ PATCH-SAN によってできた (w, k, a) のテンソルを(wk, a) に reshape したもの
• 使用モデル‣ w = 平均頂点数 , k=5, 10‣ Conv → Conv → FC → Softmax‣ Conv は filter size と stride をそれぞれ k とした 1D Convolution である。
実験結果
全体的に PATCHY-SAN+CNN の手法が精度的にも速度的にも早くなっている。
(PSLR: PACHY-SAN+Regression)
所感• ほとんど前処理の話だけだが、アルゴリズムも簡単で良さそう。• Visual Genome や構文木などをこれに使うと面白そう
‣ 特に WL Graph Kernel の代わりに Glove とかを使って別のラベル付けの仕方とかできそう (適当 )
参考• Learning Convolutional Neural Networks for
Graphs(PFN の秋葉さんの slide share)
‣ http://www.slideshare.net/iwiwi/learning-convolutional-neural-networks-for-graphs-64231265
‣ グラフ界隈の話は初めてだったので、かなりお世話になりました。