728x90

 GAT는 graph attention network의 줄임말로, 각 이웃 노드들이 서로 다른 weight, 즉 attention을 가지는 것이 가능하게 한 GNN 구조이다. 이번 글에서는 GAT가 무엇인지에 대해 알아보겠다.

Motivation

 Attention mechanism은 Transformer의 가장 기본이 되는 개념으로, input data의 모든 부분을 동일하게 다루는 것이 아닌 각 부부분들의 중요도에 따라서 어떤 부분에 집중할지의 weight를 다르게 두는 것을 말한다. 이를 그래프에 적용시켜 생각해보면 기존의 GCN 등의 GNN 구조들은 모든 이웃 노드들을 동일하게 취급해서 이들의 평균으로 현재 노드의 hidden vector를 업데이트했지만, GAT는 각 이웃 노드들의 중요도가 다르다고 가정하고 이들에게 각각 다른 weight를 곱하여 이들을 더해서 현재 노드의 hidden state를 업데이트하는 것이 가능하게 한다.

Method

 GAT의 구조는 간단하다. 우선, node i에 대한 node j의 중요성을 나타내는 attention coefficient를 다음과 같이 나타낼 수 있다고 하자. 

Attention coefficient

이를 그래프 내의 모든 노드 쌍에 대해 계산해야한다면 계산하는 데에 시간도 오래 걸리고 비효율적일 것이다. 그렇기 때문에 GAT는 masked attention을 활용하여 이웃 노드들에 대해서만 attention을 계산하고, 그 식은 다음과 같다. 

Attention coefficient based on masked attention (normalized)

위 식을 그림으로 간단하게 표현하면 다음과 같이 표현할 수 있다.

GAT의 attention coefficient

실제 구현에서는 attention coefficient를 LeakyRELU를 활용하여 표현하고, W를 a라는 weight vector를 활용해 parameterize한다. 이를 식으로 표현하면 다음과 같다.

Final attention coefficient

 최종적인 각 노드의 feature는 위에서 얻은 attention coefficient를 활용하여 다음과 같이 표현된다. 즉, 이웃한 모든 노드들에 대한 attention 값을 각 이웃 노드의 hidden vector에 곱하여 이들을 더하고, 이를 non-linear function에 넣어주는 것이다.

최종 노드 feature

이를 활용하여 multi(k)-head attention을 표현하면 다음과 같이 concatenation을 통해 표현할 수 있다. 

Multi-head attention of GAT

장점

GAT는 다음과 같은 장점들을 가진다.

  • GCN과는 다르게 이웃 노드들에 각기 다른 importance를 줌으로써 더 높은 model capacity를 가진다.
  • 모든 edge들 사이에 attention mechanism을 share하기 때문에, global graph structure에 dependent하지 않고 general하게 사용될 수 있다.
  • GraphSAGE와는 달리 샘플링 없이 모든 이웃 노드들의 정보를 활용한다.
  • 모든 edge들에 대해 self-attentional layer를 계산하는 것이 parallelize될 수 있기 때문에 computational cost가 낮다.

Experiments

 GAT의 성능은 node classification 실험을 통해 측정되었고, mean classification accuracy를 metric으로 활용하였다. 그 결과는 다음과 같다.

Experiments on transductive setting

 이번 글에서는 GAT에 대하여 알아보았다. 다음 글에서는 기본적인 GNN 구조를 소개하는 마지막 글인 GraphSNN에 대해 알아보겠다.

References

Veličković, P., Cucurull, G., Casanova, A., Romero, A., Lio, P., & Bengio, Y. (2017). Graph attention networks. arXiv preprint arXiv:1710.10903.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기