반응형
Contents 1. GIN (Graph Isomorphism Network) 2. GIN을 활용한 그래프 분류 2.1 코드 구현 GIN은 Graph Isomorphism Network의 약자로, 그래프 동형성을 바탕으로한 모델입니다. 2018년에 Xu et al.에 의해 소개된 GIN은 그래프 동형성을 평가하는 WL 테스트의 표현을 갖추도록 설계되었습니다. 본 포스팅에서는 WL 테스트에 대한 설명은 다루지 않습니다. 전통적인 방식보다는, neural network 관점에 포커싱하여 GIN을 소개합니다. GIN은 그래프 구조를 구별하기 위해 사용되는 기법입니다. 이번 포스팅에서는 GIN과 그래프의 표현력을 의미하는 graph expressiveness에 대해 설명하겠습니다. 1. GIN (Graph Is..
Contents 1.GraphSAGE 1.1 이웃 샘플링 1.2 Aggregation 2. GraphSAGE 코드 구현 3. Inductive VS Transductive Learning 그래프나 추천 시스템 분야에서는 모델에 대한 scalability 문제가 중요합니다. 아무리 정확한 모델이더라도, 연산이 너무 많아 모델이 무거워지면 현실에 존재하는 빅데이터에 적용하기 힘들어집니다. GraphSage는 lager 그래프를 다루기 위해 제안된 모델입니다. 특히 e-commerce 분야에서 수백만명의 유저와 아이템이 존재하기 때문에, 추천 시스템에서도 GraphSage 알고리즘을 이용하는 경우가 많습니다. 이번 포스팅에서는 큰 그래프는 다룰 때 scalability를 해결하기 위한 GrapgSage를 알..
Contents 1. GAT 기본 개념 1.1 Linear transformation 1.2 Activation function 1.3 Softmax normalization 1.4 Multi-head attention 1.5 Improved graph attention layer 2. Numpy로 graph attention layer 구현하기 3. GAT 구현하기 이전 포스팅에서는 서로 다른 이웃 수를 가진 노드 degree를 정규화하여 이웃 정보를 학습하는 GCN 알고리즘을 알아보았습니다. 이번 포스팅에서 다룰 Graph Attention Network (GAT)는 GCN에서 한층 더 발전된 알고리즘입니다. GAT의 핵심 아이디어는 노드 간 상호작용을 모델링하기 위해, 그래프의 각 노드가 이웃 노드..
Contents 1. GCN이란? 2. GCN 구현하기 3. 마무리 이전 포스팅에서 인접 행렬 정보를 반영한 신경망 모델인 GNN을 살펴보았습니다. 이때 일반적인 딥러닝 모델과 같이, 행렬곱 연산을 통해 노드의 정보를 학습했습니다. 이번 포스팅에서 알아볼 GCN (Graph Convolutional Networks)은 이웃 노드의 정보를 aggregation하는 방식으로 레이어를 구성합니다. GCN은 이름에서도 알 수 있듯이, CNN의 아이디어를 가져온 것입니다. 2017년에 논문을 통해 등장한 GCN은 현재 그래프 기반 연구에서 baseline이 되는 기법이라고 할 수 있습니다. 이러한 GCN의 기초 개념과 간단한 코드 구현을 살펴보겠습니다. 본 포스팅에서도 수식과 개념을 다루겠지만, 보다 엄밀하고 정..
Contents 1. 그래프 기반 데이터 세트 2. GNN 직접 구현하기 3. 마무리 이전 포스팅에서 그래프에 대한 기본 이론과 노드를 임베딩하는 개념에 대해 알아보았습니다. 이번 포스팅부터는 본격적으로 그래프 기반 데이터를 neural network를 통해 학습하는 방법을 배우겠습니다. 먼저 가장 기초적인 GNN (graph neural network)를 직접 코드로 구현해보고, 실제 데이터 세트에 적용해보겠습니다. 1. 그래프 기반 데이터 세트 GNN (graph neural network) 기초를 살펴보기 전에, PyTorch Geomatric을 사용하여 대표적인 그래프 기반 데이터 세트를 살펴보겠다. 1) The Cora dataset 그래프 학습과 노드 분류에 주로 사용되는 데이터 세트이다. 각..
Contents 1. 노드 표현 1.1 DeepWalk 1.2 Word2Vec 2. Node2Vec 2.1 Biased randomwalk 2.2 간단한 추천 시스템 구현 Node representation은 그래프에서 각 노드를 벡터 형태로 나타내는 방법입니다. 노드 표현은 그래프 기반 분석 및 다양한 그래프 기계 학습 작업에서 노드의 특성을 나타낼 때 사용합니다. 이번 포스팅에서는 두 가지 주요한 노드 표현 방법인 Word2Vec과 DeepWalk에 대해 알아보겠습니다. 이후 이 두가지 표현 방법에서 발전하여 노드에 대한 임베딩을 수행하는 Node2Vec 기법을 알아보고 간단한 추천 시스템을 구현해보겠습니다. 본 포스팅부터 본격적으로 그래프 뉴럴 네트워크에 대한 deep walk를 시작하겠습니다. 1..