GCN 9

[Pytorch] Neural Graph Collaborative Filtering (NGCF) 구현하기

Contents Neural Graph Collaborative Filtering (NGCF)는 기존의 협업 필터링(Collaborative Filtering)이 고차-연결성(High-Order Connectivity)을 고려하지 못한다는 단점을 극복하고자 그래프를 협업 필터링에 도입 시킨 기법이다. 전통적인 협업 필터링은 user-item interaction만을 고려하게 된다. 대표적인 Neural Collaborative Filtering (NCF)를 생각해보면 사용자 ID와 제품 ID를 내적하거나 연결(Concatenate)하여 사용자의 제품에 대한 구매 확률을 도출한다. 그렇기 때문에 제품과 다른 사용자 간의 관계 즉, 고차-연결성을 고려하지 못한다는 것이다. 예를 들어 $u_1 \leftarr..

Python/Pytorch 2023.01.01

Model Degradation Hinders Deep Graph Neural Networks (KDD'22)

Contents 본 논문은 Graph Neural Network (GNN)의 over smoothing 문제를 해결하고자 Propagation Operation과 Transformation Operation의 순서를 바꾸어 성능을 개선시킨 연구다. Adaptive Inital Residual (AIR)을 제안하고 있으며, AIR은 추후 내용에서 자세히 다루어보자. 1. Introduction GNN은 node-level, edge-level, graph-level task를 하기 위해 많이 사용되고 있으며, 소셜 네트워크, 화학, 생물학, 추천 시스템 등 다양한 분야에서 사용된다. GNN 모델 중 가장 대표적인 모델은 GCN(Graph Convolution Network)라고 할 수 있으며, GCN은 P..

Link Prediction with DGL

본 글에서는 DGL 을 통한 Link Prediction을 GraphSAGE를 통해 진행한다. Link Prediction은 두 노드가 연결되어 있는지, 아닌지를 확인하는 문제로 이해할 수 있다. 패키지 불러오기 본 글에서는 DGL 과 PyTorch 그리고 인접행렬을 만들거나 연산을 진행하기 위한 numpy와 scipy를 사용한다. import dgl import dgl.function as fn import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F import itertools import numpy as np import scipy.sparse as sp from sklearn.metr..

DGL을 통한 Graph 생성하기.

Contents 본 글에서는 DGL 패키지를 이용해서 그래프를 생성하는 방법에 대해서 다룬다. DGL 패키지는 그래프를 다루기 위한 패키지로 그래프를 생성하거나 기존 연구에서 제안된 함수(GCN, GraphSAGE 등)를 호출을 통해 편리하게 사용하도록 도와주는 패키지다. 패키지 불러오기 import dgl import torch 기본적으로 dgl은 PyTorch와 함께 사용한다. tensorflow도 사용하는 것이 가능하지만 본 글에서는 PyTorch를 이용한 dgl을 다루어 볼 것이다. 필요한 함수는 dgl이며 pip install을 통해 설치하면 된다. 그래프 생성하기 dgl에서 그래프를 생성하는 것은 매우 간단하다. dgl 내에 내장된 graph 함수를 사용하면 바로 만들 수 있다. g = dgl..

Graph Convolution Network 구현 wtih DGL

Contents Graph Convolution Neural Network(GCN)는 2017년에 처음으로 제안된 모델이다[논문]. 우수한 성능을 보이고 있으며, GNN에 CNN을 접목하기 시작한 계기가 된다. 본 글에서는 이론적인 내용은 자세히 다루지 않고, DGL을 사용해서 GCN을 만들어볼 것이다. GCN에 대한 상세한 내용은 여기를 참고하면 된다. 1. Load Package GCN을 사용하기 위해서는 Pytorch, torch_geometric, Tensorflow, PyG 등 다양한 프레임워크들이 존재하지만 본 글에서는 가장 간단한 DGL을 이용해서 GCN을 구현한다. 구현하기에 앞서 먼저 필요한 패키지들을 호출하자. import numpy as np import dgl from dgl.nn ..

Spatial Graph Convolution Network based on MPNN

Contents BackGround Convolution Graph Neural Network (ConvGNN)은 GCN이라고도 부르며, 이를 알기 위해서는 GNN이 무엇인지, 더 나아가 왜 기존 머신러닝을 사용하지 않고 Graph Mining을 사용하게 되었는지 짚고 넘어가야 한다. 기존의 머신러닝은 Euclidean data에서는 매우 우수한 성능을 발휘하고 있었으나, non-Euclidean data에는 적용하기 어렵다는 문제점이 존재했다. non-Euclidean data의 대표적인 예로는 NLP 구조와 Tree, Graph 구조가 있다. 위의 그림 처럼 Tree, Graph와 같은 구조는 각 feature 간의 relation이 존재하기에 기존의 머신러닝 방법으로는 접근하는 것이 어렵다. 이와 ..

Semi-Supervised Classification With Graph Convolutional Networks (ICLR'17)

Contents Contribution 본 논문은 Graph Convolution Network (GCN)을 처음 제안한 논문이며, GCN은 Adjacency Matrix, Degree Matrix 혹은 Feature Matrix를 이용하여 그래프를 Representation하는 신경망이다. GCN에는 Spatial GCN과 Spectral GCN이 존재하는데, 본 논문에서는 Spectral GCN을 통해 두 가지 Contribution을 했다고 언급한다. 1. 간단하고 잘 작동(behave)하는 Layer-wise Propagation rule을 설명하고, 이 방법이 Spectal graph Convolution의 빠르고 효율적인 1차 근사임을 증명한다. 2. 기존의 semi-supervised 연구들..

Lightgcn: Simplifying and powering graph convolution network for recommendation (SIGIR'20)

Contents SIGIR'20 에 발표된 LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation을 리뷰하고자 한다. LightGCN은 간단하면서도 강력한 Graph Convolution Network 이다. 기존의 GCN 즉, Spectral GCN은 Node Classification을 하기 위해 만들어졌기 때문에 사용자와 제품 간의 연결성만 다루는 CF 구조에서는 적절하지 않기 때문에, 추천 시스템에 적용하기 위해 LightGCN을 제안하였다. Abstract 본 논문이 발표되기 전에는 GCN (Graph Convolution Network) 를 기반으로 추천 시스템을 구축하였다. GCN은 graph mining..

Spectral Graph Convolution Network

Contents Graph Convolution Network는 Spectral Convolution Network와 Spatial Convolution Network로 분류할 수 있다. Spatial Convolution은 CNN의 연산과 매우 흡사하며, 이웃 노드의 feature information을 바탕으로 message passing을 통해 특정 노드의 hidden state를 계산한다. 반면에 Spectral Convolution Network는 한 노드 내에 혼재된 signal들을 여러 signal의 요소로 나누어서 노드의 특징을 더 잘 추출할 수 있도록 하는 방법이다. Spectral-based graph filter Spectral-based graph filter는 filtering을 ..

반응형