분류 전체보기 310

[CS224W] PageRank

Contents Lecture 4 에서는 그래프 분석과 학습하는 방식을 행렬 관점으로 접근한다. 이번 글에서는 그 중 PageRank에 대해서 먼저 알아볼 것이며, PageRank는 이전 강의에서 다룬 Random Walk 방식을 사용하여 node의 중요도를 파악하는 방식이다. PageRank PageRank는 Stanford 대학의 박사 두 분이 만든 모델이다. PageRank에서의 Node는 web page를 의미하고, Edge는 hyperlinks를 의미한다. web에 방문하여 hyperlink를 클릭해 다른 web page로 이동하는 경우를 그래프로 표현한 것이며, 방향성을 가지는 directed graph를 뜻한다. 논문에서 citation을 달아 놓은 경우 논문에서 link를 클릭해 다른 논문..

[CS224W] Embedding Entire Graphs

Contents Embedding Entrie Graphs Approach 1 본 강의에서는 node embedding이 아닌 entire graph를 embedding 하는 방법에 대해서 다룬다. graph embedding은 subgraph나 전체 entire graph를 embedding하는 것이 목표라고 할 수 있다. 이때 $z_G$는 graph embedding을 의미하며, toxic molecules와 non-toxic molecule를 구분하거나, 비정상적인 graph를 식별하는 것에 활용할 수 있다. 가장 간단한 아이디어는 graph에 속한 node embedding을 합하거나 평균을 취하는 것으로도 가능하다. \[ z_G = \sum_{v \in G} z_v \] Approach 2 다음..

Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering (NeurIPS'16)

Contents Convolutional Neural Network on Graphs with Fast Localized Spectral Filtering (2016)은 NeuIPS에 나온 논문으로 처음으로 ChebNet을 제안한 논문이다. ChebNet은 Chebyshev polynomial을 사용한 네트워크이며, 논문을 읽으면서 자세하게 다루어보자. 본 글은 요약을 하는 것이 목적이기 때문에 관련 연구 항목은 리뷰를 하지 않을 것이다(관련 연구는 개인적으로). Abstract CNN의 구조는 일반적으로 음성, 비디오, 이미지 등의 분야에 많이 사용되었다.그러나, 소셜 네트워크, 뇌 구조, 그래프 표현 등의 고차원적인 구조를 다루는 것에 있어서는 어려움이 존재하기 때문에 본 연구는 CNN(Convolu..

[Pandas] Pandas에서 tqdm 사용하기

tqdm을 사용할 때는 tqdm.tqdm이나 tqdm.trange를 사용하여 for 문에 적용한다. 그러나 pandas apply를 사용할 때 시간이 오래 걸리지만 tqdm을 사용하기 어렵다. 이 경우 어떻게 할 수 있을까? 이를 지원해주는 것이 바로 tqdm.pandas()이다. import pandas as pd import tqdm.tqdm as tqdm from tqdm import trange tqdm.pandas() with trange(len(x)) as tr: for i in tr: print(x[i]) for i in tqdm(range(10), desc = 'training...'): print(x[i]) dataframe.progress_apply(lambda x: x.split())..

Python 2022.07.06

[Pytorch] torch.Tensor vs torch.tensor

non-data torch.Tensor와 torch.tensor는 같으면서도 다른 역할을 한다. 기본적으로 torch.Tensor는 데이터를 입력하지 않더라도 사용이 가능하지만 torch.tensor의 경우에는 데이터를 무조건 넣어주어야 한다. torch.Tensor() # tensor([]) torch.tensor() # Traceback (most recent call last): # File "", line 1, in # TypeError: tensor() missing 1 required positional arguments: "data" torch.tensor(()) # tensor([]) dimension 추가적으로 가장 중요하다고 생각하는 차이점이 있는데, 아래의 예시를 통해 살펴보자. to..

Python/Pytorch 2022.07.05

[CS224W] Node Embeddings

Contents 본 강의는 Lecture 3.1로 Node Embedding에 대해서 다룬다. 일단 먼저 Embedding이라는 단어가 무엇인지 알고 있어야 한다. 자연어처리(NLP)에서는 단어를 One-hot Encoding으로 혹은 Look-up Table로 만든 후 Embedding을 진행한다. Embedding은 아무런 의미가 없는 데이터를 임의의 차원으로 보냄으로써 그 숫자 자체에 의미를 지닐 수 있도록 하는 개념으로 이해할 수 있다. Node Embedding도 비슷한 맥락으로 Embedding 값이 가지는 수치를 통해 Node의 특징(feature)을 파악할 수 있도록 하는 것이다. 본 강의에서는 Node Embedding을 하는 방법을 총 4가지 단계로 나누어서 언급한다. 1. Encode..

[CS224W] Traditional feature-based methods: Graph-level features

Contents 이전 챕터에서 Node-level, Link-level prediction에 대해서 다루어보았다. 이번 챕터에서는 마지막 남음 Graph-level prediction에 대해서 다루어본다. Graph-Level Features Kernel Methods Graph-level에서는 Graph kernel이라는 것을 사용하는데, 이는 전체 그래프 예측에 사용되는 kernel을 의미하며, 이를 통해 전체 그래프의 구조에 대한 특징을 추출하는 것을 목표로 한다. 기존의 노드 혹은 링크에서는 각 노드들의 feature vector를 생성하였으나, Graph-level에서는 feature vector 대신에 kernel을 디자인하는 것이 가장 큰 차이점이다. kernel $K(G, G') \in \..

[CS224W] Traditional feature-based methods: Link-level features

Contents 이전 단계에서는 Node-Level prediction에 대한 내용을 다루었다. 이번 Lecture에서는 Link-Level prediction에 대해서 다룬다. Link는 Edge라고도 부르며 혼용해서 부르니 참고하길 바란다. Link Prediction Task and Features Linke-Level Prediction이란, 이미 존재하는 링크(Link)를 기반으로 노드 $A$와 노드 $B$ 간의 새로운 링크를 예측하는 것이다. 아래의 그림을 살펴보면 노드 $A$와 노드 $B$는 연결되어 있지 않지만, 연결될 가능성을 예측하는 등의 문제를 의미한다. 실제 테스트하는 단계에서는 모든 노드 쌍에 대해 순위가 매겨지고 top-K를 예측하는 형태로 진행된다. 이때 가장 핵심은 노드 쌍에..

[Error] CUDA-LAUNCH_BLOCKING=1 error

pytorch를 다루다 보면 아래와 같은 에러를 마주칠 때가 있다. 이와 같은 CUDA 에러가 나는 원인은 다양하다. 가장 많이 발생하는 오류 중 하나는 loss 값을 계산할 때 값이 0~255 사이 값이 아니라 음수가 나오거나 하는 형태일 때 발생할 수 있다. 0~1사이로 정규화 하게되면 에러가 해결된다. 이 뿐만 아니라 모델의 메모리가 부족한 경우에도 발생할 수 있으니 이때는 Batch size를 조절하거나 자연어처리인 경우 max length를 조절하는 등의 조치를 취해야 한다.

Python/Pytorch 2022.06.25

[Error] module 'scipy.sparse' has no attribute 'coo_array'

networkx를 사용해서 그래프를 그리려고 하면 module 'scipy.sparse' has no attribute 'coo_array' 이 에러를 마주치는 경우가 발생할 수 있다. 해당 에러가 출력되는 원인은 다양한데 첫 번째로는 scipy의 버전이 다르기 때문이다. 1. scipy == 1.8.0 `coo_array`는 scipy==1.8.0 version에만 존재하기 때문에 먼저 version을 맞춰주자. 2. networkx == 2.7.1 networkx의 version도 맞춰주자 3. pyg-nightly PyG를 upgrade해서 변환해보자. pip install pyg-nightly

Python/Pytorch 2022.06.23
반응형