Neden standart normalleştirmenin aksine softmax kullanılır?


160

Bir sinir ağının çıkış katmanında, bir olasılık dağılımına yaklaşmak için softmax işlevinin kullanılması tipiktir:

resim açıklamasını buraya girin

Bu, üsler nedeniyle hesaplanması pahalıdır. Neden tüm çıkışların pozitif olması için bir Z dönüşümü yapmıyorsunuz ve sonra tüm çıkışları tüm çıkışların toplamına bölerek normalleştiriyorsunuz?


8
Fonksiyon, üsler nedeniyle hesaplanması pahalı değildir, ancak her qj'yi hesaplamanız gerekir. Üs, gereken toplam hesaplama miktarına kıyasla ucuzdur.
Seppo Enarvi

Ne tür Z dönüşümünden bahsediyorsun? Terimin sinyal işleme anlamı buraya uymuyor ve değerleri ortalamanın altındaysa, değerlerin z puanıyla değiştirilmesi negatif çıktı verir.
David Cian

Ayrıca bakınız: İstatistikler.SE
Martin Thoma

Yanıtlar:


167

Softmax'ın standart normalizasyona kıyasla hoş bir özelliği var.

Sinir ağınızın düşük uyarımına (bulanık görüntüyü düşünün) oldukça homojen dağılımla ve 0 ve 1'e yakın olasılıklarla yüksek uyarımlara (yani büyük sayılar, net görüntü düşünün) tepki verir.

Standart normalizasyon, oran aynı olduğu sürece umursamaz.

Soft max'in 10 kat daha büyük girişi olduğunda ne olduğuna bir bakın, yani nöral ağınız net bir görüntüye sahip ve çok sayıda nöron aktif hale geldi

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

Ve sonra standart normalleştirme ile karşılaştırın

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?

16
Bu cevap en iyi teorik temellere odaklanmak yerine üstel kullanımın etkisini göstermektedir . (ki bu harika). Üst cevabın başına dahil edilmelidir. Üstelleştirmenin değerleri nasıl ve ne dereceye kadar yaydığını gördükten sonra, en iyi cevap bunu neden istediğinizi açıklamaya yardımcı olur.
Ian Danforth

@IanDanforth sana katılıyorum. başlangıçta olmalı.
Hitesh

11
Bu cevabın neden en çok oy verildiğinden emin değilim. [1,2] neden daha bulanık bir görüntüye karşılık gelirken [10,20] daha keskin bir görüntüye karşılık gelir? Bu sadece bir ölçeklendirme meselesidir ve her iki durum da esasen aynıdır. Herhangi bir şey varsa, bu, iki vakayı eşdeğer kabul eden standart normalizasyonu destekliyor gibi görünmelidir.
user118967

Değerlerin zaten [0, 1] 'de olduğu garanti edildiğinde, sadece toplamı bölmek yerine softmax almanın herhangi bir avantajı var mı?
Martin Thoma

59

Bu soruyu aylardır soruyorum. Görünüşe göre softmax'ı bir çıkış fonksiyonu olarak akıllıca tahmin ettik ve sonra softmax'a girişi log olasılıkları olarak yorumladık. Söylediğiniz gibi, neden tüm çıktıları toplamlarına bölerek normalleştirmeyesiniz? Cevabı Goodfellow, Bengio ve Courville (2016) tarafından 6.2.2'deki Derin Öğrenme kitabında buldum .

Son gizli katmanımızın bize etkinleştirme olarak z verdiğini varsayalım. Sonra softmax şöyle tanımlanır:

Çok Kısa Açıklama

Softmax fonksiyonundaki exp kabaca çapraz entropi kaybındaki logu iptal eder ve kaybın z_i'de kabaca doğrusal olmasına neden olur. Bu, model yanlış olduğunda kabaca sabit bir eğime yol açar ve hızlı bir şekilde kendini düzeltmesine izin verir. Böylece, yanlış doymuş bir softmax kaybolan bir eğime neden olmaz.

Kısa Açıklama

Bir sinir ağını eğitmek için en popüler yöntem Maksimum Olabilirlik Tahmini'dir. Teta parametrelerini egzersiz verilerinin (m büyüklüğünde) olasılığını en üst düzeye çıkaracak şekilde tahmin ediyoruz. Tüm eğitim veri kümesinin olasılığı, her örneğin olasılığının bir ürünü olduğundan, veri kümesinin günlük olasılığını ve dolayısıyla k ile endekslenen her örneğin günlük olasılığı olasılığını en üst düzeye çıkarmak daha kolaydır :

Şimdi, sadece burada z ile verilen softmax'a odaklanıyoruz, böylece değiştirebiliriz

ben kth örneğinin doğru sınıfı olmak. Şimdi, görüyoruz ki softmax'ın logaritmasını aldığımızda, numunenin log olasılığını hesaplamak için:

, z'deki büyük farklılıklar için kabaca yaklaşık

İlk olarak, burada z_i doğrusal bileşenini görüyoruz. İkinci olarak, max (z) 'nin davranışını iki durum için inceleyebiliriz:

  1. Model doğruysa, max (z) z_i olacaktır. Bu nedenle, log olabilirliği, z_i ve z'deki diğer girdiler arasında artan bir farkla sıfırı (yani 1 olasılığı) asimptote eder.
  2. Model yanlışsa, max (z) başka bir z_j> z_i olacaktır. Bu nedenle, z_i eklenmesi -z_j'yi tamamen iptal etmez ve günlük olasılığı kabacadır (z_i - z_j). Bu, modele günlük olasılığını artırmak için ne yapılacağını açıkça gösterir: z_i değerini artırın ve z_j değerini azaltın.

Genel log olasılığına, modelin yanlış olduğu örneklerin hakim olacağını görüyoruz. Ayrıca, model gerçekten yanlış olsa bile, doymuş bir softmax'a neden olur, kayıp fonksiyonu doymaz. Yaklaşık olarak z_j cinsinden doğrusaldır, yani kabaca sabit bir gradyanımız vardır. Bu, modelin kendini hızlı bir şekilde düzeltmesini sağlar. Örneğin, Ortalama Kare Hatası için durumun böyle olmadığını unutmayın.

Uzun Açıklama

Softmax hala sizin için keyfi bir seçim gibi görünüyorsa, sigmoidi lojistik regresyonda kullanma gerekçesine bir göz atabilirsiniz:

Neden başka bir şey yerine sigmoid işlevi?

Softmax, benzer şekilde gerekçelendirilen çok sınıflı problemler için sigmoidin genelleştirilmesidir.


Merhaba, lütfen bu açıklamayı açıklayabilir misiniz ve yaklaşık olarak nasıl başardınız? ", z büyük farklılıklar için kabaca yaklaşık"
Londra adam

45

Burada açıklamanın çok iyi olduğunu gördüm: CS231n: Görsel Tanıma için Evrimsel Sinir Ağları.

Yüzeyde softmax algoritması basit bir doğrusal olmayan (verileri üstel olarak yayıyoruz) gibi görünüyor. Ancak bundan daha fazlası var.

Özellikle birkaç farklı görünüm vardır ( yukarıdakiyle aynı bağlantı ):

  1. Bilgi Teorisi - bilgi teorisi açısından softmax işlevi, tahminler ve gerçek arasındaki çapraz entropiyi en aza indirmeye çalışıyormuş gibi görülebilir.

  2. Olasılıksal Bakış - bu perspektiften aslında log olasılıklarına bakıyoruz, böylece üs alma gerçekleştirdiğimizde ham olasılıklarla sonuçlanıyoruz. Bu durumda softmax denklemi MLE'yi bulur (Maksimum Olabilirlik Tahmini)

Özetle, softmax denklemi keyfi gibi görünse bile DEĞİLDİR. Aslında, tahminler ve gerçek arasındaki çapraz entropi / negatif olasılığı en aza indirmek için sınıflandırmaları normalleştirmenin oldukça ilkeli bir yoludur.


2
Önceki yorumlara eklemek için softmax fonksiyonunun türevi sadece softmax (1-softmax)
Rouzbeh

11
Cross-Entropy Loss kullanmanın nedenlerini alıyorum, ama bu softmax ile nasıl bir ilişki içinde? "Softmax işlevi, tahminler ve gerçek arasındaki çapraz entropiyi en aza indirmeye çalışıyor gibi görülebilir" dediniz. Varsayalım, standart / doğrusal normalleştirme kullanacağım, ancak yine de Çapraz Entropi Kaybını kullanıyorum. Sonra da Çapraz Entropiyi en aza indirmeye çalışacağım. O halde softmax sayısal faydalar dışında Çapraz Entropi ile nasıl bağlantılıdır ?
Kilian Batzner

18
Olasılık görüşüne gelince: kütük olasılıklarına bakma motivasyonu nedir? Akıl yürütme biraz "softmax'ta e ^ x kullanıyoruz, çünkü x'i log olasılıkları olarak yorumluyoruz" gibi görünüyor. Söyleyebileceğimiz aynı mantıkla, softmax'ta e ^ e ^ e ^ x kullanıyoruz, çünkü x'i log-log-log-olasılıkları olarak yorumluyoruz (elbette burada abartılıyor). Softmax'ın sayısal faydalarını elde ediyorum, ancak kullanmak için teorik motivasyon nedir?
Kilian Batzner

5
@KilianBatzner Bir nöronun çıktısı bir günlük olasılık ise, o zaman birçok nöronun çıktılarının toplamı olasılıklarının çarpımıdır. Bu, olasılıkların toplamından daha yaygındır.
alltom

1
@KilianBatzner Özellikleriniz farklı Gauss kümelerinden (sınıf başına kümede) geliyorsa, mükemmel bir sınıflandırıcı (lojistik regresyon) türetebilirsiniz. Bazı ek koşullar vardır, ancak temel olarak softmax ve logları, gauss kümelerini ayırmak istediğiniz varsayımıyla gerekçelendirebilir / türetebilirsiniz.
maxy

16

Q_i değerleri, günlük olasılıklarını temsil eder. Olasılık değerlerini kurtarmak için bunları üstelemeniz gerekir.

İstatistiksel algoritmaların genellikle log-olasılık kaybı fonksiyonlarını kullanmasının bir nedeni, daha sayısal olarak kararlı olmalarıdır: olasılıkların bir ürünü çok küçük bir kayan nokta sayısı olarak temsil edilebilir. Bir günlük olabilirlik kaybı işlevini kullanarak, olasılıkların bir ürünü bir toplam haline gelir.

Diğer bir neden, çok değişkenli Gauss dağılımlarından alındığı varsayılan rasgele değişkenler için tahmin ediciler oluştururken log-olasılıkların doğal olarak meydana gelmesidir. Örneğin Maksimum Olabilirlik (ML) tahmincisine ve bunun en küçük karelere nasıl bağlandığına bakın.

Bir sidenote olarak, bu sorunun CS Teorisi veya Hesaplamalı Bilim Yığın Değişimleri için daha uygun olduğunu düşünüyorum.


12
q_i örtük olarak günlük olasılıklarını temsil etmez. sadece açıkça kullandıklarını varsaydığımız softmax'ı kullandığımızda.
Tom

6

Çok sınıflı bir sınıflandırma sorununa bakıyoruz. Yani, tahmin edilen değişken kategorilerden ybirini alabilir k, burada k > 2. Olasılık teorisinde, bu genellikle çok terimli bir dağılım ile modellenir. Çok terimli dağılım, üstel aile dağılımlarının bir üyesidir. P(k=?|x)Üstel aile dağılımlarının özelliklerini kullanarak olasılığı yeniden oluşturabiliriz, softmax formülüne denk gelir.

Sorunun multinomiyal dışında başka bir dağıtımla modellenebileceğine inanıyorsanız, softmax'dan farklı bir sonuca ulaşabilirsiniz.

Daha fazla bilgi ve resmi bir türetme için lütfen CS229 ders notlarına (9.3 Softmax Regresyonu) bakınız .

Ek olarak, genellikle softmax için gerçekleştirdiği yararlı bir numara şöyledir: softmax (x) = softmax (x + c) , softmax girişteki sabit ofsetlere değişmez.

resim açıklaması girin herse


'X' ve 'x + c' için aynı değeri döndürdüğü için bir etkinleştirme işlevi olarak nasıl çalışır?
Suresh Pokharel

1
Açık konuşmak gerekirse, softmaxbir aktivasyon fonksiyonu değildir. Aktivasyon fonksiyonu eleman-bilge bir işlemdir - bir tensör elemanına akıllıca başka bir tensör üretmek için doğrusal olmayan bir işlem gerçekleştirir. Fakat softmaxbir vektör işlemidir, size normalleştirilmiş bir vektör üretir, her eleman arasında iç bağımlılıklar vardır.
GabrielChu

5

Bunun nedenlerinden biri, exp (x) her zaman pozitif ve sıfırdan büyük olacağından, negatif sayılarla ve sıfıra bölmekle ilgili olabileceğini düşünüyorum.

Örneğin a = [-2, -1, 1, 2], toplam 0 için sıfırla bölünmeyi önlemek için softmax kullanabiliriz.


3
Normalde minimum değeri çıkarır, sonra maks / toplama bölerdiniz. Sizin durumunuzda bu, [0, 1, 3, 4]o zaman bölmeyi yapar.
ubershmekel

1
@ubershmekel Bu, en düşük puanı alan sınıfa her zaman 0 olasılığı atanması sorunuyla karşılaşır.
Alessandro Power

4

Softmax fonksiyonunu değiştirdiğimizi varsayalım ki çıktı aktivasyonları resim açıklamasını buraya girin

cpozitif bir sabit nerede . Bunun c=1standart softmax fonksiyonuna karşılık geldiğini unutmayın . Ancak farklı bir değer kullanırsak c, yine de softmax'a niteliksel olarak oldukça benzer olan farklı bir fonksiyon elde ederiz. Özellikle, çıkış aktivasyonlarının, normal softmax için olduğu gibi bir olasılık dağılımı oluşturduğunu gösterin. Büyükleşmeye izin verdiğimizi varsayalım c, yani c→∞. Çıkış aktivasyonları için sınırlayıcı değer nedir a^L_j? Bu sorunu çözdükten sonra, c=1işlevi neden maksimum işlevin "yumuşatılmış" bir sürümü olarak düşündüğümüz açık olmalıdır . Bu "softmax" teriminin kökenidir. Ayrıntıları bu kaynaktan takip edebilirsiniz (denklem 83).


Benim için, maksimum fonksiyonun "yumuşatılmış" versiyonu fikri softmax kullanımını haklı çıkarmanın en basit yoludur.
tashuhka

3

Piotr Czapla cevabına ek olarak, giriş değerleri arttıkça, maksimum giriş olasılığı, aynı oran için ve diğer girişlerle karşılaştırıldığında daha büyük olur:

resim açıklamasını buraya girin


2

Softmax fonksiyonunun seçimi, olası diğer normalleştirme fonksiyonları olduğu için bir şekilde keyfi görünmektedir . Bu nedenle log-softmax kaybının neden diğer kayıp alternatiflerinden daha iyi performans göstereceği belirsizdir.

" Küresel Kayıp Ailesine Ait Softmax Alternatiflerinin Keşfi " https://arxiv.org/abs/1511.05042

Yazarlar, Taylor'un genişlemesi expve küresel softmax olarak adlandırılan bazı işlevleri araştırdılar ve bazen normalden daha iyi performans gösterebileceklerini keşfettiler softmax.

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.