Lojistik sınıflandırıcı Softmax vs Sigmoid işlevi?


63

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?


16
Softmax işlevi, sigmoidin genelleştirilmesinden başka bir şey değildir, bu nedenle "softmax vs. sigmoid" ile ne demek istediğinizi tam olarak netleştirmeyin.
dsaxton

2
Sigmoid ile durum böyle. Sigmoid'i kullandığımızda bir sınıfın , diğerinin . exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
dsaxton

3
Reddit posteri, yanlış ya da en azından alakasız olduğunu düşündüğüm bir ayrım yapıyor. Sınıflardan birinin ağırlığa sahip olup olmaması, sadece puanları değiştirmekten ibarettir, olasılıklar üzerinde etkisi yoktur.
dsaxton,


3
"softmax vs. sigmoid" ile ne demek istediğinizi tamamen açık değil. "" başlığın hemen altında, sorunun gövdesi var - kaçırması çok kolay, biliyorum. Ayrıca, google sorgularını, tam olarak sorulanları yanıtlamak için buraya gelmek üzere yönlendirmek için de iyi bir başlık.
michael

Yanıtlar:


77

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:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

Çok sınıflı lojistik regresyonda, sınıfı ile softmax fonksiyonu kullanılarak öngörülen olasılıklar aşağıdaki gibidir:K

Pr(Yi=k)=eβkXi 0cKeβcXi

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 :K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

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.β=(β0β1)


1
Bu konuda safım, ama bunu çok zaman görüyorum β = - (β0 − β1) Bunun ne açıklaması olabilir? Sigmoidlerde bildiğim kadarıyla β bir vektör olurdu. Ve genellikle verilen çalışma için bir tanesidir. Öyleyse and0 ve come1 nasıl geliyor?
Ishan Bhatt

1
@IshanBhatt bu yorum yardımcı olabilir.
Tom Hale

garip bir şekilde, hala sadece sigmoid kullanarak
çoklu sınıflara

15

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:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Ş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:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Sınıflayıcılar eğer olasılıklar aynı ise eşdeğerdir, bu nedenle dayatmalıyız:

σ(z)=softmax(z0)

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 :z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Tamam, eğer sorarsanız, açıklamamı anlamadınız mı? Özel probleminizi çözmeme izin verin: verilerinizi sigmoide beslediğinizi söylerseniz, bunun tek boyutlu bir sayı olması gerekir, . Bir sigmoid beslemek, sen olasılığı olsun örneği için, senin iki sınıftan birine olmak : . Daha sonra, içinde olma olasılığı şudur: . Şimdi sigmoid'inizi softmax ile değiştirelim. (Devam edecek). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Devamı). Softmax'ı iki sınıflı bir sınıflandırma problemine uygulamak için, bir boyutlu verinizin iki boyutlu bir vektöre dönüştürülmesi gerekir. Bu nedenle, ve tanımlamamız gerekiyor . En seçeyim . Yana uygun olmalıdır , elimizdeki nedenle, . Şimdi, ve . Bunu kullanarak hemen olduğunu doğrulayabilirsiniz . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Dahası, (yani, ) karşılayan herhangi bir ve kombinasyonu aynı sonuca yol açacaktır. Bu, softmax'ın bir yedek parametresine sahip olduğunu gösterir. Bu aptal gibi görünse de, aslında ilginç bir özelliktir, çünkü öğrenme algoritmasının ve çıkarımının sayısal kararlılığını destekleyen parametrelerinin normalleştirilmesine izin verir . Ama bu sadece fazladan bir yorum, sorunuzu cevaplamak önemli değil :)w0w1w=w0w11=w1w0wi
D ...

Çok teşekkürler. Anladım. İlk yorumunuzda olasılık muhtemelen . Şimdi dönüşümün arkasındaki fikrin ne olduğunu anladım. P(C1|x)1σ(x)
null

Bunu sevindim;) Evet, bu bir yazım hatası, açıkça . Gösterdiğin için teşekkürler! P(C1|x)=1σ(x)
D ...

8

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:

  • Eğer çok etiketli bir sınıflandırma probleminiz varsa = birden fazla "doğru cevap" var = çıkışlar birbirini dışlamaz, o zaman her ham çıkışta bağımsız olarak bir sigmoid işlevi kullanın. Sigmoid, tüm sınıflarınız için, bazıları veya hiçbiri için yüksek olasılıklara sahip olmanızı sağlayacaktır. Örnek: Göğüs röntgeni görüntüsündeki hastalıkları sınıflandırmak. Görüntü zatürree, amfizem ve / veya kanser içerebilir veya bu bulguların hiçbirini içermeyebilir.
  • Çok sınıflı bir sınıflandırma probleminiz varsa = sadece bir tane "doğru cevap" = çıktılar birbirini dışlar, softmax işlevini kullanın. Softmax, çıktı sınıflarınızın olasılıklarının toplamının bire eşit olduğunu zorlayacaktır, bu nedenle belirli bir sınıfın olasılığını arttırmak için, modelinizin buna uygun olarak diğer sınıflardan en az birinin olasılığını azaltması gerekir. Örnek: El yazısı rakamlarının MNIST veri setindeki görüntüleri sınıflandırmak. Rakamın tek bir resmi yalnızca bir gerçek kimliğe sahiptir - resim aynı anda 7 ve 8 olamaz.

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."


-1

Ö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 .


İşlevler eşdeğer değildir, çünkü softmax ağı, çıktılar olarak sınıflar üzerinde olasılık dağılımı sağlamak için sınırlandırılmıştır: vektör negatif değildir ve 1'e toplanır . sigmoid birimleri negatif değildir ancak herhangi bir sayıya toplanabilir 0 ila arasında ; geçerli bir olasılık dağılımı değil. Bu ayrım, iki fonksiyonun nasıl farklılaştığını tanımlamak için çok önemlidir. CC
Monica'yı

Eşdeğer tanımınız nedir? Benimki: Çok sınıflı sınıflandırma için herhangi bir problem olmadan kullanabilirsiniz. Ayrıca - softmax kullanan herhangi bir çoklu sınıflandırma, sigmoidler kullanan ikili-sınıflandırmalara dönüştürülebilir. Neden çıktıları 1'e toplayan dağılımlarını önemsemeliyim?
David Refaeli

Çok etiketli sınıflandırma hakkındaki argümanınız sigmoid ve softmax'ın neden eşdeğer olmadığını gösteriyor. Softmax kullanırken, bir sınıfın olasılığını arttırmak, diğer tüm sınıfların toplam olasılığını azaltır (toplam-1 nedeniyle). Sigmoid kullanmak, bir sınıfın olasılığını arttırmak diğer sınıfların toplam olasılığını değiştirmez. Bu gözlem, sigmoidin çok etiketli sınıflandırma için makul olmasının nedenidir : tek bir örnek sınıflarına ait olabilir. Sum-to-1 ayrıca softmax'ın çoklu etiket sınıflandırması için uygun olmamasının nedenidir. 0,1,2,,C
Monica'yı

Seni kaybettim. Bildiğim tüm pratik amaçlar için, çoklu sigmoidler = 1 softmax. Negatif örnekleme vakasını bile ekledim, burada çoklu sigmoidler aslında softmax'a göre bir avantaja sahip.
David Refaeli
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.