이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.
Graph Neural Network 를 알아보기 전에 Graph란 무엇인지 간단하게 알아보자.
Graph란 꼭지점(Node)들과 그 노드들을 잇는 변(Edge)들을 모아 구성한 자료구조로 연결되어 있는 데이터를 표현하기 좋다.
일반적인으로 그래프는 로 정의한다.
예를 들어 위 그림은 로 표현할 수 있다.
{A,B,C,D}의 Node들로 이루어져 있고, 각 Node들은 Edge{{A,B},{A,C},{A,D},{C,D}}을 통해 연결되어 있음을 나타낸다.
관계나 상호작용 같은 추상적인 개념을 다루기에 적합
복잡한 문제를 더 간단하게 표현 가능하고 다른 관점으로 표현이 가능하기 때문에 SNS에서 친구관계, 바이러스의 확산, User-item의 소비관계(유저,아이템은 Node 소비행동은 Edge) 등으로 모델링이 가능하다.
2. Non-Euclidean Space의 표현 및 학습 가능
Euclidean Space란 우리가 흔히 다루는 이미지, 텍스트, 정형데이터로 격자 형태로 표현이 가능한 것이다
Non-Euclidean Space는 SNS 데이터, 분자(molecule) 데이터 같은 격자로 표현 할 수 없는 형태를 뜻한다.
GNN이란 그래프 데이터에 적용 가능한 신경망을 뜻한다.
이웃 노드들 간의 정보를 이용하여 특정 노드를 잘 표현할 수 있는 특징(벡터)를 잘 찾아내는 것이 목적이고,
이를 위해 밑에 그림과 같은 Task를 실행한다.
이는 Naive Approach라고 부르며 이를 그대로 활용하기에는 한계점이 존재한다.
노드가 많아질수록 연산량은 기하급수적 증가
노드의 순서가 바뀌면 의미가 달라질 수 있음
- 인접행력에서는 순서가 그대로 입력값이 되기 때문에 치명적인 문제가 발생한다.
따라서 GNN을 할 때는
을 이용하여 Convolution 효과를 주고 연산량을 줄이면서 깊은 네트워크로 간접적인 관계 특징까지 추출한다.
즉 노드끼리 연결된 관계, 더 멀리있는 간접관계 특징 추출이 가능하다.