Pool: 이웃노드들이 벡터를 변환하여, 최소/최소와 같은 대칭벡터 함수를 적용하는 것 AGG=Mean({MLP(hu(l−1),∀u∈N(v)}
메시지변환시, 다층퍼셉트론을 적용함 (선형변환 꼭 할 필요X)
LSTM: 시퀀스 모델을 이웃에서 오는 메시지에 적용할 수 있음 AGG=LSTM([hu(l−1),∀u∈π(N(v))])
단, 시퀀스 모델의 경우 순서불변이 아님
순서를 변경하여 시퀀스 모델을 가르치고
수신하는 메시지의 순서를 무시하지 않게 하려 함
추후 강의에서, 집계함수 선택의 이론적 속성과 결과에 대해 다룰것
2.2.2. GraphSAGE의 L2 Normalization
l2 Normalization:
선택적으로, 각 모든 레이어의 임베딩 hu(l) 에 l2 Norm 적용 가능
임베딩 벡터의 유클리드 길이가 항상 1이 되도록 유지:
hu(l)←∣∣hv(l)∣∣2hv(l)
∣∣u∣∣2=∑iui2
이 정규화가 없을 시, 임베딩 벡터가 각각다른 스케일을 가지게 됨
임베딩 벡터를 정규화 하면 성능이 향상될수있음 (not always)
l2 정규화 이후, 모든 벡터는 동일한 l2 표준으로 표현됨
모두 길이가 1이 됨
2.3. GAT(Graph Attention Network)
GAT는 attention(주의)라는 개념에서 시작됨
GAT의 레이어 표현:
hv(l)=σ(u∈N(v)∑αvuW(l)hu(l−1))
αvu : Attention weights
모든 이웃과 관련된 가중치 (노드v가 주어질때, 이웃u에 얼마나 많은 관심을 기울여야 하는지에 대한 가중치를 표현한 값)
가중치를 각기 다르게주면, 합계(aggregation)에서 다른 가중치를 가지게 된다는 의미가 있음
왜 GAT가 좋은 아이디어인지 생각해봅시다
GCN/GraphSAGE를 GAT 관점에서 생각해보면?
GCN/GraphSAGE에도 Attention weight와 같은 개념이 존재
αvu=∣N(v)∣1
노드 u에서 오는 메시지의 가중치, 중요성을 나타냄
그러나 매우 제한적인 수식표현임
u에는 의존하지않고, v에만의존(v의 차수만을 이용하므로)
모든 이웃이 동등하게 중요하다는 표현이 될 수 있음!
-💡GAT에서는 모든 이웃이 각기 다른 중요도를 가짐을 반영
`이제 Attention의 아이디어를 살펴보자**
Attention :
인지적 주의라는 의미에서 영감을 얻음
실제 인간의 뇌가 "인지"할 때에도, 주요부분에만 초점을 맞추고
다른 부분에 대해 복잡하게 연산하지 않음 (배경을 outfocusing)
attention αvu는
입력데이터의 중요한 부분에 초점을 맞추고,
나머지 부분은 거의 무시됨
그럼 weighting factors인 alpha를 어떻게 학습할까?
목표 : 그래프의 각 노드의 서로 다른 이웃에 대해 임의의 중요도를 특정하는 것
아이디어 : 다음 attention strategy에 따라 각 노드의 임베딩 hv(l)을 계산
attend : 노드에 서로 다른 중요도를 부여하는 것
이웃에 있는 서로 다른 노드에 서로 다른 가중치를 부여
매커니즘
1) 노드쌍간에 서로 얼마나 중요한지 알아내기 1번 단계
(i) avu는 어텐션 매커니즘 a의 부산물로 계산됨
노드쌍 (u,v)의 메시지 기반으로 attention coefficient evu를 계산함
evu=a(W(l)hu(l−1),W(l)hv(l−1))
👆 evu는 노드 v에 대한 u의 중요도를 나타냄
2) Normalize & Weighted sum 2번 단계
(i) Normalize: evu 를 정규화하여, 최종적으로 avu로 표현 avu=∑k∈N(v)exp(evk)exp(evu) , ∑u∈N(v)αvu=1:
(ii) weighted sum: (i)에서 구한 α를 기반으로, 가중합을 계산 hv(l)=σ(∑u∈N(v)αvuW(l)hu(l−1))