Hangi derin öğrenme modeli, birbirini dışlamayan kategorileri sınıflandırabilir


9

Örnekler: İş tanımında bir cümle var: "İngiltere'de Java kıdemli mühendisi".

Derin bir öğrenme modelini 2 kategori olarak tahmin etmek istiyorum: English ve IT jobs. Geleneksel sınıflandırma modeli kullanırsam, sadece softmaxson katmanda işlevli 1 etiket tahmin edebilir . Bu nedenle, her iki kategoride "Evet" / "Hayır" ı tahmin etmek için 2 model sinir ağını kullanabilirim, ancak daha fazla kategorimiz varsa, çok pahalıdır. Peki, aynı anda 2 veya daha fazla kategoriyi tahmin etmek için derin öğrenme veya makine öğrenme modelimiz var mı?

"Düzenle": Geleneksel yaklaşımla 3 etiketle, [1,0,0] ile kodlanacak, ancak benim durumumda, [1,1,0] veya [1,1,1] ile kodlanacak

Örnek: 3 etiketimiz varsa ve bu etiketlerin tümüne bir cümle sığarsa. Eğer softmax fonksiyonundan çıktı [0.45, 0.35, 0.2] ise, bunu 3 etiket veya 2 etiket olarak sınıflandırmalıyız, ya da bir tane olabilir mi? Yaptığımız ana sorun şudur: 1, 2 veya 3 etikete sınıflandırmak için iyi eşik nedir?


Softmax fonksiyonu yerine sigmoid fonksiyonunu kullanmalıyız. Veri noktalarına birden fazla sınıf atayabilir.
NITISH MAHAJAN

Yanıtlar:


6

Bu çoklu etiket sınıflandırmasını, softmax'ı sigmoid aktivasyonla değiştirerek ve kayıp fonksiyonu olarak kategorik crossentropi yerine ikili crossentropy kullanarak yapabilirsiniz. O zaman etiketlerinizin olduğu kadar çok çıkış birimi / nöron içeren bir ağa ihtiyacınız var.

Kategorik çapraz entropi sadece pozitif hedefler için tahminde bulunan zararı aldığından, zararı ikili çapraz-girişim olarak değiştirmeniz gerekir. Bunu anlamak için, bir örnek için kategorik crossentropy kaybı formülüne bakıni (sınıf endeksleri j):

Li=jti,jlog(pi,j)

Normal çoklu sınıf ayarında, bir softmax kullanırsınız, böylece doğru sınıf için tahmin doğrudan diğer sınıfların tahminlerine bağlıdır. Softmax'ı sigmoid ile değiştirirseniz, bu artık doğru değil, bu yüzden olumsuz örnekler (buradati,j=0) artık eğitimde kullanılmıyor! Bu nedenle, hem olumlu hem de olumsuz örnekleri kullanan ikili çapraz geçişe geçmeniz gerekir: Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)


neden kayıp fonksiyonu olarak kategorik crossentropy yerine ikili crossentropy kullanmalıyız? biraz daha fazla açıklayabilir misin ? Şimdi sigmoid aktivasyon kullanıyorum @robintibor
voxter

@Voxter
robintibor

Parlak ! Teşekkür ederim. Ayrıca, bana açıkladığınız gibi derin öğrenmedeki işlevler hakkında daha fazla matematik açıklayan bazı belgeler veya öğreticiler verebilir misiniz?
voxter

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.