본문 바로가기
딥러닝 with Python

[개념정리] 그래프 신경망(Graph Neural Network / GNN) (3)

by CodeCrafter 2024. 8. 2.
반응형

[본 포스팅은 다음 블로그를 참조하여 작성하였습니다. https://viso.ai/deep-learning/graph-neural-networks/]

 

Graph Neural Networks (GNNs) - 2024 Comprehensive Guide - viso.ai

Graph Neural Networks (GNNs) operate on graph-structured data, enabling them to learn relationships and patterns within complex networks.

viso.ai

 

[개념정리] 그래프 신경망(Graph Neural Network / GNN) (1)

 

[개념정리] 그래프 신경망(Graph Neural Network / GNN) (1)

1. 그래프 신경망이란? (Graph Neural Network / GNN)- 그래프 신경망, 즉 GNN은 그래프 구조의 데이터를 처리하고 분석하기 위한 딥러닝 모델을 말합니다.- 이는, 주로 노드, 엣지 그리고 전체 그래프에 대

jaylala.tistory.com

[개념정리] 그래프 신경망(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는 그래프에서 비지도 학습을 수행하기 위해 설계된 모델로, 그래프를 저차원 공간으로 인코딩한 후 이 임베딩에서 그래프 구조를 재구성합니다. 

 * 이를 통해 그래프의 본질적인 구조적 정보와 특징 정보를 포착하는 표현을 학습하는 것입니다.

 * 주요 특징으로는, 저차원 공간으로 임베딩한다는 점과 이를 재구성하는 과정에서 중요한 패턴을 확인할 수 있고 그 관계를 파악할 수 있습니다.

반응형

댓글