[본 포스팅은 다음 블로그를 참조하여 작성하였습니다. https://viso.ai/deep-learning/graph-neural-networks/]
[개념정리] 그래프 신경망(Graph Neural Network / GNN) (1)
[개념정리] 그래프 신경망(Graph Neural Network / GNN) (2)
1. Graph Neural Network와 Neural Network의 차이 (그래프 신경망과 신경망의 차이)
- 데이터 구조
* Neural Network(NN) : 전통적인 신경망이며, 특히 CNN 또는 RNN과 같은 형태의 방법론은 주로 격자 형태의 데이터 구조에 맞춰 설계되었습니다. CNN은 이미지와 같은 데이터를, RNN은 시계열이나 텍스트와 같은 순차 데이터를 처리하는데 유용합니다.
* Graph Neural Network (GNN) : GNN은 그래프 데이터를 처리하도록 설계 되어, 데이터 포인트 뿐만 아니라 데이터 포인트 간의 복잡한 관계 및 연결도를 저장합니다.
- 데이터 표현
* NN : 전통적인 신경망에 입력되는 데이터는 벡터, 다차원 배열, 또는 시퀀스와 같이 구조화되어야합니다.
* GNN : 그래프 형태의 데이터를 제공받습니다. 각 노드는 특징을 가질 수 있으며, 엣지는 노드 간의 관계를 나타내는 특징을 가질 수 있습니다.
- 작동방식
* NN : 신경망의 연산은 행렬 곱셈, 컨볼루션 연산, 요쇼별 연상 등으로 진행됩니다.
* GNN : Message Passing 이라는 과정을 통해 이웃 노드의 특징을 Aggregating 하여 작동합니다. 이 과정에서는 현재 노드의 특징을 이웃 노드의 특징과 함께 Aggregating 합니다.
-해석 가능성
* NN : 데이터에서 복잡한 패턴을 학습할 수 있지만, 이러한 패턴이 데이터 구조와 어떻게 연관되는지 해석하는 것은 어려울 수 있습니다.
* GNN : 그래프를 직접적으로 처리하기 때문에, 데이터의 관계와 구조가 학습 과제에 어떻게 기여하는지 이해하는데 도움을 줍니다.
2. GNN의 종류
1) GCN(Graph Convolution Network)
* 각 노드의 표현을 이웃 노드와 자신의 특징을 집계하고 변환하여 업데이트 하는 방법입니다.
* 이 집계(Aggregation) 메커니즘은 GCN이 각 노드 주변의 로컬 그래프 구조를 캡처할 수 있게 해줍니다.
2) DGCNN(Deep Graph Convolution Neural Network)
* DGCNN은 그래프 분류를 위해 개발된 깊은 그래프 컨볼루션 신경망으로
* 기존 GCN을 개선해, 비지역 메시지 전달 프레임워크와 공간 그래프 컨볼루션 레이러를 기반으로 하고 있습니다.
* 이는 GCN 대비 여러 층의 그래프 컨볼루션과 Sort Pooling, 1D Convolution이 추가되었습니다.
* 다중 단계 그래프 컨볼루션 : 처음에는 여러 층의 그래프 컨볼루션을 사용하여 노드 표현을 강화하고, 이 과정에서 비국소적 정보를 포함한 더욱 깊은 특성 표현을 학습니다.
* SortPooling(정렬 풀링) : 중간에 정렬 풀링 단계가 있어, 노드 특성을 정렬하여 고정된 크기의 출력 벡터로 변환합니다. 이는 변동적인 그래프 크기에 상관없이 고정 된 크기의 출력이 필요할 때 유용합니다.
* 1D-컨볼루션 및 Desne Layer : 마지막으로 1D Conv와 Dense Layer를 사용해 그래프 수준의 분류나 회귀 작업을 진행합니다.
3) GAT (Graph Attention Network)
* GAT는 Aggregation 과정에서 각 이웃 노드의 특성의 중요도를 동적으로 가중치화합니다.
* 아래 이미지에서 각 화살표의 색상이 다르게 표현된 것은 이러한 중요도의 차이를 의미합니다.
* 이는 모든 연결이 동일하지 않거나 일부 노드가 다른 노드보다 훨씬 더 강력한 영향을 미치는 그래프에서 특히 유용합니다.
4) GRN (Graph Recurrent Network)
* GRN은 RNN과 GNN을 결합한 구조로 시간에 따라 변화하는 그래프 구조의 동적 변화를 포착할 수 있습니다.
* GRN에서는 노드 특성이 반복적으로 갱신되며, 각 반복마다 이전 상태와 새로운 입력이 결합되어 노드의 특성이 업데이트 됩니다.
* 이는 시간적 변화를 포착하기 위해 설계되었으며, 대표적으로 교통 예측이라던가 시간에 따라 진화하는 소셜 네트워크의 변화 등을 확인하는 데 사용할 수 있습니다.
5) GAE (Graph Auto Encoder)
* GAE는 그래프에서 비지도 학습을 수행하기 위해 설계된 모델로, 그래프를 저차원 공간으로 인코딩한 후 이 임베딩에서 그래프 구조를 재구성합니다.
* 이를 통해 그래프의 본질적인 구조적 정보와 특징 정보를 포착하는 표현을 학습하는 것입니다.
* 주요 특징으로는, 저차원 공간으로 임베딩한다는 점과 이를 재구성하는 과정에서 중요한 패턴을 확인할 수 있고 그 관계를 파악할 수 있습니다.
'딥러닝 with Python' 카테고리의 다른 글
[개념정리] Graph SAGE란? Graph SAmple & aggreGatE) (0) | 2024.09.29 |
---|---|
[개념정리] Graph Convolutional Network란? GCN이란? (12) | 2024.09.28 |
[개념정리] 그래프 신경망(Graph Neural Network / GNN) (2) (0) | 2024.08.01 |
[개념정리] 그래프 신경망(Graph Neural Network / GNN) (1) (0) | 2024.07.31 |
[딥러닝 with Python] 이미지 리트리버(Image Retrieval) / CLIP 으로 구현 (0) | 2024.07.30 |
댓글