クロスエントロピーとは何ですか?


92

クロスエントロピーとは何かについて多くの説明があることは知っていますが、それでも混乱しています。

損失関数を説明するための唯一の方法ですか?勾配降下アルゴリズムを使用して、損失関数を使用して最小値を見つけることはできますか?


10
SOには適していません。ここではデータサイエンスの姉妹サイトで同様の質問です:datascience.stackexchange.com/questions/9302/...
メトロポリス

回答:


230

クロスエントロピーは、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つ。


従って、クロスエントロピーはそれぞれ、例えばXの確率の和で損失を記述する
theateist

では、エラーをクロスエントロピーとして説明する代わりに、2つのベクトル間の角度(コサイン類似度/角距離)としてエラーを説明し、角度を最小化しようとすることはできますか?
理論家、2017

1
どうやらこれは最良の解決策ではありませんが、理論的にcosine (dis)similarityは、角度を使ってエラーを記述し、角度を最小化できるかどうかを知りたかっただけです。
理論家、2017

2
@Stephen:私が挙げた例を見ると、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()関数を使用するのが一般的であることに注意してください。これは実際には自然対数です。それは問題ではありません。
stackoverflowuser2010

1
@HAr:真のラベルのワンホットエンコーディングの場合、気になるゼロ以外のクラスは1つだけです。ただし、クロスエントロピーは2つの確率分布を比較できます。それらの1つがワンホット確率を持つ必要はありません。
stackoverflowuser2010 2018

2

つまり、クロスエントロピー(CE)は、真のラベルから予測値がどれだけ離れているかを示す尺度です。

ここでのクロスは、2つ以上のフィーチャ/真のラベル(0、1など)間のエントロピーの計算を指します。

そして、エントロピーという用語自体がランダム性を指しているため、その値が大きいということは、予測が実際のラベルから離れていることを意味します。

したがって、重みを変更してCEを減らし、最終的に予測ラベルと真のラベルの差を減らし、精度を向上させます。


1

上記の投稿に加えて、クロスエントロピー損失の最も単純な形式は、バイナリクロスエントロピー(ロジスティック回帰などのバイナリ分類の損失関数として使用されます)として知られていますが、一般化されたバージョンはカテゴリークロスエントロピー(使用されています)たとえば、ニューラルネットワークなどのマルチクラス分類問題の損失関数として。

考え方は変わりません。

  1. モデル計算された(softmax)クラス確率が、トレーニングインスタンスのターゲットラベル(たとえば、ワンホットエンコーディングで表される)で1に近づくと、対応するCCE損失はゼロに減少します。

  2. それ以外の場合は、ターゲットクラスに対応する予測確率が小さくなるにつれて増加します。

次の図は概念を示しています(図から、yとpの両方が高い、または両方が同時に低い、つまり一致している場合、BCEが低くなることに注意してください)。

ここに画像の説明を入力してください

クロスエントロピーは、2つの確率分布間の距離を計算する相対エントロピーまたはKLダイバージェンスと密接に関連しています。たとえば、2つの個別のpmfsの間の関係を次の図に示します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.