🍣

損失関数と距離関数

2025/01/21に公開

損失関数と距離関数

今回は、損失関数と距離関数の違いや共通点について見ていこうと思います。
距離関数は数学科出身の人に取ってお馴染みのものなのかもしれませんが、自分は物理専攻であるので、そこまで詳しくないので、間違いなどありましたら教えていただけると幸いです。

損失関数

損失関数は、DeepLearningや機械学習をする人にとってはお馴染みのものであると思います。
しかし、損失関数を考えるときにそのWebサイトを見ても、数学的な定義がなく、こういう場合はこのような損失関数を用います。とだけ書いてあることが多いように感じます。ここでは、そのような個別的に扱われる損失関数の定義を見ていこうと思います。

損失関数
以下の条件を満たす\mathbb{R}^n \times \mathbb{R}^n \mapsto \mathbb{R}上の実数関数L(\bm{\theta}, \bm{t})を損失関数と呼ぶ。

  • \forall \bm{\theta}, \bm{t} \in \mathbb{R}^nについて、L(\bm{\theta}, \bm{t}) \geq 0.
  • \forall \bm{\theta} \in \mathbb{R}^nについて、\theta = tならば、L(\bm{\theta}, \bm{t})= 0.

有名なものとしては、MSEやKL-divergenceなどがあります。

距離関数

距離関数について見ていきます。
距離関数は以下で定義されるような関数です。

距離関数
Eを空でない集合、dE\times E上に定義された実数値関数で、以下の条件を満たすものとする。
\forall x, y \in Eに対して、

  • d(x,y) \geq 0,
  • d(x, y) = 0 \iff x = y,
  • d(x, y) = d(y, x),
  • d(x, z) \leq d(x, y) + d(y, z)

このとき、関数dを距離関数と呼ぶ。

損失関数と異なる点は、最後の条件があるか無いかです。

損失関数に何かその系に応じた損失項を加えるときは、このことを意識して追加するとうまくいくかもしれません。

Discussion