상세 컨텐츠

본문 제목

[논문 리뷰 스터디] A Comprehensive Survey on Graph Neural Networks + torch_geometric 라이브러리

심화 스터디/논문 리뷰

by 이듄 2022. 9. 15. 20:32

본문

작성자: 15기 이승은

  • 논문 리뷰 계기

최근 이미지 사이의 유사성에 관심 → 단순히 cosine similiarity로 계산 가능하지만 보다 고차원의 정보를 반영하여 이미지 사이의 유사성을 계산해보고 싶어졌음 → 기존의 Euclidean space (R^n)에서의 연산을 넘어 non-Euclidean space에서 Graph로 이미지를 다뤄보고 싶음

  • Graph로 과연 딥러닝을 어떻게 하는 것인가?

non-Euclidean space에서 대상들 간 복잡한 관계나 상호 의존성 등을 그래프로 표현 가능 (화학 분자 구조, 사람들 간의 관계 네트워크, 쇼핑 상품 추천 등)

특히 머신러닝에서는 인스턴스들이 서로 독립적이어야 한다는 전제가 있으나 (Dropout이나 Multi-collinearity 제거 등) 그래프에서 노드는 서로 독립적이지 않고, 다른 노드들과 여러 관계를 맺고 있어서 기존 머신러닝 기법들을 활용하기 어려움 → BUT 반대로 생각하면 그러한 관계를 이용하는 특정 task들에서는 성과가 있지 않을까

Graph Neural Networks [GNN]은 크게 4가지로 분류 가능

  • Namely recurrent Graph Neural Networks
  • Convolutional Graph Neural Networks
  • Graph Autoencoders
  • Spatial-temporal Graph Neural Networks
  • GNN과 유사한 다른 개념들 비교
  • Network Embedding: 네트워크 노드를 낮은 차원의 벡터로 표현하는 것 (차원을 줄이면서 동시에 노드 구조와 노드의 내용을 보존하기 위한 목적) 반면 GNN은 그래프 표현 자체가 아닌 그래프를 이용해서 어떠한 목표를 달성하기 위한 것이 목적이다
  • Graph Kernel Methods: kernel 함수를 통해 그래프 레벨에서 그래프 간 유사도를 측정 (그래프 분류 문제를 풀기 위한 기법) 그러나 Graph Kenrel Methods는 그래프나 노드를 mapping function을 통해 임베딩할 때 유사도 계산을 따로 하기 때문에 계산 과정에서 bottlenecks 발생 but GNN은 임베딩부터 분류까지 한 번에 시행
  • Definition
  • G = (V, E): Vertexes (Nodes) and Edges
  • adjacency matrix
  • Spatial-Temporal Graph

node attribute가 시간에 따라 동적으로 변경되는 그래프

  • GNN 모델 4가지
  • Recurrent Graph Neural Networks (RecGNNs)

그래프 자체가 시작과 끝이 있는 것이 아닌 순환 구조이므로 이 구조를 recurrent 모델을 통해 표현하고자 함

GRU 사용하기도

but 요즘에는 잘 사용하지 않고 거의 convolution 사용. ConvGNN에 영향을 줌

  • Convolutional Graph Neural Networks [ConvGNNs]

convolution 연산을 Euclidean space의 grid data가 아닌, 그래프 데이터에 적용

노드와 노드의 feature, 그리고 이웃 노드의 feature → 이들의 aggregation을 활용하여 노드를 고차원으로 표현하고, 여러개의 layer를 쌓는다

CNN과 유사하게, ReLU, Softmax 등 사용하여 classification 등 다양한 task에 활용할 수 있다

  • Graph Autoencoders

노드나 그래프를 인코딩하고 다시 복원하는 과정에서 latent vector를 얻는 unsupervised learning의 일종으로, latent node representaiton, graph generative distributions 학습 가능

  • Spatial-temporal Graph Neural Networks

그래프의 숨겨진 패턴들을 학습하는 네트워크로, 교통량 예측, 사람 동작 인식, 운전 행동 예측 등 다양한 분야에서 활용 중. 공간적, 시간적 의존성을 동시에 고려할 수 있는 모델을 설계하는 것이 목표. Graph Convolution을 통해 공간적 의존성을, RNN이나 CNN을 통해 시간적 의존성을 얻는 방식 사용

  • GNN의 output
  • Node-level ouputs

node representation / graph convolution으로 classification, regression 등 활용

  • Edge-level outputs

edge로 연결된 두 노드의 hidden representation, 연결 강도, label, 유사도 함수 등 활용

  • Graph-level outputs

그래프 분류

  • GNN 학습 방식
  • Semi-supervised Learning

일부 노드들은 label이 있고, 다른 노드들은 label이 없는 상태에서 unlabeled 노드도 분류하는 모델 학습 → GCN 모델링 후 multi-class classification을 위한 layer 연결

  • Supervised Learning
  • Unsupervised Learning

Autoencoder / negative sampling (노드 쌍의 일부는 negative, 일부는 positive로 샘플링 후 logistic regression layer를 통해 positive/negative 분류 → 전체 노드 집합보다 작은 노드 집합을 만듦 (해당 노드 주변 노드들만 positive로 샘플링/나머지는 랜덤으로 샘플링해서 negative) → 이후 이진 분류)

 

  • torch_geometric 라이브러리 리뷰

 

ref. https://thejb.ai/comprehensive-gnns-1/, https://pytorch-geometric.readthedocs.io/en/latest/notes/introduction.html

관련글 더보기

댓글 영역