AI바라기의 인공지능
개념 정리 : GNN (Graph Neural Network) 본문
1. GNN을 한 줄로 말하면
“내 주변 이웃들의 정보를 모아서, 내 정보와 섞어, 내 표현을 새로 만드는 모델”입니다.
즉 각 노드는 처음에는 자기 feature만 가지고 있는데,
GNN은 거기에 이웃 정보까지 반영해서 더 좋은 표현을 만듭니다.
2. 왜 이런 게 필요하냐
그래프 데이터에서는 노드 하나만 따로 보면 정보가 부족한 경우가 많습니다.
예를 들어:
- 사람 노드라면: 내 정보만으로는 부족하고 친구들도 중요할 수 있음
- 논문 노드라면: 내 내용뿐 아니라 인용 관계도 중요함
- 분자 그래프라면: 원자 하나만이 아니라 주변 원자와 결합 구조가 중요함
즉,
“이 노드가 어떤 의미를 가지는가?”는 주변과의 관계를 봐야 더 잘 알 수 있다
는 것입니다.
3. 가장 기본적인 흐름
노드 $i$의 현재 feature를
라고 하겠습니다.
이웃 노드들의 feature는
입니다.
여기서 $\mathcal{N}(i)$는 노드 $i$의 이웃 집합입니다.
GNN은 보통 크게 두 단계를 합니다.
(1) 이웃 정보 모으기
이웃들의 정보를 하나로 합칩니다.
가장 단순하게 평균을 쓰면:
즉,
이웃들의 평균 정보를 만든 것입니다.
(2) 내 정보와 합치기
그 다음 이웃 요약 정보 $m_i$와 내 정보 $h_i$를 섞어서 새로운 표현을 만듭니다.
예를 들면:
여기서
- $W_{\text{self}}$: 내 정보를 얼마나 반영할지
- $W_{\text{nbr}}$: 이웃 정보를 얼마나 반영할지
를 학습하는 가중치입니다.
4. 이 수식이 직관적으로 무슨 뜻이냐
이 식은 사실 그냥 이런 뜻입니다.
“내 원래 정보도 유지하되,
주변 이웃들의 정보도 참고해서
나를 다시 표현하자.”
즉,
인데,
그냥 더하는 게 아니라 학습 가능한 방식으로 섞는 것입니다.
핵심 식만 다시 보면:
5. 왜 “학습 가능한 가중치”가 중요하냐
만약 이웃 정보와 내 정보를 무조건 똑같이 섞으면 너무 단순합니다.
실제로는
- 어떤 문제에서는 내 정보가 더 중요할 수 있고
- 어떤 문제에서는 이웃 정보가 더 중요할 수 있습니다.
- 심지어 이웃들끼리도 중요도가 다를 수 있습니다.
그래서 모델이 직접 배우게 합니다.
예를 들어 더 유연하게 하려면:
이렇게 쓸 수도 있습니다.
여기서
- $[h_i \mid m_i]$: 두 벡터를 이어붙이기(concat)
- $W$: 학습되는 가중치
- $\sigma$: 비선형 함수(ReLU 등)
입니다.
즉,
내 정보와 이웃 정보를 붙여서 작은 신경망에 넣어 새 표현을 만드는 것입니다.
6. 엣지 feature가 있으면?
엣지가 단순히 “연결되어 있음”만 나타내는 게 아니라,
그 관계 자체의 정보도 가질 수 있습니다.
예를 들어 엣지 feature를
라고 하겠습니다.
그러면 노드 $j$가 노드 $i$에게 보내는 정보를 만들 때
노드 feature뿐 아니라 엣지 feature도 같이 쓸 수 있습니다.
예를 들면:
즉 메시지는
- 내 정보 $h_i$
- 이웃 정보 $h_j$
- 둘 사이 관계 $e_{ij}$
를 같이 보고 만들 수 있습니다.
그 다음 이 메시지들을 모아서:
최종적으로 업데이트합니다:
이게 더 일반적인 GNN 형태이고,
이걸 보통 message passing이라고 부릅니다.
7. 그래서 GNN의 본질은 뭐냐
아주 본질만 남기면 이겁니다.
GNN의 핵심 3단계
- 이웃에게서 정보 받기
- 그 정보를 하나로 모으기
- 내 정보와 합쳐서 내 표현을 업데이트하기
즉,
입니다.
좀 더 일반적으로 쓰면:
입니다.
8. 직관적 비유
노드 하나를 한 사람이라고 생각해보면 쉽습니다.
- 내 feature = 내 생각, 내 상태
- 이웃 feature = 주변 사람들의 생각, 상태
- 엣지 feature = 나와 그 사람의 관계
그러면 GNN은
“내 생각만 보지 말고,
주변 사람들 얘기도 듣고,
그걸 종합해서 내 상태를 다시 정하자”
라는 구조입니다.
즉, 주변 문맥을 반영한 표현 학습입니다.
9. 한 층, 두 층, 세 층 쌓이면?
GNN layer를 한 번 적용하면
보통 1-hop 이웃 정보까지 반영됩니다.
두 번 적용하면
이웃의 이웃, 즉 2-hop 이웃 정보까지 간접적으로 반영됩니다.
세 번이면 더 멀리 갑니다.
즉 layer를 쌓을수록
더 넓은 그래프 문맥을 보게 됩니다.
예를 들어:
- 1층: 바로 연결된 노드들 반영
- 2층: 한 칸 더 멀리 있는 노드들까지 반영
- 3층: 더 넓은 주변 구조 반영
10. 핵심을 제일 짧게 요약하면
아주 짧게 줄이면:
좀 더 GNN스럽게 쓰면:
즉,
GNN은 그래프에서 이웃 정보를 모아 자기 표현을 업데이트하는 모델입니다.
11. 진짜 핵심만 다시 말하면
중요한 건 세 가지입니다.
- 노드는 자기 feature를 가짐
- 이웃들의 정보를 모음
- 그걸 자기 정보와 합쳐 새로운 node representation을 만듦
그래서 GNN을 이해할 때 가장 중요한 문장은:
“그래프 구조에 따라 주변 정보를 모아 자기 표현을 업데이트한다.”
입니다.
'인공지능' 카테고리의 다른 글
| 양자 AI 개념 : ∣+⟩ ∣-⟩ ∣0⟩ ∣1⟩ 네 상태의 관계 및 정의 (0) | 2026.06.20 |
|---|---|
| 양자 AI 0강 : 양자상태의 언어: 벡터, 확률진폭, 위상 (큐비트를 확률표가 아니라 “확률진폭을 가진 벡터”로 이해하는 입문 강의) (0) | 2026.06.19 |
| 개념정리 : 고유값, 고유벡터 (0) | 2026.04.01 |
| 개념정리 : Diffusion 모델 학습 Loss : 노이즈 예측부터 Score Matching까지 (1) | 2026.03.28 |
| 개념정리 : diffusion : 이상적인 한 스텝 reverse (1) | 2026.03.28 |
