GNN은 Graph Neural Network의 약자로, 그래프 데이터를 학습하는 알고리즘이다.
그래프는 점과 점을 잇는 선으로 이루어진 데이터 구조이다.
관계나 상호작용을 나타낼 때 주로 쓰인다.
그래프를 컴퓨터에서 표현하기 위해서는 주로 인접행렬이 쓰인다.
a[i][j] : 노드 i에서 노드 j로 가는 간선이 있으면 1, 아니면 0으로 표현된다.
다음 예를 보자.

위와 같은 그래프는 아래 행렬처럼 표현된다.

그러면 방향이 없는 무향 그래프이면 어떻게 될까?


위 그림들을 보고 인접행렬에 대해 이해했을 것이라 생각한다.
그러면 그래프를 분석하기 힘든 이유는 무엇일까?
1. 고정된 형태가 아니다.
2. 유클리드 공간에 있지 않다. 좌표계로 표현할 수 없다.
3. 데이터가 커질수록 시각화가 어려워진다.
하지만 단점만 있는 것은 아니다.
그래프는 관계, 상호작용같은 추상적인 개념들을 표현하기에 탁월하다.
GNN의 핵심은 점이 이웃과의 연결에 의해 정의된다는 것이다. 만약 어떤 점의 이웃과 연결을 다 끊으면 그 점은 고립되고 아무 의미를 갖지 않게 된다.
GNN을 통해 그래프의 점들 사이의 관계를 파악하고 두 점 사이에 얼마나 연관성이 있을지 예측할 수 있다.
GNN은 그래프의 구조를 이해하고, 각 노드가 가진 특징을 고려하면서, 이웃 노드의 정보를 반영하여 자신을 업데이트하고 이 과정을 반복하면서 점점 더 많은 정보를 학습하게 됨.
각 노드는 자기 자신과 이웃 노드들의 정보를 합쳐서 새로운 표현을 생성한다.
예를 들어, A라는 노드는 B, C와 연결되어 있다면, A는 B와 C의 정보를 받아들이고 업데이트한다.
이 과정은 여러 번 반복될 수 있으며, 각 노드는 자신의 이웃 정보와 자신의 정보를 바탕으로 새로운 특성을 만듦.
마지막에는 모든 노드가 자신의 특성을 업데이트하고, 그래프 전체의 정보를 고려한 결과를 도출함.
저희 프로젝트에서도 사용할 계획이었는데 너무 도움이 된 것 같아요
감사합니다!