그래프 데이터는 이미지나 자연어 데이터와는 다음과 같은 차이점이 있어 전통적인 딥러닝 모델을 바로 적용하기 어렵다:
GNN은 노드의 임베딩을 학습할 때 노드의 이웃 정보를 반복적으로 전파하고 집계한다는 아이디어에서 출발한다. 구체적으로:
: GNN은 입력 그래프의 노드들에 각각 계산 그래프(computation graph)를 정의하고, 이를 통해 노드 임베딩을 계산한다.
GNN의 층 별 연산은 다음 두 단계로 이루어진다:
- 이웃 집계(neighborhood aggregation) 이웃 집계 단계에서는 각 노드 v의 k번째 층 집계 벡터 a_v^(k)를 계산한다. 이 벡터는 노드 v의 이웃 노드들의 이전 층(k-1) 임베딩 벡터 h_u^(k-1)를 모아서 집계 함수 AGGREGATE^(k)를 적용한 결과이다.
- 집계 함수는 각 이웃 노드의 임베딩 벡터를 입력으로 받아, 그 정보를 요약하는 역할을 한다. 대표적인 집계 함수로는 평균(mean), 합(sum), 최대 풀링(max-pooling) 등이 있다.
이웃 집계 단계를 통해 노드 v는 자신의 직접 연결된 이웃들의 정보를 종합할 수 있게 된다.
- 집계 정보 변환(feature transformation) 집계 정보 변환 단계에서는 이웃 집계 벡터 a_v^(k)와 노드 자신의 이전 층 임베딩 벡터 h_v^(k-1)를 연결(concatenation)한 후, 학습 가능한 가중치 행렬 W^(k)를 곱하고 비선형 활성화 함수 σ를 적용하여 노드 v의 k번째 층 임베딩 벡터 h_v^(k)를 계산한다.
: N의 학습 과정은 기존 딥러닝 모델과 유사하다. 주어진 손실 함수를 최소화하는 방향으로 층별 가중치 행렬(W,B)를 경사 하강법으로 업데이트한다.
Wk
: 이웃 집계를 위한 가중치 행렬
Bk
: 자기 벡터를 변환하기 위한 가중치 행렬
이 가중치 행렬은 여러 노드에서 공유. 즉, 네트워크의 모든 노드가 동일한 변환 행렬을 사용한다.
GCN은 GNN의 대표적인 구현체 중 하나로, 그래프 라플라시안 행렬을 변형한 필터로 근방 노드를 집계하는 방식이다. GCN의 층 별 연산은 다음과 같이 행렬 형태로 간단히 표현 된다:
GCN은 그래프 구조를 인접 행렬로 명시적으로 나타내고 효율적인 행렬 연산을 통해 빠른 학습이 가능하다는 장점이 있다.
EX)
우리 학교에는 민수, 영희, 철수, 지민이라는 4명의 학생이 있고. 이들의 친구 관계는 다음과 같다.
1단계: 인접 행렬 A 만들기
2단계: 차수 행렬 D와 그 역행렬 D^-1 만들기
3단계:
H^(k) 행렬
H^(k)는 k번째 층에서 각 학생의 임베딩 벡터를 나타낸다. 예를 들어 H^(k)가 다음과 같다고 해 보자(임베딩 차원 : 2)
4단계: AH^(k) 계산하기
(AH^(k))[i]는 i번 학생의 친구들의 임베딩 벡터를 모두 더한 것
민수와 연결된 친구 : 영희, 철수
영희의 임베딩 벡터 [0.5, 1.1]
철수의 임베딩 벡터 [1.2, 0.9]
업데이트 된 민수의 임베딩 벡터 = 1.7, 2.0
예를 들어, 민수의 경우 (AH^(k))[민수] = H^(k)[영희] + H^(k)[철수] = [0.5, 1.1] + [1.2, 0.9] = [1.7, 2.0] 이 된다.
5단계: D^-1AH^(k) 계산하기
마지막으로 D^-1과 AH^(k)를 곱하면 D^-1AH^(k)를 얻을 수 있. 이는 각 학생의 임베딩 벡터를 그 학생의 친구 수로 나눈 것과 같다.
GNN은 기존의 CNN, RNN, Transformer 등 주요 신경망 아키텍처를 그래프 도메인으로 일반화한 것으로 볼 수 있다.
CNN: 고정된 크기의 격자(grid) 위에서 sliding window로 지역 정보를 집계 vs. GNN: 불규칙한 그래프 위에서 가변 크기의 이웃을 adaptive하게 집계
Transformer: self-attention을 통해 모든 토큰이 서로 attend vs. GNN: 노드의 계산 그래프가 Transformer의 fully-connected attention과 유사
GNN은 기존 신경망의 핵심 아이디어를 차용하면서도 그래프 고유의 특성을 반영할 수 있도록 일반화된 강력한 프레임워크라 할 수 있다.
-그래프 데이터는 노드의 순서가 없고 연결 구조가 불규칙하여 기존 딥러닝 모델을 직접 적용하기 어려움