Lojistik sınıflandırıcısındaki fonksiyon seçimine (Softmax vs Sigmoid) ne karar verir?
4 çıkış sınıfı olduğunu varsayalım. Yukarıdaki fonksiyonların her biri, her sınıfın doğru çıktı olma ihtimalini verir. Peki sınıflandırıcı için hangisi?
Lojistik sınıflandırıcısındaki fonksiyon seçimine (Softmax vs Sigmoid) ne karar verir?
4 çıkış sınıfı olduğunu varsayalım. Yukarıdaki fonksiyonların her biri, her sınıfın doğru çıktı olma ihtimalini verir. Peki sınıflandırıcı için hangisi?
Yanıtlar:
Sigmoid fonksiyonu ise, iki sınıf lojistik regresyon analizi için kullanılır SoftMax fonksiyonu çok sınıflı lojistik regresyon (aka MAXENT olduğunda, çok lojistik regresyon, SoftMax Regresyon Maksimum Entropi Sınıflandırıcı) için kullanılır.
İki sınıflı lojistik regresyonda, öngörülen olasılıklar sigmoid işlevi kullanılarak aşağıdaki gibidir:
Çok sınıflı lojistik regresyonda, sınıfı ile softmax fonksiyonu kullanılarak öngörülen olasılıklar aşağıdaki gibidir:
Softmax fonksiyonunun, aşağıda açıklandığı gibi sigmoid fonksiyonunun çok sınıflı kasaya bir uzantısı olduğu görülebilir. sınıflarıyla çoklu sınıf lojistik regresyonuna bakalım :
ile . Sigmoid fonksiyonunu kullanarak iki sınıflı lojistik regresyondaki aynı olasılıkları elde ettiğimizi görüyoruz. Vikipedi bu konuda biraz daha genişler.
Aslında, birinin diğerine dönüştürülebileceği anlamında eşdeğerdirler.
Verilerinizin keyfi bir boyutta bir vektör ile temsil edildiğini ve bunun için softmax ile takip edilen bir afin dönüşümü kullanarak bir ikili sınıflandırıcı oluşturduğunuzu varsayalım:
Şimdi softmax yerine bir sigmoid kullanan eşdeğer bir ikili sınıflandırıcıya dönüştürelim. Öncelikle, istediğimiz olasılığın hangisi olduğuna karar vermeliyiz (bu, veya sınıfı için olabilir ). Bu seçenek kesinlikle keyfi ve sınıfını . Sonra, sınıflandırıcım şu şekilde olacak:
Sınıflayıcılar eğer olasılıklar aynı ise eşdeğerdir, bu nedenle dayatmalıyız:
Değiştirme , ve açısından kendi ifadelerle ve ve bazı basit yaparak Cebirsel manipülasyon, yukarıdaki eşitliklerin, eğer sadece ve ile verildiyse geçerli olduğunu doğrulayabilirsiniz :
Sinir ağlarında softmax vs softmax kullanıp kullanmayacaklarını ararken insanların bu soruya yöneldiklerini fark ettim. Bir sinir ağı sınıflandırıcısı oluşturan bu insanlardan biriyseniz, sigmoid veya softmax'ı ağınızdaki ham çıktı değerlerine uygulayıp uygulamayacağınıza nasıl karar vereceğinize karar verebilirsiniz:
Referans: Sinematik ağ tasarımında sigmoid ve softmax'ın ne zaman kullanılacağına dair ayrıntılı açıklamalar için, örneğin hesaplamalar dahil, lütfen bu makaleye bakınız: "Sınıflandırma: Sigmoid vs. Softmax."
Önceki cevapların tümüne eklenmesi - Herhangi bir çok-sınıflı sınıflandırma probleminin, "hepsi-bir-hepsi" yöntemini kullanarak, yani C sigmoidleri olan (C sayısı ise, C) olan ikilik sınıflandırma problemlerine indirgenebileceğini söylemek isterim sınıflar) ve her sigmoidin söz konusu sınıfta olma ya da olmama olasılığı olarak yorumlanması ve maksimum olasılığın alınması.
Örneğin, MNIST rakam örneğinde, bir softmax veya on sigmoid kullanabilirsiniz. Aslında Andrew Ng'nin Coursera ML kursunda yaptığı şey bu. Dışarı kontrol edebilirsiniz burada Andrew Ng (bana göre piton Matlab'de uyarlanan) çok sınıflı sınıflandırma için 10 sigmoidleri nasıl kullandığını ve burada piton benim SoftMax uyarlamasıdır.
Ayrıca, fonksiyonların denk olmasına rağmen (çok sınıflı sınıflandırma amacıyla) uygulamalarında (özellikle türevleri ve y'yi nasıl temsil edecekleri konusunda) biraz farklılık gösterdiğine dikkat etmek önemlidir.
Tek bir çok sınıflı sınıflandırmada (yani Softmax) birden fazla ikili sınıflandırma (yani Sigmoidler) kullanmanın büyük bir avantajı - softmax değeriniz çok büyükse (örneğin, 10K veya daha büyük bir sözlük boyutunda tek bir sıcak kelime gömme kullanıyorsanız) ) - eğitmek verimsiz olabilir. Bunun yerine antrenman setinizin küçük bir kısmını alıp sigmoidlerinizin sadece küçük bir kısmını eğitmek için kullanabilirsiniz. Negatif Örneklemenin arkasındaki ana fikir budur .