분류 전체보기 310

Spectral GCN에서 Fourier Transform을 하는 이유

Contents Fourier Transform을 사용하는 이유를 다루기에 앞서 기본적인 선행 지식이 요구되기에 Laplacian이 무엇인지 부터 짚고 넘어가자. Laplacian operator는 기울기를 확인하기 위한 연산자 정도로만 이해하면 된다. 그래프는 euclidean space에서 정의할 수 없기 때문에 mainfold 구조에서의 Graph signal을 통해 신호를 확인하려고 하는 것이다. 이때 Graph signal은 node가 가지고 있는 feature를 의미한다. 예를 들어, social network의 경우에는 해시태그의 수가 될 수 있고, 연령 등의 정보가 될 수 있다. Euclidean space에 있는 다양체를 리만 다양체에서 정의된 함수로 일반화 하는 과정을 Laplace B..

그래프 중심성(Katz, Engenvector, PageRank, etc..)

Contents Centrality concepts Centrality concepts는 그래프에서 어떤 노드가 얼마나 중요한지 측정하는 것이다. 중심성의 개념은 여러 가지 방법으로 측정할 수 있으며, 중심성을 측정하는 척도의 종류는 다음과 같다. 연결 중심성(Degree Centrality) 고유벡터 중심성(Eigenvector Centrality) 카츠 중심성(Katz Centrality) 페이지랭크(PageRank) 매개 중심성(Betweeness Centrality) 근접 중심성(Closeness Centrality) 연결 중심성, 고유벡터 중심성, 카츠 중심성, 페이지랭크 중심성과 같은 경우는 연결성을 바탕으로 중심성을 측정하는 방법이고, 매개 중심성, 근접 중심성과 같은 경우는 위상학적 관점으..

[Python] python에서 pickle file 다루기

python에서 데이터를 다룰 때 csv, xlsx과 같은 데이터는 많이 다루어 본 적 있을 것이다. 최근에는 yaml이나 pickle file을 많이 다루게 되는데, 왜 csv와 같은 확장자를 사용하지 않고 pickle을 사용하는 것일까? file을 csv나 xlsx 등과 같은 파일로 저장하는 경우 데이터의 고유한 정보를 담지 못한다. 예를 들어, python에서 list를 csv에 저장하게 되는 경우 다시 호출할 때 list 구조로 받아오는 것이 아니라 str으로 변환된 상태로 불러오게 된다. 그렇다면 ast와 같은 함수를 사용해서 str를 다시 list로 변환하는 작업을 수행해야 한다. pickle은 데이터의 자료 구조를 그대로 저장할 수 있기에 list를 pickle로 저장하면 list구조로 바로..

Python/Algorithm 2022.06.20

[Pytorch] LSTM(Long Short-Term Memory) 코드 구현

Contents LSTM (Long Short-Term Memory)은 RNN (Recurrent Neural Network)가 가지고 있는 장기 의존성 문제(long term dependency)를 해결하기 위해 제안된 모델이다. hidden state $h_t$와 cell state $c_t$로 구성되어 있으며, $h_{t-1}$은 t-1번째 Layer의 hidden state를 의미한다. $h_0$은 초기 hidden state를 의미하며, 0으로 설정한 후 학습을 진행한다. \[ \begin{equation} \begin{split} i_t & = \sigma(W_{ii} x_t + b_{ii} + W_{hi} h_{t-1} + b_{hi} ) \\ f_t & = \sigma ( W_{if} x_..

Python/Pytorch 2022.06.17

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 연구들..

Neural Graph Collaborative Filtering (SIGIR'19)

Contents Neural Graph Collaborative Filtering (NGCF)의 제목을 보면 Neural Graph, Collaborative Filtering을 보고, Collaborative Filtering에 Graph를 접목시킨 Neural Network 임을 알 수 있을 것이다. 본 논문에서는 기존의 Collaborative Filtering의 문제점을 지적하고 이를 개선하기 위한 모델인 NGCF를 제안하였다. 본 논문을 읽기 위해서는 Collaborative Filtering에서 Matrix Factorization과 Graph Neural Network가 어떤 내용인지에 대한 선행 지식이 요구되며 이번 글에서는 깊게 다루지 않는다. Introduction Collaborati..

numpy array 구조를 image로 저장하기

이미지를 호출하기 위해서는 다음과 같은 패키지가 필요하다. from PIL import Image import numpy as np 이미지를 호출하고, 이를 np.array로 변환하면 28*28 이미지는 28*28*1 차원을 가지는 array가 될 것이다. 마지막 1은 channel을 의미하며, channel이 3인 경우 RGB 컬러 이미지를 의미한다. IMG_DIR = f'../datasets/images' img_path = os.path.join(IMG_DIR, file_name + '.jpg') img = np.array(Image.open(img_path)) 위 코드는 이미지가 저장된 경로에 접근해 jpg 파일을 호출하는 코드다. 호출된 코드는 아래와 같은 구조를 가지고 있다. array 구조를..

Python 2022.06.01

[Time-Series] Time-Series with Machine Learning

Contents Time-Series with Machine Learning 우리가 일반적으로 알고 있는 기계 학습(Machine Learning)을 시계열 구조를 가진 데이터에 적용할 때에는 문제가 발생한다. 기계 학습에서 결정 경계(Decision Boundary)를 설정할 때 고정된 시점에 대해서만 다루고 있으나, 시계열 데이터는 시간의 흐름에 따라 관측치가 변화하기 때문에 이를 고려하지 못하기 때문이다. 예를 들어, $x$를 입력하면 $y$를 출력하는 함수 $f(x) = y$가 있다고 가정하자. 시계열 데이터의 경우는 $t = 0$일 때 $f(x) = y$가 나올 순 있으나, $t=1$인 경우에는 $f(x) = z$가 될 수 있다. 이와 같은 경우는 시계열 데이터 뿐만 아니라 자연어처리(Natur..

Time-Series 2022.06.01
반응형