분류 전체보기 310

[Graph] Walk, Trail, Path, Cycle, Circuits, etc..

Contents Walk, Trail 등 다양한 구조를 가진 그래프가 존재한다. 본 글에서는 각 그래프에 해당하는 이름에 대해서 살펴보고 해당 그래프의 특징을 알아보고자 한다. 먼저 Walk를 다루기 이전에 그래프에서의 Length가 어떤 것인지 알아보자. Length Length는 그래프의 길이를 의미한다. 노드의 개수가 아닌 엣지들이 지나가는 길의 수를 의미하는 것이며, 이를 Hop이라고 한다. $V_5$에서 $V_1$까지는 총 2-hop을 나타내고, $V_5$에서 $V_3$까지는 3-hop을 나타낸다. 그렇다면 Hop의 수는 어떻게 구할 수 있을까? Walk 보행(Walk)은 복잡하게 보이지만, 그래프의 노드를 통과하는 하나의 스텝(step)일 뿐이다. Walk는 움직일 때 거치는 엣지의 수를 의미..

[Statistics] Probability 110 - Conditional Probability

Contents 조건부 확률(Conditional Probability) 본 강의에서는 조건부 확률(Conditional Probability)에 대해서 알아보고, 조건부 확률에서 나오는 용어들이 어떤 것들이 있는지, 이 용어들의 정의에 대해서 알아본다. Independent 독립은 조건부 확률을 다루기 위해서는 필수적으로 알아야될 개념이다. 확률에서 나오는 독립은 일반적으로 생각하는 독립과는 다를 수 있다. 일반적으로 다루는 독립은 완전히 독립적으로 떨어져 있는 것을 의미하지만, 여기에서 나오는 독립은 조금 다른 개념이다. 두 사건 A, B가 있다고 하자. 이때 다음과 같을 때 이를 독립이라고 한다. \[ P(A \cap B) = P(A)P(B) \] 우리는 이전 글에서 서로소(disjoint)에 대해..

[Statistics] Probability 110 - Probability and Counting

Contents 본 글은 스탠포드 강의 중 확률론 110 강의에서 언급된 내용 및 용어를 정리하고 있다. 확률과 셈의 원리 (Probability and Counting) 확률론은 유전학, 물리학, 계량 경제학, 인공지능 등 다양한 분야에서 사용되고 있으며, 확률은 불확실성(uncertainty)을 계량화하는 것을 가능하게 해준다. Multiplication Rule 발생 가능한 경우의 수가 $n_1, n_2, ... , n_r$가지인 1, 2, 3, ..., r 번의 시행에서 발생 가능한 모든 경우의 수는 $n_1 \times n_2 \times \\ \cdots \\ \times n_r$이다. Binomial Coefficient $\begin{pmatrix} n \\ k \end{pmatrix} =..

Exploiting BERT for End-to-End Aspect-based Sentiment Analysis (2019)

Contents 본 논문은 2019년 EMNLP에서 발표한 논문이다. E2E-ABSA를 하기 위한 BERT 모델을 제안하였다. ABSA는 Aspect Based Sentiment Analysis 를 의미한다. 기존의 Sentiment Analysis는 문장 전체를 살펴보고 긍정인지 부정인지 분류하는 형태로 진행되었다. 그러나, 이는 문장 내에 다중 속성(Aspect)이 내포되어 있더라도 하나의 속성 만을 도출한다는 단점이 존재한다. 예를 들어, "이 식당은 음식은 맛있지만, 서비스는 별로다." 라는 리뷰는 음식의 맛에 대한 속성은 긍정을 나타내고, 서비스에 대한 속성은 부정을 나타낸다. 그러나, 기존 기법을 사용하는 경우 음식, 서비스에 대한 속성을 모두 긍정 혹은 부정으로 판별한다는 것이다. 본 논문에..

[Pytorch] BCELoss, BCEWithLogitsLoss, CrossEntropyLoss

Contents PyTorch 에서는 이진 분류(Binary Classification)를 할 때 목적 함수 혹은 손실 함수로 사용할 수 있는 BCELoss와 BCEWithLogitLoss 가 존재한다. 두 함수는 모두 모델이 예측한 값과 실제 값 간의 차이를 비교하는 함수지만, 조금 다른 방식으로 계산된다. 두 함수의 차이점에 대해서 알아보자. BCELoss BCELoss는 모델의 구조 상에 마지막 Layer가 Sigmoid 혹은 Softmax로 되어 있는 경우 이를 사용한다. 즉, 모델의 출력이 각 라벨에 대한 확률값으로 구성되었을 때 사용이 가능하다. import torch import torch.nn as nn m = nn.Sigmoid() bce_criterion = nn.BCELoss() ta..

Python/Pytorch 2022.09.03

Node Embedding

Contents 노드를 임베딩(Embedding)하는 이유는 노드의 정보를 vector로 표현할 수 있다면 Classification, Cluster 등 다양한 기법을 사용할 수 있는 것 뿐만 아니라 Node Classification, Community Detection 등에도 활용이 가능하다. 그렇다면 어떻게 노드를 벡터로 변환할 수 있을까? 이에 대한 내용은 Leskobec 교수님의 Node2Vec을 살펴보거나 DeepWalk를 보면 자세히 알 수 있으며 본 강의에서는 Random Walk, Node2Vec 이전에 제안된 노드 임베딩 기법의 개략적인 내용에 대해서만 다룬다. Random Walk, Node2Vec 등의 모델은 여기를 참고하면 된다. 그래프에서의 노드 간의 유사도를 최대한 보존하면서 ..

Community Detection

Contents Community 군집이란 Cluster 혹은 Community를 의미하며, 집합에 속하는 노드 사이에는 만은 엣지가 존재하고, 집합에 속하는 노드와 그렇지 않은 노드 사이에는 적은 수의 엣지가 존재해야 한다. 아래의 그림을 예로 들면, 11개의 군집이 있는 것을 확인할 수 있다. 온라인 소셜 네트워크에서도 군집을 찾아볼 수 있다. 이때는 사회적 무리(Social Circle)를 의미하는 경우가 많다. 예를 들어, 같은 회사 동료라는 사회적 무리와 가족 관계 혹은 고등학교 친구 등과 같은 사회적 무리를 의미한다. 이때의 사회적 무리는 회사 동료, 가족 관계, 고등학교 친구 뿐만 아니라 같은 지도 교수님한테 지도받은 학생들, 대학 동기 등 다양한 사회적 무리를 나타낼 수 있다. 온라인 소셜..

Graph를 이용한 Cascade 모델링

Contents 그래프를 통한 influence는 정보 혹은 행동, 고장, 질병 등 다양한 influence가 존재할 수 있다. 예를 들어, 온라인 소셜 네트워크를 통해 다양한 정보를 전파할 수 있다. 컴퓨터 네트워크에서는 일부 장비의 고장이 전파되어 전체 네트워크를 마비시킬 수도 있다. 최근에 이슈가 된 코로나-19라는 질병이 사회라는 거대한 소셜 네트워크를 통해 전파되는 것도 언급할 수 있다. 이처럼 다양한 influence를 그래프로 표현할 수 있을 것이다. 이와 같은 전파 과정을 체계적으로 이해하고 대처하기 위해서는 그래프의 구조를 제대로 이해하고 있어야 한다. 본 글에서는 Cascade model 중 두 가지 모형을 다룬다. 첫 번째 모형은, 의사결정 기반의 Cascade model이다. 먼저 ..

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..

반응형