Semi-Supervised Classification with Graph Convolutional Networks

GCN은 인접한 문서의 feature를 섞어 일부 라벨만으로 노드를 분류한다. 라벨 접근과 edge 접근을 구분해 transductive 결과를 읽는 법을 설명한다.

Jiphyeonjeon Team2026-09-225 min read쉬운 읽기상세 읽기
GCNGraphNeuralNetworksSemiSupervisedLearningSpectralGraphConvolutionPaperReview

Paper: Thomas N. Kipf; Max Welling (2017). "Semi-Supervised Classification with Graph Convolutional Networks". PDF · arXiv:1609.02907v4

GCN은 라벨이 적은 그래프에서, 노드의 feature만 보지 않고 연결된 이웃의 feature도 섞어 분류한다. 인용 그래프라면 한 논문의 단어 feature가 부족할 때 인용으로 이어진 논문들의 단어 분포가 보조 신호가 된다. 이 논문은 전체 그래프를 한 번에 놓고 일부 노드의 라벨로 학습하는 transductive node classification을 다룬다. 시험 노드의 라벨은 학습에 쓰지 않지만, 시험 노드의 feature와 edge는 forward pass에 들어간다는 뜻이다.

1. 왜 연결을 함께 보나

같은 주제의 문서는 비슷한 단어를 쓰고 서로 인용할 가능성이 있다. 이를 homophily라고 생각하면, 이웃 feature를 섞는 과정은 노이즈를 줄여 줄 수 있다. 하지만 edge가 유사성을 뜻한다는 보장은 없다. 거래, 공격, 팔로우처럼 연결의 방향이나 의미가 다양하면 무작정 섞는 것은 오히려 해로울 수 있다. 원논문도 edge가 반드시 유사성을 뜻하지는 않는다고 밝힌다.

GCN의 성과는 이웃을 섞는 가정이 데이터에 맞는가를 시험한 결과다. 그래프가 있으면 항상 좋다는 뜻은 아니다. 특히 원논문의 citation 실험에서는 문서의 모든 feature와 그래프 구조를 학습 시점에 알고 있는 설정이다.

2. 한 층에서 하는 일

먼저 각 노드가 자기 정보도 남기도록 self-loop를 더한다. 다음으로 연결된 두 노드 각각의 차수에 맞춰 메시지의 가중치를 조정한다. 이 대칭 차수 정규화는 행마다 합이 1인 단순 산술평균과 같다고 할 수 없다. 이어 이웃과 자신의 현재 표현을 가중 합하고, 모든 노드에 공유되는 학습 가중치와 비선형 변환을 적용한다. 두 층이면 두 hop 안쪽의 feature가 영향을 준다. 마지막에는 라벨이 있는 훈련 노드에만 cross-entropy loss를 계산한다.

GCN의 전체 학습 흐름

그림 1. Kipf & Welling (2017), Equation 9와 Figure 1(PDF p. 4)의 흐름을 바탕으로 만든 설명도. 모든 노드의 feature·edge로 표현을 계산하지만, 손실은 training label에만 건다. 따라서 라벨 접근과 graph 접근을 구분해야 한다.

3. 작은 예로 보기

인공지능·생물학·물리 세 주제의 논문 그래프를 생각하자. 새로 분류할 논문은 ‘network’라는 단어만으로는 애매하지만, 주로 AI 논문을 인용하고 AI 논문에게 인용된다면 두 번의 이웃 집계 뒤 AI 쪽 표현에 가까워질 수 있다. 반대로 그 연결이 저자를 공유해서 생긴 것이라면 주제 라벨에 도움이 안 될 수 있다.

여기서 흔한 오해가 있다. validation/test 노드의 라벨을 학습시키는 것은 누수다. 그러나 이 논문 설정에서 validation/test 노드의 feature와 edge를 forward pass에 쓰는 것은 허용된다. 이 차이 때문에 GCN의 원 수치를, 미래 노드가 아직 그래프에 없는 inductive 서비스 정확도로 그대로 읽을 수 없다.

4. 원문 결과는 어떤 조건의 결과인가

Table 1의 Citation 데이터는 Citeseer 3,327노드·4,732 edge, Cora 2,708·5,429, Pubmed 19,717·44,338이며, 각 class당 20개 라벨만 훈련에 쓴다. Table 2에서 GCN은 Citeseer 70.3%, Cora 81.5%, Pubmed 79.0%, NELL 66.0%를 보고했다. 괄호 안 시간은 수렴까지의 초이며, citation 데이터는 dropout 0.5, 첫 층 L2 5×10⁻⁴, hidden 16을 사용했다.

원문 GCN 구조와 표현

그림 2. Kipf & Welling (2017), Figure 1, PDF p. 4의 원도판. 좌측은 다층 GCN, 우측은 Cora에서 5% 라벨을 사용한 hidden representation의 t-SNE다. t-SNE 그림은 클래스 분리가 시각화된 사례이지, 별도의 일반화 지표는 아니다.

저자들은 Yang et al.의 split에서 100개 무작위 초기화 평균을 보고했다. 또 같은 크기의 무작위 split 10개에서는 Cora 80.1±0.5%였다. 즉 Table 2의 한 수치는 데이터셋·분할·feature·하이퍼파라미터가 함께 만든 결과다. 다른 split, 특히 미래 노드를 분리한 시간 split에서는 같은 값이 보장되지 않는다.

5. 어디까지 적용할 수 있나

GCN은 전체 그래프를 메모리에 올릴 수 있고, 대상 노드들이 추론 전에 이미 그래프에 들어와 있으며, edge가 feature를 섞을 근거가 있는 경우의 강한 기준선이다. 계산은 한 층당 edge 수에 선형이지만, 원논문도 memory-efficient mini-batch 확장은 future work로 남겼다. directed edge와 edge feature도 이 기본식이 자연스럽게 다루지 못하는 한계로 적는다.

깊이를 계속 늘리면 멀리 있는 정보도 들어오지만, 이 논문은 두 층의 단순한 모델을 평가했다. 따라서 “GCN은 모든 장거리 관계를 포착한다”는 결론은 원문에 없다. 모델을 쓸 때는 label split을 먼저 고정하고, edge가 test 시점에 가능한지, feature preprocessing이 split 밖 정보를 보지 않는지 점검해야 한다.

6. 결론

GCN은 복잡한 spectral filter를 두 번의 정규화된 이웃 집계와 작은 신경망으로 단순화했다. 그러나 이 단순함은 평가 설정과 분리할 수 없다. 원문 결과를 정확히 읽으려면 “라벨은 일부만, edge와 feature는 전체 그래프에서”라는 transductive 조건을 명시해야 한다.

더 긴 수식 유도와 propagation 변형 비교는 심화 보기에서 확인할 수 있다.

References

Kipf, T. N., & Welling, M. (2017). Semi-supervised classification with graph convolutional networks. International Conference on Learning Representations. https://arxiv.org/abs/1609.02907v4