분류 전체보기 310

그래프의 종류

Contents Heterogeneous Graph 이전까지의 그래프는 Homogeneous Graph로 노드가 단 하나의 속성 만을 가지고 있었다. 예를 들면, 사람과 사람 혹은 도시와 도시 간의 관계 만을 고려한 것이다. 반면에 Heterogeneous Graph는 노드가 여러 속성을 가지고 있는 것이다. 예를 들어 어떤 노드는 영화 정보를 가지고 있고, 어떤 노드는 고객 정보를 가지고 있는 형태를 의미한다. 이처럼 여러 속성을 가지고 있다면 추천을 적용할 때 보다 정확한 추천을 제공할 수 있을 것이다. 추천 시스템에서는 고객-제품 행렬을 기반으로 시스템을 구축하고 있다. 이 때 고객과 제품 뿐만 아니라 여러가지 정보들을 추가해서 입력할 수 있을 것이다. Bipartite Graph 이분 그래프(Bi..

Sequence-to-Sequence (Seq2Seq)

Sequence-to-Sequence (Seq2Seq)는 문장을 입력으로 받고 문장을 출력하는 구조를 가지고 있다. 이는 한국어를 영어로 번역하는 것과 같은 기계번역 문제에 주로 사용된다. 또한, 문서를 입력으로 받고 요약하는 형태로도 사용된다. [논문] Seq2Seq에 가장 많이 쓰이는 모델 구조는 RNN이다. 문장의 임베딩 값을 입력으로 사용하여 Encoder를 구성한다. Encoder는 하나의 Context라는 정보를 출력하고 이는 Decoder의 초기값으로 사용된다. Context Vector는 입력으로 들어간 문장의 요약 정보라 할 수 있다. 입력의 시작은 $x_0$이며 일반적으로 토큰을 사용한다. 토큰은 문장을 시작을 알려주는 토큰이며, 문장의 끝을 알려주는 토큰으로는 를 사용한다. 토큰을 맨..

array와 asarray의 차이

numpy를 사용하는 코드를 참고하다 보면 array를 사용하는 경우와 asarray를 사용하는 경우를 볼 수 있다. 그렇다면 어떤 경우에 array를 쓰고, asarray를 쓰는 것일까? 구조적으로 보면 array와 asarray는 동일하다. 다만, array의 경우 copy=True가 기본값이지만, asarray의 경우 copy=False가 기본값이다. array를 다른 변수에 할당하고 원본을 변경할 경우 array의 copy본은 변경되지 않는다. 그러나 asarray의 경우에는 원본이 변경될 경우 asarray의 복사본까지 변경된다. a = np.ones([3, 4]) a_array = np.array(a) a_asarray = np.asarray(a) a[1] = 0 print(f'a_array ..

Python/Algorithm 2022.05.09

[Graph] Representing Networks -Degree

Contents Graph Neural Network (GNN)을 다루기 위해서는 일단 그래프가 어떤건지부터 이해하고 넘어가야 한다. 아래의 엄청 간단한 그래프 구조 예시를 통해 쉽게 설명이 가능하다. 우리는 이러한 그래프를 아래와 같은 간단한 수식으로 표현할 수 있다. \[ \mathcal{g} = \{\mathcal{V}, \mathcal{E} \}, \mathcal{V} = \{v_1, ..., v_N\}, \ \ N = |\mathcal{V}|, \mathcal{E} = \{e_1, ... , e_M\},\ \ M=|\mathcal{E}| \] $\mathcal{V}$는 노드(node)의 집합을 의미하고, $\mathcal{E}$는 엣지(edge)의 집합을 의미한다. 소셜 네트워크나 화학 등 다양..

퍼셉트론(Perceptron)

1. 퍼셉트론(Perceptron) 초기의 인경신공망 모형이고 퍼셉트론이 동작하는 방식은 다음과 같다. 각 노드의 가중치와 입력치를 곱한 것을 모두 합한 값이 활성함수에 의해 판단되는데, 그 값이 임계치(보통 0)보다 크면 뉴런이 활성화되고 결과값으로 1을 출력한다. 뉴런이 활성화되지 않으면 결과값으로 -1을 출력한다. $ \Sigma_{i}^{n}{w_{i}x_{i}} \geq \theta \rightarrow y = 1 $ $ \Sigma_{i}^{n}{w_{i}x_{i}} < \theta \rightarrow y = 0 $ y 값이 threshold 인 $ \theta $ 을 기준으로 0, 1로 분류한다. $ b $(bias) 로 표기할 때도 있다. $ \Sigma_{i}^{n}{w_{i}x_{i}..

Deep Learning 2022.05.06

[Linear Algebra] 선형대수학에서의 랭크(Rank)

선형대수학을 다루다보면 랭크(Rank)라는 말을 많이 들어봤을 것이다. 랭크는 열공간(Column Space)의 차원을 의미한다. 일단 이를 이해하기 위해서는 일차독립에 대해서 먼저 알고 있어야 한다. 우리의 최종 목표는 행렬 $\text{A}$에서 행렬 $\text{C}$를 찾는 것이다. 이때의 $\text{C}$의 어떠한 열도 다른 열의 일차결합으로 표현되지 않아야 한다. $\text{A}$를 $\text{C}$로 변환하면서 우리는 랭크를 찾을 수 있다. 이 과정은 아래와 같이 수행된다. $\text{A}$의 1열의 성분에 0이 아닌 것이 존재하면, 이를 행렬 $\text{C}$에 포함한다. $\text{A}$의 2열이 1열에 상수를 곱한 것과 같지 않으면, 이를 $\text{C}$에 포함한다. $\..

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (NeurIPS'15)

Fatser R-CNN은 기존 R-CNN이 속도가 느린 것을 개선한 모델로 Fast R-CNN 다음 등장한 모델이다. 기존의 2 stage detection에서는 SPP-net이나 Fast R-CNN이 많이 활용되고 있었는데, Faster R-CNN은 속도를 개선하여 Real-Time으로 이미지 처리를 가능하게 했다는 것이다. 제일 처음 나온 R-CNN의 경우 입력받은 이미지에 대해서 2000개의 Region Proposal을 생성하고, 생성된 Proposal을 NMS(Non-Maximum Suppression)을 수행하여 가장 IoU가 높은 하나의 Bbox를 추출하는 형태로 진행하였기 때문에 Region Proposal 단계에서 엄청난 시간이 소요되고 있었다. 이를 개선하기 위해 Fast R-CNN이 ..

You Only Look Once: Unified, Real-Time Object Detection (CVPR'16)

이 논문은 YOLO의 처음 제안한 v1 버전의 논문이다. 기존의 Object Detection 관련 논문 (R-CNN, Fast R-CNN, Faster R-CNN) 등의 논문들은 Region Proposal을 생성하고 Classification하는 두 개로 된 2 stage detection 방식을 사용했으나, YOLO의 경우 1 stage detection 방식을 사용해 이슈가 되었다. YOLO는 이름에서도 알 수 있듯 아래와 같은 장점이 존재한다. 1. You Only Look Once : 이미지를 한 번만 보고 처리를 한다. 2. Unified : Stage를 결합하여 One Stage detection을 수행한다. 3. Real-Time : 속도가 매우 빠르다. Object Detection I..

빅오, 빅오메가, 빅세타란?

Contents 백준이나 코드업 등 코딩 테스트에서 진행하는 알고리즘들에서 빅오(Big-O)라는 단어는 많이들 들어봤을 것이다. 그렇다면 빅오메가, 빅세타는 무엇일까? 먼저 빅오부터 알아보자. 빅-오(Big-O) 빅오는 코딩 테스트에서 시간복잡도를 다룰 때 주로 사용된다. 대개 최악의 경우를 의미하며, $\text{O(n)}, \text{O(n log(n)} $ 등 다양하게 존재한다. 예를 들어, 입력값 $n$에 대해서 $4n^2 + 3n + 4$ 번 만큼 계산하는 함수가 있다면, 최고차항만 고려하고 계수는 무시한다. 즉, 이때의 시간 복잡도는 $\text{O}(n^2)$이 되는 것이다. $\text{O}(1)$대부분 $\text{O}(\text{n})$을 기준으로 빠름을 나눈다. \[ \text{O}(..

Python/Algorithm 2022.04.28

Object Function, Cost Function, Loss Fuction

우리가 딥러닝(Deep Learning)을 다루다 보면 목적 함수(Object Function), 비용 함수(Cost Function), 손실 함수(Loss Function)이라는 단어를 많이 접하게 될 것이다. 일반적으로 언급한 세 가지의 함수가 동일하다고 알고 있는데, 일부는 맞고 일부는 틀렸다고 할 수 있다. 목적 함수(Object Function) 목적 함수는 말그대로 어떠한 목적을 가지고 모델을 학습해 최적화하고자 하는 함수이다. 일반적으로 딥러닝에서는 경사 하강법(Gradient Descent) 방식을 사용하여 최적화하기 때문에 비용 함수가 바로 목적 함수가 된다. 하지만 MLE(Maximum Likelihood Estimate)와 같이 확률을 최대로 하는 방법을 사용할 경우에 감소하는 방식이..

Deep Learning 2022.04.28
반응형