回答:
クロスエントロピ式は二つの分布にかかる、真の分布、及び離散変数上で定義され、推定分布、とによって与えられます。
ニューラルネットワークの場合、計算は以下に依存しません。
使用されたレイヤーの種類。
どの種類のアクティベーションが使用されましたか?多くのアクティベーションは、出力が確率として解釈できないため、計算と互換性がありません(つまり、出力が負、1より大きい、または合計が1になりません)。Softmaxは、適切に機能する確率分布関数を保証するため、マルチクラス分類によく使用されます。
ニューラルネットワークのために、あなたは、通常の形式で書かれた数式が表示されますグランドトゥルースベクトルとあるまたは最終層の出力から直接撮影したいくつかの他の値)を推定値です。単一の例では、次のようになります。
ここで、はベクトルの内積です。
あなたの例のグランドトゥルース最初の値にすべての確率を与える、と私たちはそれらを無視し、ちょうどあなたの見積りと一致する用語を使用することができますので、他の値は、ゼロであるY
コメントからの重要なポイント
ことを意味する予測である場合には、損失は関係なく同じであるまたは?
はい、これはマルチクラスログロスの重要な機能であり、正しいクラスの確率のみに報酬を与えます。値は、残りの確率が誤ったクラス間でどのように分割されるかには依存しません。
多くの場合、この式はすべての例にわたってコスト関数として平均化されます。説明で常に厳密に順守されているわけではありませんが、通常、損失関数はより低いレベルであり、単一のインスタンスまたはコンポーネントがエラー値を決定する方法を説明し、コスト関数はより高いレベルであり、完全なシステムが最適化のために評価される方法を説明します。サイズデータセットのマルチクラスログ損失に基づくコスト関数は、次のようになります。
多くの実装では、グラウンドトゥルース値をワンホットエンコード(単一の真のクラスで)する必要があります。これにより、追加の最適化が可能になるためです。ただし、そうでない場合は、原則としてクロスエントロピー損失を計算し、最適化することができます。
ニールからの答えは正しいです。ただし、損失は誤ったクラス間の分布(正しいクラスと他のクラス間の分布のみ)には依存しませんが、この損失関数の勾配は、誤ったクラスにどのように影響するかを指摘することが重要だと思います間違っています。したがって、機械学習でcross-entを使用する場合、[0.1 0.5 0.1 0.1 0.2]と[0.1 0.6 0.1 0.1 0.1]の重みを別々に変更します。これは、正しいクラスのスコアが他のすべてのクラスのスコアによって正規化され、確率に変換されるためです。
情報理論のエントロピーを理解することから始めましょう。アルファベット文字列「aaaaaaaa」を伝えたいとします。8 * "a"として簡単にできます。次に、別の文字列「jteikfqa」を取得します。この文字列を通信する圧縮された方法はありますか?ありません。2番目の文字列のエントロピーは、それを伝えるために、より多くの「ビット」の情報が必要であると言えます。
この類推は確率にも当てはまります。果物などのアイテムのセットがある場合、それらの果物のバイナリエンコーディングはになります。ここで、nは果物の数です。8個の果物には3ビットが必要です。この別の見方は、それがランダムに果物を選択する誰かの可能性を与えている1/8、選択された果物がある場合は不確実性の低減である具体的には3です。
「クロス」エントロピーでは、名前が示すように、2つの異なる確率分布の違いを説明するために必要なビット数に焦点を当てます。最良のケースのシナリオは、両方の分布が同一である場合です。この場合、必要なビット量は最小、つまり単純なエントロピーです。数学的には、
どこyは予測確率ベクトル(ソフトマックス出力)であり、yは地上真実ベクトル(例えばワンホット)です。自然対数を使用する理由は、微分が容易であるため(勾配の計算を参照)、グラウンドトゥルースベクトルの対数を取得しない理由は、合計を単純化する0が多数含まれているためです。
結論:素人の用語では、クロスエントロピーは、その距離を説明するために必要な情報量(ビット)の観点から2つの確率分布間の距離と考えることができます。これは、損失を定義する適切な方法であり、確率ベクトルが互いに近づくにつれて減少します。
問題は、確率が他の出力を与えられた値に組み込む「複雑な」関数に由来することです。結果は相互に関連しているため、この方法では、実際の結果に関してではなく、すべての結果について、最後のアクティベーション関数(softmax)のすべての入力によって導出しています。
deepnotes.io/softmax-crossentropyで非常に良い説明を見つけました。著者は実際の導関数がことを示しています。
gombru.github.io/2018/05/23/cross_entropy_lossのその他のきちんとした説明。
最後のアクティベーションレイヤーとして単純なシグモイドを使用すると、承認済みの回答が得られると思いますが、softmaxを使用すると異なる回答が示されます。