2016-05-25 52 views
10

Derin sinir ağını kullanarak ikili sınıf sınıflandırma yapıyorum. Ne zaman binary_crossentropy kullanıyorum modelim iyi bir doğruluk vermez (rasgele tahmini daha yakındır). Ama eğer ben kategorik crossentropy'yi çıkış katmanı 2'nin büyüklüğünü yaparak kullanırsam, 0.90'a yakın olan sadece 1 dönemde iyi bir doğruluk elde ediyorum. Burada neler olduğunu açıklayan var mı?Binary_crossentropy ve Categorical_crossentropy arasındaki karışıklık

+0

İlginç bir fenomen. Bize kullandığınız veri kümeniz ve/veya kodunuz hakkında biraz daha bilgi verebilir misiniz? –

+0

Marcin ile aynı fikirdeyim, daha fazla bilgi çok yararlı olacaktır. Binary_corssentropy kullandığınızda ve categorical_crossentropy kullandığınızda çıkış katmanının aktivasyon fonksiyonu nedir? Ayrıca, 10 ile 1 arasındaki antrenman setindeki sınıf dengesi nedir? – Dimosthenis

+0

Her iki durumda da kullanıyorum aktivasyon işlevi softmax. Model, her iki durumda da aynı kalır. Sadece ikili çapraz geçiş durumunda, son katın büyüklüğü 1 iken, kategorik olmak üzere 2'dir. Başka bilgi gerekirse bana bildirin. –

cevap

14

Ayrıca, çıktı katmanında softmax etkinleştirme ile binary_crossentropy'yi kullanmaya çalışırken bu sorunu da yaşıyorum. Bildiğim kadarıyla, softmax, her bir sınıfın olasılığını verir, bu nedenle çıkış katmanınız 2 düğüme sahipse, p(x1), p(x2) ve x1 + x2 = X gibi bir şey olacaktır. Bu nedenle, sadece 1 çıkış düğüme sahipseniz, her zaman eşittir 1.0 (% 100), bu yüzden rastgele tahminlere yakın olmalısınız (dürüst olmak gerekirse, değerlendirme kümesinde kategori dağılımınıza yakın olacaktır).

sigmoid veya relu gibi başka bir etkinleştirme yöntemine değiştirmeyi deneyin.

+4

Bu durum artık geçerli olmayabilir, ancak yalnızca miras ve açıklık nedenleri için: Softmax, olasılık katsayılarını geri döndürmez, ancak softmax, çıkış katmanınızdaki tüm düğümlerin çıktısını 1'e ekler (bu şekilde bir olasılık gibi) . – TheLaurens

+0

Açıklama için teşekkürler @TheLaurens! –