GRAPH ATTENTION NETWORKSを読んだのでメモ
はじめに
GRAPH ATTENTION NETWORKSを読んだのでメモ.
気持ち
Kipf & Wellingの提案したGraph Convolutional Networks (GCN)は学習されたフィルタがグラフラプラシアンの固有ベクトルに依存するため異なるグラフ構造に対応することができない.そこでフィルタがグラフ構造に依存しないようなアテンションに基づくGCN,Graph Attention Networks (GAT)を提案するというもの.
GAT
Graph attentional layer
まず,一層のgraph attentional layerを考える.入力は各ノードの特徴ベクトルでとして定義する.ただし,はノード数で,は特徴ベクトルの次元数.出力としてはとなる.
ここでは学習パラメータを持つ線形変換を考える.この線形変換は全てのノードに適用される.その際に,次のshared attentional mechanism によってアテンション係数を計算する.
これはノードにおけるノードの特徴の重要度を表す.上記の形だと全てのノードの組み合わせを計算する必要が出てくるため,ここでは隣接しているノードのみで計算を行う.計算された各係数のオーダーを合わせるため次のようにsoftmax関数を使って正規化を行う.
実験においては,アテンション係数を計算するための関数は1層のニューラルネットワークとLeakyReLUを使ったとのこと.そのため愚直に式を書けば次のようになる.
変数の右肩のは行列の転置,は変数の結合(concatenation)を表す.
この係数を使って各層での変換は次のように記述される.
さらに,学習過程におけるアテンション係数の安定化のために次のようなmulti-head attentionの構造を取り入れたとのこと.
要は個の独立したアテンション機構を導入するということ.基本的には各アテンションごとの出力を結合するが,最後の識別層においては各出力の平均を計算したとのこと.
まとめ
なんとなくアテンションを計算するための線形変換と,各層における線形変換の重み係数が同じなのに違和感(単純に同じ文字を使っているだけで別なパラメータなのかもしれないが).multi-head attentionもただパラメータ増えて表現力が上がったからうまくいっただけな気もするがどうなのか.
感覚的にはグラフ構造を作る際の距離関数を学習ベースで決めるということだと思うが,PPIデータセットを使った実験ではベースラインと比較して飛躍的に性能が向上していたので実装して試したいところ.