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
cevap
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.
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
Açıklama için teşekkürler @TheLaurens! –
İlginç bir fenomen. Bize kullandığınız veri kümeniz ve/veya kodunuz hakkında biraz daha bilgi verebilir misiniz? –
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
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. –