類似度関数
導入
類似度関数とは、二つのデータがどれほど類似しているかを測定できるように定義される関数のことをいう。そのような目的にふさわしく機能するためには、いくつかの数学的条件を満たす関数として定義されなければならない。意味的には、関数値$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: 二つの確率分布が互いにどれほど異なるかを測る非類似度であり、二つの分布が類似しているほど値が小さくなる。
