web-dev-qa-db-ja.com

クロスエントロピーとは

クロスエントロピーとは何かについての説明がたくさんあることを私は知っていますが、私はまだ混乱しています。

損失関数を説明するための方法にすぎませんか。損失関数を使用して最小値を見つけるために勾配降下アルゴリズムを使用できますか?

77
theateist

クロスエントロピーは通常、2つの確率分布間の差を定量化するために使用されます。通常、「本当の」分布(あなたの機械学習アルゴリズムが一致させようとしているもの)はワンホット分布で表現されます。

たとえば、特定のトレーニングインスタンスで、ラベルがB(ラベルA、B、Cのうち)であるとします。したがって、このトレーニングインスタンスのワンホットディストリビューションは次のとおりです。

Pr(Class A)  Pr(Class B)  Pr(Class C)
        0.0          1.0          0.0

上記の「真の」分布は、トレーニングインスタンスがクラスAである確率が0%、クラスBである確率が100%、クラスCである確率が0%であることを意味すると解釈できます。

今、あなたの機械学習アルゴリズムが以下の確率分布を予測すると仮定してください。

Pr(Class A)  Pr(Class B)  Pr(Class C)
      0.228        0.619        0.153

予測分布は実際の分布にどれくらい近いですか。それがクロスエントロピー損失が決定するものです。この式を使用してください。

Cross entropy loss formula

p(x)は希望する確率、q(x)は実際の確率です。合計は3つのクラスA、B、およびCにわたります。この場合、損失は0.479です。

H = - (0.0*ln(0.228) + 1.0*ln(0.619) + 0.0*ln(0.153)) = 0.479

ですから、それはあなたの予測が本当の分布からどれほど「間違っている」か「遠く」離れているかです。

クロスエントロピーは、多くの可能な損失関数のうちの1つです(別の一般的なものはSVMヒンジ損失です)。これらの損失関数は通常J(theta)と書かれ、勾配降下内で使用できます。これはパラメータ(または係数)を最適値に向かって移動させるための反復アルゴリズムです。以下の式では、J(theta)H(p, q)に置き換えます。しかし、最初にパラメータに関してH(p, q)の導関数を計算する必要があることに注意してください。

gradient descent

それで、あなたの最初の質問に直接答えるために:

損失関数を説明するための方法にすぎませんか。

正しいクロスエントロピーは、2つの確率分布間の損失を表します。それは多くの可能な損失関数のうちの1つです。

それから、例えば勾配降下アルゴリズムを使って最小値を見つけることができます。

はい、クロスエントロピー損失関数は勾配降下の一部として使用できます。

続きを読む:私のうちの1つ その他の回答 TensorFlowに関連しています。

182