G·Graph Daily Lab 전체 140회
추가 32 / 40 · 심화 · 약 15분

GraphSAGE와 GAT, 이웃을 고르고 저울질하기

GCN은 모든 이웃을 차수로 정규화해 섞습니다. 이웃이 수만 개인 허브, 처음 보는 새 노드, 이웃마다 중요도가 다른 경우를 GraphSAGE와 GAT가 어떻게 다루는지 봅니다.

그래프 표현 학습

배운 뒤 돌아올 회차

DAY 78의 메시지 전달에서 ‘모든 이웃을 같은 방식으로 평균’하던 부분을 바꾸면 어떤 문제가 풀리는지 확인합니다.

시작하면 직접 풀기와 퀴즈 기록이 저장됩니다. 본과정 100회 진도와는 별도입니다.

이번에 더 배울 것

GraphSAGE(Hamilton, Ying & Leskovec 2017)는 노드마다 벡터를 따로 학습하는 대신, 이웃의 특징을 샘플링하고 집계해 벡터를 만드는 ‘함수’를 학습합니다. 그래서 학습 때 없던 노드나 새 그래프에도 특징만 있으면 벡터를 계산할 수 있습니다(귀납적, inductive). 이웃은 고정 크기로 균일하게 샘플링하며, 논문은 깊이 K=2에 1홉 25개·2홉 10개를 기본 설정으로 썼습니다. 집계 함수로는 평균(mean), LSTM, 풀링(pooling)을 비교했고, 자기 표현과 집계한 이웃 표현을 이어 붙인(concatenate) 뒤 변환합니다.

GAT(Veličković et al. 2018)는 이웃마다 다른 가중치를 학습합니다. 노드 i와 이웃 j의 변환된 특징을 이어 붙여 점수 e_ij를 만들고(LeakyReLU 적용), 이웃들 사이에서 softmax로 정규화해 어텐션 계수 α_ij를 얻은 뒤 가중합을 냅니다. 그래프에 실제로 있는 이웃에 대해서만 계산하는 마스크드 어텐션(masked attention)이며, 여러 개의 어텐션 헤드를 두어 학습을 안정시킵니다.

두 방법은 다른 문제를 겨냥합니다. GraphSAGE의 샘플링은 허브 노드의 계산량을 고정하지만, 뽑히지 않은 이웃의 정보는 그 계산에서 빠집니다. GAT의 가중치는 중요한 이웃을 강조하지만 모든 이웃의 점수를 계산해야 하고, 학습된 가중치를 곧바로 ‘이유’로 해석하기는 어렵습니다. 어느 쪽이든 층 수와 과평활화 문제는 그대로 남습니다.

작은 예제로 따라가기

1

이웃이 10,000명인 허브: 전체 집계는 1홉에서만 10,000개를 읽지만, GraphSAGE(1홉 25개, 2홉 10개)는 많아야 25 + 25×10 = 275개 노드만 읽습니다.

2

GAT: 이웃 세 명의 점수 e = (2, 1, 0)이면 exp 값 7.39, 2.72, 1.00, 합 11.11이라 α ≈ (0.67, 0.24, 0.09)입니다.

3

이웃 특징이 (10, 4, 1)이면 평균은 5지만 GAT 가중합은 약 0.67×10 + 0.24×4 + 0.09×1 ≈ 7.7로 첫 이웃 쪽으로 치우칩니다.

COMPARE & EXPLAIN

세 가지 상황에서 집계 방식 고르기

각 상황에서 전체 평균(GCN식), 샘플링(GraphSAGE), 어텐션(GAT) 가운데 무엇이 문제를 가장 줄일지 먼저 골라 보세요.

샘플링: 읽는 노드 상한 275개

고정 크기 샘플링이 계산량을 묶어 둡니다. 대신 뽑히지 않은 이웃의 정보는 빠집니다.

GraphSAGE는 이웃을 샘플링해 새 노드에도 쓰는 집계 함수를 배우고, GAT는 softmax 어텐션으로 이웃마다 다른 가중치를 배웁니다.

학습을 시작하면 새 문제를 직접 풀고 확인 퀴즈를 마친 뒤 선택한 본과정 회차로 돌아갑니다.