<aside> 📌 프로젝트를 위해 공부 했던 'GAT' 에 대해 정리하고자 한다. 이번 포스팅에서는 'GAT'을 처음 소개했던 'Graph Attention Networks' 논문의 내용을 바탕으로 참고 자료와 함께 다시 정리하였다.
</aside>
$wh_u^{k-1}$ = $key$ = $Query$ = $Value$ ( self-attention )
$a_v^{k-1}$ = $Attention(\{h_u^{k-1},\,u \in N_{(v)}U_{\{v\}}\})$ 을 통해 self-loop를 포함한 모든 인접 노드의 attention score를 계산함
$Attention(q,K,V)$ = $\sum_{i}softmax(f(Q,K))V$
$f$ : one-layer Feed-Forward Neural Network 입력에 $q$, $K$ 를 concate 해서 사용함으로 $e_{ij}$ 의 score (similarity) 계산
계산된 유사도 score에 softmax function을 취함으로 attention score 계산
$$ \alpha_{ij}=softmax_j(e_{ij})=\frac{exp(LeakReLU(\vec{a}^T[W\vec{h}_i||W\vec{h}j]))}{\sum{k\in\mathcal{N}_i}exp(LeakyReLU(\vec{a}^T[W\vec{h}_i||W\vec{h}_k)} $$
target node의 인접한 각각 node의 $key$ 에 attention score를 곱하고 weight-sum을 통해 target node $h_A^{k}$ 의 embedding value를 update ( = $\vec{h}'_i$ )
self-attention의 학습과정을 안정화하기 위해서 multi-head attention 을 사용
$$ \vec{h}'i= \Vert^K{k=1}\;\sigma(\sum_{j\in\mathcal{N}i}\alpha^k{ij}W^k\vec{h}_j) $$
multi-head attention의 마지막 layer에는 concatenation이 필요 없음으로 averaging 사용
$$ \vec{h}'t=\sigma(\frac{1}{K}\sum^K{k=1}\sum_{j\in\mathcal{N}i}\alpha^k{ij}W^k \vec{h}_j) $$
논문에서 제안한 graph attentional layer는 이전 방법들에 대해서 이점을 가짐