2016-05-25 24 views
10

深い神経回路網を使ってバイナリクラス分類をしています。私がbinary_crossentropyを使用しているときはいつでも、私のモデルは良い精度を与えていません(ランダム予測に近い)。しかし、もし私が出力層のサイズを2にすることによってカテゴリクロスティトロピーを使用すると、私は0.90に近いわずか1エポックで良い精度を得ています。誰でもここで起こっていることを説明できますか?Binary_crossentropyとCategorical_crossentropyの混同

+0

興味深い現象。使用しているデータセットやコードに関する詳細を教えてください。 –

+0

私はMarcinに同意します。さらに詳しい情報は非常に役に立ちます。 binary_corssentropyを使用しているときとcategorical_crossentropyを使用しているときの出力レイヤーのアクティベーション機能は何ですか?また、トレーニングセットのクラスバランスは10対1ですか? – Dimosthenis

+0

どちらの場合にも私が使用している起動機能はsoftmaxです。モデルは両方のケースで同じままです。バイナリクロスエントロピーの場合のみ、最終層のサイズは1であるのに対して、カテゴリは2である。他の情報が必要な場合は教えてください。 –

答えて

14

また、出力層でsoftmaxの有効化でbinary_crossentropyを使用しようとすると、この問題が発生します。私の知る限り、softmaxは各クラスの確率を示します。したがって、出力レイヤーに2つのノードがある場合は、p(x1),p(x2)およびx1 + x2 = Xのようになります。したがって、出力ノードが1つだけの場合、常に1.0(100%)になります。そのため、ランダムな予測に近いです(正直なところ、評価セットのカテゴリ分布に近いでしょう)。

sigmoidまたはreluなどの別の有効化方法に変更してください。

+4

これはもう重要ではないかもしれませんが、レガシーでクリアな理由から、ソフトマックスは確率を返しませんが、出力層のすべてのノードの出力に1が加算されます(確率でそうです) 。 – TheLaurens

+0

あなたの説明のためにありがとう@ TheLaurens! –

関連する問題