GCN(Graph Convolutional Networks) 간단하게 훑어보기

임정우·2023년 7월 10일

GCN이란?

쉽게 말해서 기존 CNN에서 Convolution filter를 적용하여 이미지에서 특징들을 추출한 것처럼, 그래프에 필터를 적용하여 그래프의 노드와 엣지로부터 정보를 추출해내는 기법이다.

CNN에서 convolution을 하여 local한 특징을 추출한 것처럼 GCN에서는 graph에서 인접한 노드들로부터 정보를 추출해낸다.

컨볼루션 예시
GCN의 이해를 돕기 위한 그림
출처: Source: A Comprehensive Survey on Graph Neural Networks

GCN 업데이트

앞서 말했듯 convolution과 유사하게 graph주변에 있는 노드들로부터 중요한 정보를 추출해낸다.

출처: https://github.com/heartcored98/Standalone-DeepLearning

W = weight
H = hidden state
l = l번째 레이어
즉, 위의 수식은 node1과 인접한 모든 node들에 가중치를 곱하고 b를 더하여 활성화 함수에 넣어서 l+1번째 hidden state에서의 node1을 업데이트하는 과정을 의미한다.

Readout

같은 그래프더라도 그래프의 순서가 바뀌면 컴퓨터가 이를 다른 것으로 인식하는 문제가 발생할 수 있다.
이를 해결하기 위해 readout layer를 통과하면 그래프의 순서가 바뀌어도 동일한 결과를 얻을 수 있다.
readout은 convolution 과정을 거쳐 나온 행렬값을 MLP에 통과시켜 행렬의 모든 값을 합쳐 이루어진다.

Inception

GCN에는 inception 모듈이 사용되었다.

inception 모듈은 여러 사이즈의 필터들을 병렬로 적용한다음에 concatenation하여 다음 layer를 만드는 방법이다.
다음 그림은 일반적인 inception 모듈의 구조이다. 여기서 1x1 convolutions은 채널 수를 줄이는 역할을 한다. 기존에는 모델 size를 늘려 성능을 향상시켰지만 이렇게할 경우 오버피팅 및 계산 자원의 문제가 있었다. inception 모듈을 적용하여 성능도 향상시키면서 보다 더 적은 수의 파라미터 및 연산을 사용할 수 있게 되었다.

profile
경희대학교 소프트웨어융합학과

0개의 댓글