유사도 함수
도입
유사도 함수란 두 데이터가 얼마나 유사한지를 측정할 수 있도록 정의되는 함수들을 말한다. 그러한 목적에 걸맞게 잘 작동하려면 몇가지 수학적 조건을 만족하는 함수로 정의되어야한다. 의미적으로는 함숫값 $s(x, y)$가 크면 클수록 두 데이터가 서로 유사하다는 해석을 할 수 있어야한다.
정의
집합 $X$에 대해서 다음의 조건을 만족하는 $s : X \times X \to \mathbb{R}$을 유사도 함수similarity function라 한다.
자기유사최대성질: $$ s(x, y) \le s(x, x) \quad \forall x, y \in X $$
대칭성질symmetry: $$ s(x, y) = s(y, x) \quad \forall x, y \in X $$
설명
정의의 조건에서 자기유사최대성질이 유사도 함수의 핵심이라 할 수 있다. 이 성질로부터 큰 값을 갖는 두 대상이 서로 유사하다고 말할 수 있다. 유사도 함수의 치역을 아래와 같은 형태로 정규화하는 경우도 많다.
$$ s(x, y) \in [0, 1], \qquad s(x, y) \in [-1, 1] $$
KL 발산은 두 분포가 유사할 수록 값이 작아지므로 비유사도dissimilarity라 할 수 있다.
거리 함수와의 차이
두 대상이 얼마나 가까운지를 나타내는 기능을 하는 것으로는 거리 함수가 있는데, 굳이 유사도라는 개념이 왜 필요한지 생각해보자. 기본적으로 거리 함수 $d$는 그 이름답게 가까운 정도를 재기 때문에 두 대상이 가까울수록 값이 작아진다. 반면 유사도 $s$는 두 대상이 유사할수록 값이 커진다. 거리는 떨어진 정도를 재는 것이고, 유사도는 일치하는 정도를 재는 것이라, 보고 싶은 측정량의 방향이 서로 반대이다. 그래서 거리함수와 달리 유사도함수는 정규화되어있는 경우가 많다.
$$ 0 = d(x, x) \le d(x, y), \qquad s(x, y) \le s(x, x) $$
또다른 이유는 거리 함수가 요구하는 조건이 꽤 까다롭기 때문이다. 삼각부등식이나 항등공리는 "진짜 거리"가 되기 위한 강한 제약인데, 데이터를 다룰 때 흔히 쓰는 내적이나 코사인 유사도는 이 조건들을 만족하지 않는다. 유사도는 두 대상이 얼마나 가까운지보다 얼마나 관련되어 있는지, 같은 방향으로 정렬되어 있는지를 재며, 값이 음수가 되는 것도 허용하므로 거리보다 훨씬 자유롭게 정의할 수 있다.
한편 거리 $d$와 유사도 $s$는 방향만 반대인 "가까움"의 두 관점이므로, 거리 $d$가 커질수록 작아지는 단조감소 변환을 통해 서로 바꿔 볼 수도 있다. 예컨대 $s = -d$나 $s = e^{-d}$ 같은 변환이 그러하다. 다만 이렇게 얻은 유사도가 앞서 정의한 자기유사최대나 대칭성을 만족하는지는 변환에 따라 달라진다.
| 종류 \ 성질 | 대칭성 | 비음수 | 삼각부등식 | 항등 | 자기 자신 |
|---|---|---|---|---|---|
| 거리 | ✅ | ✅ | ✅ | ✅ | $0$ (최소) |
| 유사거리 | ✅ | ✅ | ✅ | ❌ | $0$ (최소) |
| 유사도 | ✅ | ❌ | ❌ | — | 최대 |
| 발산 | ❌ | ✅ | ❌ | ✅ | $0$ (최소) |
- 대칭성: $f(x, y) = f(y, x)$
- 비음수: $f(x, y) \ge 0$
- 삼각부등식: $f(x, z) \le f(x, y) + f(y, z)$
- 항등: $f(x, y) = 0 \implies x = y$
- 자기 자신: $f(x, x)$
종류
대표적인 유사도, 비유사도 함수로는 다음과 같은 것들이 있다.
유사도
내적inner product: 내적의 정의 자체는 유사도와 관련이 없지만, 유사도로 쓰기에 적절하다. 두 벡터가 같은 방향으로 크게 정렬될수록 값이 커진다. 크기를 무시하면 아래의 코사인 유사도가 된다.
코사인 유사도cosine similarity: 두 벡터 사이 각의 코사인 값으로, 정규화된 내적이라 할 수 있다. 벡터의 크기는 무시하고 방향이 얼마나 정렬되어 있는지만 측정한다. $$ s(\mathbf{x}, \mathbf{y}) = \frac{\mathbf{x} \cdot \mathbf{y}}{\left\lVert \mathbf{x} \right\rVert \left\lVert \mathbf{y} \right\rVert} $$
비유사도
- 쿨백-라이블러 발산Kullback–Leibler divergence: 두 확률분포가 서로 얼마나 다른지를 재는 비유사도로, 두 분포가 유사할수록 값이 작아진다.

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

