Graph Convolutional Networks(GCN)を使ったノード分類

今週は「PyTorchを使ったディープラーニング」セミナーの第6回がありました。

今回のテーマはネットワークノード分類。古典的なノード分類の方法と2017年に論文が発表されたばかりのGraph Convolutional Networks(GCN)について解説がありました。

Weighted-vote relational neighbor(wvRN)

まずは、古典的なノード分類の方法として、Weighted-vote relational neighbor(wvRN)を実装します。wvRNとはその名の通り、自分自身に隣接するノードの投票の重みにより分類する方法です。

f:id:denim012:20190501222503p:plain

上記の形のグラフ(karate_club_graph:34ノード中6ノードが分かっている状態)に対して、wvRNを5回適用します。

f:id:denim012:20190501232121p:plain
この分類方法では以下の欠点があります。

  • ノードが持つ属性情報を考慮出来ない(文章、単語など)
  • 浅い層のモデルなので、複雑なネットワークに対しての効果はイマイチ
  • 線形モデルなので、非線形情報を表すことが出来ない 

Graph Convolutional Networks(GCN)

Graph Convolutional Networks(GCN)は、畳み込みニューラルネットワーク(CNN)の思考を元にグラフ上で畳み込みを行うモデルです。

PGの実習では、機械学習に関する論文の分類を行う処理の解説がありました。

使用するデータは下記2つです。

  • 論文概要(論文ID 単語属性 カテゴリー)
  • 論文の引用関係(引用論文ID 被引用ID)

引用関係からグラフを作成して、それぞれのノードに属性がある状態になります。GCNでカテゴリーの分類を行います。