回答:
クロスエントロピーは、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
予測された分布は、真の分布にどのくらい近いですか?それが、クロスエントロピー損失によって決まります。次の式を使用します。
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)
、最初にパラメータに関するの導関数を計算する必要があることに注意してください。
元の質問に直接回答するには:
損失関数を説明するための唯一の方法ですか?
正しいクロスエントロピーは、2つの確率分布間の損失を表します。これは、考えられる多くの損失関数の1つです。
次に、たとえば勾配降下アルゴリズムを使用して最小値を見つけることができます。
はい、クロスエントロピー損失関数は勾配降下法の一部として使用できます。
参考資料:TensorFlowに関する私のその他の回答の 1つ。
cosine (dis)similarity
は、角度を使ってエラーを記述し、角度を最小化できるかどうかを知りたかっただけです。
p(x)
各クラスのグラウンドトゥルース確率のリストはになります [0.0, 1.0, 0.0
。同様に、q(x)
は各クラスの予測確率のリストです[0.228, 0.619, 0.153]
。H(p, q)
次に- (0 * log(2.28) + 1.0 * log(0.619) + 0 * log(0.153))
、0.479になります。Pythonのnp.log()
関数を使用するのが一般的であることに注意してください。これは実際には自然対数です。それは問題ではありません。
上記の投稿に加えて、クロスエントロピー損失の最も単純な形式は、バイナリクロスエントロピー(ロジスティック回帰などのバイナリ分類の損失関数として使用されます)として知られていますが、一般化されたバージョンはカテゴリークロスエントロピー(使用されています)たとえば、ニューラルネットワークなどのマルチクラス分類問題の損失関数として。
考え方は変わりません。
モデル計算された(softmax)クラス確率が、トレーニングインスタンスのターゲットラベル(たとえば、ワンホットエンコーディングで表される)で1に近づくと、対応するCCE損失はゼロに減少します。
それ以外の場合は、ターゲットクラスに対応する予測確率が小さくなるにつれて増加します。
次の図は概念を示しています(図から、yとpの両方が高い、または両方が同時に低い、つまり一致している場合、BCEが低くなることに注意してください)。
クロスエントロピーは、2つの確率分布間の距離を計算する相対エントロピーまたはKLダイバージェンスと密接に関連しています。たとえば、2つの個別のpmfsの間の関係を次の図に示します。