GNN 3대 방법론: 2차원 벡터 계산 시뮬레이션
초기 세팅: 나(A): [1, 0], 이웃(B): [0, 1], 이웃(C): [1, 1] | 가중치(W): 2배 증폭
1. GCN (Graph Convolutional Network)
"주변의 모든 의견을 평균 내어 나의 정체성을 업데이트합니다."
- STEP 1. 평균(Mean): ([1,0] + [0,1] + [1,1]) / 3 = [0.66, 0.66]
- STEP 2. 변환(W): [0.66, 0.66] × 2 = [1.32, 1.32]
결과: [1, 0]이었던 내가 이웃들과 섞여 대각선 방향([1.32, 1.32])으로 이동했습니다.
2. GraphSAGE (Sample & Aggregate)
"내 개성은 유지하고, 이웃(B)의 요약본만 옆에 붙입니다."
- STEP 1. 샘플링: 이웃 B [0, 1] 선택
- STEP 2. 결합(Concat): [나의 값, 이웃 값] = [1, 0, 0, 1] (4차원 확장)
- STEP 3. 변환(W): 4차원 벡터를 2차원으로 압축하며 가중치 적용 = [2.0, 2.0]
결과: 내 정보와 이웃 정보를 분리해서 처리하므로 '나'의 특징이 연산 과정에서 더 명확히 보존됩니다.
3. GAT (Graph Attention Network)
"중요한 이웃(C)의 말에 더 귀를 기울입니다."
(가중치 설정: B=0.1, C=0.9)
- STEP 1. 어텐션: (0.1 × [0, 1]) + (0.9 × [1, 1]) = [0.9, 1.0]
- STEP 2. 변환(W): [0.9, 1.0] × 2 = [1.8, 2.0]
결과: [1.8, 2.0]은 이웃 C의 방향([1, 1])과 매우 흡사합니다. 중요한 노드 쪽으로 내 상태가 동화됩니다.
요약 비교
| 구분 | 계산 철학 | 2차원 공간에서의 움직임 |
|---|---|---|
| GCN | 산술 평균 | 이웃들의 정중앙(평균점)으로 이동 |
| GraphSAGE | 샘플링 및 결합 | 나와 이웃의 특징을 독립적으로 유지하며 이동 |
| GAT | 가중 평균(Attention) | 가장 중요한 이웃의 좌표 방향으로 강하게 이동 |
댓글 없음:
댓글 쓰기