27.15 벡터 간 거리와 각도: 코사인 유사도(Cosine Similarity)의 정의

27.15 벡터 간 거리와 각도: 코사인 유사도(Cosine Similarity)의 정의

1. 벡터 간 거리의 정의

노름 공간 (\mathbb{R}^n, \|\cdot\|)에서 두 벡터 \mathbf{u}, \mathbf{v} \in \mathbb{R}^n 사이의 거리(distance)는 노름으로부터 자연스럽게 유도된다.

d(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|

이 거리 함수는 거리 공간(metric space)의 공리를 만족한다.

  1. 비음성: d(\mathbf{u}, \mathbf{v}) \geq 0이고, d(\mathbf{u}, \mathbf{v}) = 0 \iff \mathbf{u} = \mathbf{v}
  2. 대칭성: d(\mathbf{u}, \mathbf{v}) = d(\mathbf{v}, \mathbf{u})
  3. 삼각 부등식: d(\mathbf{u}, \mathbf{w}) \leq d(\mathbf{u}, \mathbf{v}) + d(\mathbf{v}, \mathbf{w})

L^p 노름에 의한 거리를 L^p 거리라 하며, 가장 대표적인 것은 유클리드 거리(L^2 거리)이다.

d_2(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|_2 = \sqrt{\sum_{i=1}^{n}(u_i - v_i)^2}

유클리드 거리의 제곱 d_2^2(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|_2^2은 내적으로 다음과 같이 전개된다.

\|\mathbf{u} - \mathbf{v}\|_2^2 = \|\mathbf{u}\|_2^2 - 2\mathbf{u}^\top\mathbf{v} + \|\mathbf{v}\|_2^2

이 전개식은 거리와 내적 사이의 관계를 명확히 보여주며, 커널 기법(kernel method)에서 특성 공간의 거리를 내적으로 계산하는 핵심 원리이다.

2. 벡터 간 각도의 정의

내적 공간에서 영벡터가 아닌 두 벡터 \mathbf{u}, \mathbf{v}의 사잇각(angle) \theta \in [0, \pi]은 다음과 같이 정의된다.

\cos\theta = \frac{\langle\mathbf{u}, \mathbf{v}\rangle}{\|\mathbf{u}\| \cdot \|\mathbf{v}\|}

코시-슈바르츠 부등식에 의하여 우변이 [-1, 1] 범위에 있으므로 \theta = \arccos\left(\frac{\langle\mathbf{u},\mathbf{v}\rangle}{\|\mathbf{u}\|\|\mathbf{v}\|}\right)가 유일하게 결정된다.

  • \theta = 0: 두 벡터가 같은 방향 (\mathbf{u} = c\mathbf{v}, c > 0)
  • 0 < \theta < \pi/2: 예각, 양의 내적
  • \theta = \pi/2: 직교 (\langle\mathbf{u},\mathbf{v}\rangle = 0)
  • \pi/2 < \theta < \pi: 둔각, 음의 내적
  • \theta = \pi: 반대 방향 (\mathbf{u} = c\mathbf{v}, c < 0)

3. 코사인 유사도의 정의

코사인 유사도(cosine similarity)는 두 벡터 사이의 각도의 코사인 값으로 정의되는 유사도 측도이다.

\text{sim}_{\cos}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u}^\top\mathbf{v}}{\|\mathbf{u}\|_2 \cdot \|\mathbf{v}\|_2} = \frac{\sum_{i=1}^{n} u_i v_i}{\sqrt{\sum_{i=1}^{n} u_i^2} \cdot \sqrt{\sum_{i=1}^{n} v_i^2}}

코사인 유사도의 값은 [-1, 1] 범위를 가지며, 다음과 같이 해석된다.

값 범위의미
\text{sim} = 1완전히 같은 방향
\text{sim} > 0유사한 방향
\text{sim} = 0직교 (무관)
\text{sim} < 0반대 방향
\text{sim} = -1완전히 반대 방향

코사인 유사도의 핵심적 특성은 벡터의 크기(노름)에 무관하고 방향만을 비교한다는 점이다. 즉 \text{sim}_{\cos}(\alpha\mathbf{u}, \beta\mathbf{v}) = \text{sim}_{\cos}(\mathbf{u}, \mathbf{v}) (\alpha, \beta > 0)이다. 이 성질은 문서의 길이에 무관하게 주제의 유사도를 측정하거나, 벡터의 스케일이 서로 다른 경우에 특히 유용하다.

4. 코사인 거리와 관련 측도

코사인 유사도로부터 **코사인 거리(cosine distance)**를 다음과 같이 정의한다.

d_{\cos}(\mathbf{u}, \mathbf{v}) = 1 - \text{sim}_{\cos}(\mathbf{u}, \mathbf{v})

코사인 거리는 [0, 2] 범위를 가지며, 0이면 같은 방향, 1이면 직교, 2이면 반대 방향이다. 그러나 코사인 거리는 엄밀한 의미에서 거리 함수(metric)가 아니다. 삼각 부등식을 만족하지 않을 수 있기 때문이다.

삼각 부등식을 만족하는 각도 기반 거리로는 **각도 거리(angular distance)**가 있다.

d_{\text{ang}}(\mathbf{u}, \mathbf{v}) = \frac{1}{\pi}\arccos\left(\text{sim}_{\cos}(\mathbf{u}, \mathbf{v})\right)

이 거리는 [0, 1] 범위를 가지며 실제 거리 함수의 공리를 만족한다.

5. 유클리드 거리와 코사인 유사도의 관계

벡터가 정규화되어 단위 구 위에 놓여 있으면, 즉 \|\mathbf{u}\|_2 = \|\mathbf{v}\|_2 = 1이면 유클리드 거리와 코사인 유사도 사이에 다음 관계가 성립한다.

\|\mathbf{u} - \mathbf{v}\|_2^2 = 2(1 - \text{sim}_{\cos}(\mathbf{u}, \mathbf{v})) = 2 d_{\cos}(\mathbf{u}, \mathbf{v})

따라서 단위 구 위에서는 유클리드 거리의 최소화와 코사인 유사도의 최대화가 동치이다. 이 관계는 정규화된 임베딩을 사용하는 대조 학습과 검색 시스템에서 핵심적인 의미를 갖는다.

6. 딥러닝에서의 활용

문장 및 문서 임베딩의 유사도: 자연어 처리에서 문장을 고정 차원 벡터로 변환한 후, 문장 간의 의미적 유사도를 코사인 유사도로 측정한다. Sentence-BERT (Reimers & Gurevych, 2019)는 시아미즈 네트워크(Siamese network)를 사용하여 코사인 유사도가 의미적 유사도와 높은 상관을 갖도록 문장 임베딩을 학습한다.

검색 및 추천 시스템: 질의 벡터 \mathbf{q}와 문서 벡터 \mathbf{d}_1, \ldots, \mathbf{d}_N 사이의 코사인 유사도를 계산하여 가장 유사한 문서를 검색한다. 벡터 검색 인덱스(FAISS, Annoy 등)는 이 계산을 효율적으로 수행하기 위한 근사 최근접 이웃(ANN) 알고리즘을 사용한다.

대조 학습(contrastive learning): CLIP (Radford et al., 2021)과 같은 다중 모달(multimodal) 모델에서, 이미지 임베딩과 텍스트 임베딩의 코사인 유사도를 대조 손실을 통하여 학습한다. 양성 쌍(matched image-text pair)의 코사인 유사도를 최대화하고, 음성 쌍의 코사인 유사도를 최소화한다.

정규화된 임베딩과 온도 매개변수: 실무에서는 임베딩 벡터를 L^2 정규화한 후 코사인 유사도를 계산하며, 온도 매개변수 \tau를 도입하여 유사도 분포의 날카로움을 조절한다.

\text{logit}_{ij} = \frac{\text{sim}_{\cos}(\mathbf{z}_i, \mathbf{z}_j)}{\tau}

\tau가 작으면 유사도 차이가 증폭되어 소프트맥스 출력이 날카로워지고, \tau가 크면 유사도 차이가 완화되어 출력이 균등해진다. 이 스케일링은 코시-슈바르츠 부등식에 의하여 보장된 [-1, 1] 범위 내에서 이루어진다.

마할라노비스 거리(Mahalanobis distance): 공분산 구조를 고려한 거리 측도로, 양의 정부호 행렬 \Sigma^{-1}을 이용하여

d_M(\mathbf{u}, \mathbf{v}) = \sqrt{(\mathbf{u} - \mathbf{v})^\top \Sigma^{-1} (\mathbf{u} - \mathbf{v})}

로 정의된다. 이는 가중 내적 \langle\mathbf{x},\mathbf{y}\rangle_{\Sigma^{-1}} = \mathbf{x}^\top\Sigma^{-1}\mathbf{y}로부터 유도되는 거리이며, 이상치 탐지(anomaly detection) 등에서 사용된다.