[dl輪読会]learning convolutional neural networks for graphs

36
Learning Convolutional Neural Networks for Graphs [ICML 2016 Niepert et. al.] 中中中中中中中 中中 中中

Upload: deeplearningjp2016

Post on 03-Mar-2017

53 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: [DL輪読会]Learning convolutional neural networks for graphs

Learning Convolutional Neural Networks for Graphs[ICML 2016 Niepert et. al.]

中山英樹研究室 横田 匡史

Page 2: [DL輪読会]Learning convolutional neural networks for graphs

Introduction

Page 3: [DL輪読会]Learning convolutional neural networks for graphs

概要

グラフ構造には様々なデータや形があり、それらを分類するのは難しい。そもそも同形性判定すら非常に難しい。

Page 4: [DL輪読会]Learning convolutional neural networks for graphs

グラフ同形性判定問題はなぜ、難しいのか?

頂点番号に意味はないため、頂点番号に依存しない特徴量が欲しい。

Page 5: [DL輪読会]Learning convolutional neural networks for graphs

今回の論文の目的✦ 目的

• グラフをどうにかして処理したい• 同じような構造のグラフは同じ表現になって欲しい

✦ やったこと• WL Graph Kernel を応用しグラフ構造を前処理し

CNN に突っ込めるようにした。

Page 6: [DL輪読会]Learning convolutional neural networks for graphs

Related Work

Page 7: [DL輪読会]Learning convolutional neural networks for graphs

グラフ類似判定アルゴリズム• Shortest-path Kernel

• Random Walk Kernel

• Graphlet Count Kernel

• Weisfeiler-Lehman Kernel• 既存のグラフカーネルの中で最も性能が良い  →この後、これがたくさん出てきます。

Page 8: [DL輪読会]Learning convolutional neural networks for graphs

Weisfeiler-Lehman Graph Kernel

上記のような2つのグラフに WL Graph Kernel を使う

Page 9: [DL輪読会]Learning convolutional neural networks for graphs

アルゴリズムの流れ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 が変化しなくなるまで繰り返す。

Page 10: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

このラベルからmultiset labelを作っていく

Page 11: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

隣接のラベルを取ってくる

Page 12: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

これを multiset label とする。

Page 13: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

Page 14: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

Page 15: [DL輪読会]Learning convolutional neural networks for graphs

Multiset-label determination

上2つのグラフは、全てのノードに対してmultiset label を作ったもの。

Page 16: [DL輪読会]Learning convolutional neural networks for graphs

Sorting each multiset各ノードのmultisetをソートする

Page 17: [DL輪読会]Learning convolutional neural networks for graphs

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 ラベルと呼ぶ。 )

Page 18: [DL輪読会]Learning convolutional neural networks for graphs

Relabeling

新しくできたグラフに対して、指定回数もしくはグラフの関係が変わらなくなるまで行う。

Page 19: [DL輪読会]Learning convolutional neural networks for graphs

グラフ作成後

各グラフの multiset でのラベルをカウントしベクトルを作り、内積を取ることで類似度を計る。

Page 20: [DL輪読会]Learning convolutional neural networks for graphs

全体の流れ

Page 21: [DL輪読会]Learning convolutional neural networks for graphs

PATCHY-SAN( 提案手法 )

Page 22: [DL輪読会]Learning convolutional neural networks for graphs

Overview

グラフに対して、 WL を応用しテンソルを得る。それを CNN に入れてクラス分類を行う。

前処理 出力

CNNテンソル

Page 23: [DL輪読会]Learning convolutional neural networks for graphs

PATCHY-SAN の流れ1. Weisfeiler-Lehman Graph Kernel で新しくラベルを付ける。2. WL のラベルでノードをソートし w 個選ぶ3. 各ノードに対して近いノードを k 個以上選ぶ4. ステップ 3 で選んだノードをソート・選択する5. 選んだノードを並べてテンソルを作る。

Page 24: [DL輪読会]Learning convolutional neural networks for graphs

ステップ 1グラフカーネルで新しくラベルを付ける

WL Graph Kernelこれを使ってノードを選んでいく

Page 25: [DL輪読会]Learning convolutional neural networks for graphs

ステップ 2WL ラベルでノードをソートし、 w 個選ぶ

6, 7, 9,10,12,13

6, 7, 9, 10

w=4 として左のグラフから頂点ラベルを選んでいく。[ グラフの頂点リスト ]

最終的に選んだ4個のラベルをステップ 3 に移す

Page 26: [DL輪読会]Learning convolutional neural networks for graphs

ステップ 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 で選んだノードについて

Page 27: [DL輪読会]Learning convolutional neural networks for graphs

ステップ 4ステップ 3 で選んだノードをソート・選択する1. 頂点からの距離でソート2. 距離が同じなら WL ラベルでソート3. ソート後の配列から top-k を選択する

ラベル 6 のノードについて距離でソート  6→12,9,13,10WL ラベルでソート  6→12,9,10,13

Page 28: [DL輪読会]Learning convolutional neural networks for graphs

ステップ 5選んだノードを並べてテンソルを作る• 縦に w 個のノード ( ステップ 2)• 横に k 個のノード ( ステップ 3,4)• 各頂点の持つ属性を a 次元ベクトルとして、

(w, k, a) のテンソルを作る。

これにより作成したテンソルをCNN に入力し、グラフのクラス分類を行う

Page 29: [DL輪読会]Learning convolutional neural networks for graphs

PATCHY-SAN の流れ1. Weisfeiler-Lehman Graph Kernel で新しくラベルを付ける。2. WL のラベルでノードをソートし w 個選ぶ3. 各ノードに対して近いノードを k 個以上選ぶ4. ステップ 3 で選んだノードをソート・選択する5. 選んだノードを並べてテンソルを作る。

Page 30: [DL輪読会]Learning convolutional neural networks for graphs

PATCHY-SAN のメリット★ 属性に離散値・連続値のどちらでも使える

‣ これは非常に重要らしい‣ 先行研究で連続値も扱えるカーネルは精度が劣っていた

★ 辺属性も同時に用いることができる‣ 頂点属性のときに k 個属性を並べた代わりに隣接行列のように k^2 個の属性を並べる

★ 最初のラベル付けのアルゴリズムは何でも良い(WL graph kernel が絶対ではない )‣ 類似するノード同士が近い値を取るようなアルゴリズムならばなんでも良い。

Page 31: [DL輪読会]Learning convolutional neural networks for graphs

実験

Page 32: [DL輪読会]Learning convolutional neural networks for graphs

実験条件• 比較アルゴリズム

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 構造 )

Page 33: [DL輪読会]Learning convolutional neural networks for graphs

提案手法での使用モデル• モデルへの入力

‣ PATCH-SAN によってできた (w, k, a) のテンソルを(wk, a) に reshape したもの

• 使用モデル‣ w = 平均頂点数 , k=5, 10‣ Conv → Conv → FC → Softmax‣ Conv は filter size と stride をそれぞれ k とした 1D Convolution である。

Page 34: [DL輪読会]Learning convolutional neural networks for graphs

実験結果

全体的に PATCHY-SAN+CNN の手法が精度的にも速度的にも早くなっている。

(PSLR: PACHY-SAN+Regression)

Page 35: [DL輪読会]Learning convolutional neural networks for graphs

所感• ほとんど前処理の話だけだが、アルゴリズムも簡単で良さそう。• Visual Genome や構文木などをこれに使うと面白そう

‣ 特に WL Graph Kernel の代わりに Glove とかを使って別のラベル付けの仕方とかできそう (適当 )

Page 36: [DL輪読会]Learning convolutional neural networks for graphs

参考• Learning Convolutional Neural Networks for

Graphs(PFN の秋葉さんの slide share)

‣ http://www.slideshare.net/iwiwi/learning-convolutional-neural-networks-for-graphs-64231265

‣ グラフ界隈の話は初めてだったので、かなりお世話になりました。