본문 바로가기
지능형시스템/머신러닝

[머신 러닝/딥 러닝] Metric Learning의 개념과 Deep Metric Learning

by CHML 2020. 9. 6.
1. 거리 함수 (Distance Function)

통계, 데이터 마이닝, 머신 러닝 등에서는 데이터 간의 유사도를 수치화하기 위해 일반적으로 거리 함수 (metric function)을 이용한다. 가장 대표적인 거리 함수로는 Euclidean 거리가 있으며, 두 데이터 $\textbf{x}_1 \in \mathbb{R}^{d}$과 $\textbf{x}_2 \in \mathbb{R}^{d}$에 대해 식 (1) 같이 정의된다.

$$ d_E(\textbf{x}_1, \textbf{x}_2) = \sqrt{\sum_{i=1}^{d} (\textbf{x}_{1, i} - \textbf{x}_{2, i})^2} \tag{1}$$

또 다른 대표적인 거리 함수로는 각 축 방향으로의 분산까지 고려한 Mahalanobis 거리가 있으며, 두 점의 거리는 식 (2)와 같이 정의된다.

$$ d_M(\textbf{x}_1, \textbf{x}_2) = \sqrt{(\textbf{x}_1 - \textbf{x}_2)^TS^{-1}(\textbf{x}_1 - \textbf{x}_2)} \tag{2}$$

식 $S$는 공분산 행렬 (covariance matrix)이다. 이외에도 cosine similarity나 Wasserstein 거리와 같은 다양한 거리 함수가 있다.

데이터 마이닝 및 머신 러닝의 대표적인 알고리즘인 k-평균 군집화, DBSCAN, 결정 트리 등을 비롯하여 여러 샘플링 알고리즘 등이 이러한 거리 함수를 기반으로 동작하기 때문에 주어진 데이터에 적합한 거리 함수를 결정하는 것은 알고리즘의 정확도 측면에서 매우 중요하다. 실제로 어떠한 거리 함수를 이용하는가에 따라 예측 모델의 성능이 2배 이상 차이나는 경우도 있다. 그러나 미리 정의된 거리 함수 중에서 모든 데이터에 대해 적합한 거리 함수는 현실적으로 존재하지 않는다. 이러한 이유로 데이터에 적합한 거리 함수를 머신 러닝 알고리즘으로 직접 만드는 metric learning이 활발히 연구되고 있다.

 

2. Deep Metric Learning

데이터에 적합한 거리 함수라는 표현을 머신 러닝의 관점에서 다시 말하면, 데이터의 각 목표값에 대해 데이터를 구분하기 쉽게 만들어주는 거리 함수를 의미한다. 그림 1은 이러한 관점에서 metric learning의 목적을 시각적으로 보여준다. 기존의 feature로는 분류가 쉽지 않았던 데이터에 대해 데이터를 class label 별로 잘 구분할 수 있게 만드는 metric을 학습함으로써 분류 모델을 만드는 문제가 매우 단순해졌다.

 

그림 1. Metric learning의 목적.

Metric learning을 통해 학습된 새로운 거리 함수는 일반적으로 embedding 함수 $f: \mathbb{R}^r \rightarrow \mathbb{R}^m$를 통해 변환된 새로운 데이터 표현에 대한 Euclidean 거리로 정의된다. 예를 들어, metric learning을 통해 학습된 거리 함수를 $f(\textbf{x};\theta)$라고 할 때, 두 데이터 $\textbf{x}_1$과 $\textbf{x}_2$에 대한 새로운 거리 함수는

$$ d_{\theta}(\textbf{x}_1, \textbf{x}_2) = ||f(\textbf{x}_1) - f(\textbf{x}_2) ||_2^2 \tag{3}$$

과 같이 정의된다. 따라서, metric learning 문제의 목적은 데이터를 각 목표값에 따라 잘 구분되도록 변환하는 embedding 함수 $f$를 학습하는 것이 된다. 이 때, $f$가 단순한 선형 변환이 아니라, deep neural network일 경우에 앞에 deep을 붙여 deep metric learning이라고 한다. 아래에서는 deep metric learning의 대표적인 두 가지 방법인 contrastive embedding과 triplet embedding, 그리고 deep metric learning을 회귀 문제로 확장한 log-ratio embedding에 대해 소개한다.

 

3. Contrastive Embedding

Contrastive embedding은 이진 분류 (binary classification)에 이용될 수 있는 metric learning이다. 각각의 tuple $(\textbf{x}_i, \textbf{x}_j, y_{ij})$에 대해 contrastive loss는 다음과 같이 정의된다.

$$ L_{C} = \frac{1}{N}\sum_{i=1}^{N/2} \sum_{j=1}^{N/2} y_{ij}d(\textbf{x}_i, \textbf{x}_j) + (1 - y_{ij})\{\text{max}(0, \alpha - d(\textbf{x}_i, \textbf{x}_j))\} \tag{4}$$

위의 contrastive loss에서는 embedding network $f$에 대해 $d(\textbf{x}_i, \textbf{x}_j) = ||f(\textbf{x}_i) - f(\textbf{x}_j)||_2^2$로 정의되며, $y_{ij}$는 $\textbf{x}_i$와 $\textbf{x}_j$가 같은 class이면 1이고 아니면 0이다. Contrastive embedding의 hyperparameter인 $\alpha$는 두 데이터가 서로 다른 class에 속할 경우, $\alpha$ 이상의 거리를 갖도록 제한하는 역할을 한다. Contrastive embedding에서는 $L_{C}$를 최소화하도록 $f$의 model parameter를 학습시킴으로써 데이터를 잘 구분할 수 있는 새로운 embedding을 만들어낸다.

 

4. Triplet Embedding

Triplet embedding은 다중 분류 (multi-class classification)에 이용되는 metric learning이다. Embedding을 위한 triplet loss는 주어진 데이터셋에서 선택된 데이터인 anchor, 그리고 anchor와 동일한 class label을 갖는 positive sample, 다른 class label을 갖는 negative sample로 식 (5)와 같이 정의된다.

$$ L_{T} = \frac{3}{2N} \sum_{i=1}^{M/3} \text{max}(0, d(\textbf{x}_i, \textbf{x}_{i,p}) - d(\textbf{x}_i, \textbf{x}_{i,n}) + \alpha) \tag{5}$$

이 식에서 $\textbf{x}_{i,p}$와 $\textbf{x}_{i,n}$은 각각 현재 선택된 anchoar $\textbf{x}_i$의 positive sample과 negative sample이다. 식 (5)의 triplet loss를 $f$의 model parameter $\theta$에 대해 최소화함으로써 embedding space에서 anchor와 positive sample의 거리는 가까워지고, negative sample과의 거리는 멀어진다. 그림 2는 이러한 triplet embedding의 개념을 보여준다. 일반적으로 triplet embedding에서 positive sample과 negative sample은 랜덤 샘플링을 기반으로 추출되며, 이외에도 embedding의 성능을 향상시키기 위한 여러 샘플링 방법이 제안되었다.

 

그림 2. Triplet embedding의 개념.

 

5. Log-Ratio Embedding

기존의 contrative embedding과 triplet embedding은 모두 분류 문제를 위해 고안되었다. Log-ratio embedding은 분류 문제를 일반화하여 회귀 (regression) 문제에도 metric learning을 적용하기 위해 제안되었다. 즉, 기존의 이산 목표 변수가 아닌 연속 목표 변수에 대해 metric learning을 확장한 것이다. 이러한 log-ratio embedding을 위한 log-ratio loss는 식 (6)과 같이 정의된다.

$$ L_{LR} = \frac{1}{N} \sum_{i=1}^N \left\{\text{log}\frac{d(\textbf{x}_i, \textbf{x}_{i,p})}{d(\textbf{x}_i, \textbf{x}_{i,n})} - \text{log}\frac{d(y_i, y_{i,p})}{d(y_i, y_{i,n})} \right\}^2 \tag{6}$$

Log-ratio embedding에서는 식 (6)의 log-ratio loss를 최소화함으로써 embedding 공간 상에서의 데이터 간의 거리 비율과 목표 변수 간의 거리 비율이 일치하도록 $f$의 model parameter를 최적화한다.