TensorFlow'daki logit kelimesinin anlamı nedir?


250

Aşağıdaki TensorFlow işlevinde, son katmandaki yapay nöronların aktivasyonunu beslemeliyiz. Anladığım kadarıyla. Ama neden loglar olarak adlandırıldığını anlamıyorum? Bu matematiksel bir işlev değil mi?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)

Yanıtlar:


215

Logits, birçok farklı anlama gelebilecek aşırı yüklenmiş bir terimdir:


Matematikte , Logit olasılıkları ( [0, 1]) R ( (-inf, inf)) ile eşleyen bir fonksiyondur

resim açıklamasını buraya girin

0,5 olasılığı 0 logitine karşılık gelir. Negatif logit 0,5'ten küçük,> 0,5 pozitif olasılıklara karşılık gelir.

ML ise , o olabilir

bir sınıflandırma modelinin ürettiği ham (normalleştirilmemiş) tahminlerin vektörü, bu normalde normalleştirme işlevine geçirilir. Model çok sınıflı bir sınıflandırma sorununu çözüyorsa, günlükler genellikle softmax işlevine girdi olur. Softmax fonksiyonu daha sonra olası her sınıf için bir değer içeren (normalleştirilmiş) olasılıkların bir vektörünü üretir.

Logitler bazen sigmoid fonksiyonunun element yönünden tersine işaret eder.


127
Tensorflow için: Bu Tensörün Softmax tarafından olasılıklarla eşleştirilen miktar olduğunu ima ettiği düşünülen bir isim.
46'da

1
bu softmax'tan önce üslenen şeyle aynı mı? yani softmax(logit) = exp(logit)/Z(logit)o zaman logit = h_NN(x)? yani logit "skor" ile aynı mı?
Charlie Parker

4
Kişisel anlayış, TensorFlow alanında, loglar softmax'a girdi olarak kullanılacak değerlerdir. Bu anlayışa, bu tensorflow öğreticisine dayanarak geldim.
Diansheng

2
Bunun soruyu cevaplayıp yanıtlamadığından emin değilim. Belki de bu yüzden asla kabul edilmedi. Logit işlevinin ne olduğunu anlıyorum, ama aynı zamanda Tensorflow'un neden bu argüman günlüklerini çağırdığını da şaşırtıyor. Tensorflow'un fonksiyonlarındaki parametrelerin birçoğu için aynı atamadır
dleal

1
Basit bir örnek verebilir misiniz? Bu doğru mu? [1, 0.5, 0.5]normalleşme yoluyla olur [0.5, 0.25, 0.25]ve daha sonra yumuşak max [0,]bir sıcak olur [1, 0, 0]? ya da sadece dışarı [1, 0, 0]çıktı neden bir vektör olmalı?
Tina Liu

92

Sadece bu açıklamayı ekleyerek, bu kadar aşağı kaydırılan herkes en azından doğru anlayabilir, çünkü çok fazla yanlış cevap var.

Diansheng'in cevabı ve JakeJ'nin cevabı doğru olsun. Shital Shah'ın gönderdiği
yeni bir cevap daha da iyi ve eksiksiz bir cevaptır.


Evet, istatistiklerde logit matematiksel bir işlev olarak, ancak logitsinir ağları bağlamında kullanılan farklıdır. İstatistik logitburada bir anlam ifade etmiyor.


Hiçbir yerde resmi bir tanım bulamadım, ama logittemelde şu anlama gelir:

Sinir ağının son katmanından çıkan ham tahminler.
1. Bu, argmaxöngörülen sınıfı almak için işlevi uyguladığınız çok tensördür .
2. Bu, softmaxöngörülen sınıfların olasılıklarını elde etmek için işleve beslediğiniz çok tensördür .


Ayrıca, resmi tensorflow web sitesindeki bir öğreticiden :

Logits Katmanı

Sinir ağımızdaki son katman, tahminlerimiz için ham değerleri döndürecek olan logits katmanıdır. Lineer aktivasyonla (varsayılan) 10 nöron (her hedef sınıf 0-9 için bir tane) ile yoğun bir katman oluştururuz:

logits = tf.layers.dense(inputs=dropout, units=10)

Hala kafanız karıştıysa, durum şöyle:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

nerede predicted_class_index_by_rawve predicted_class_index_by_probeşit olacak.

raw_predictionsYukarıdaki kodda yer alan başka bir isimlogit .


Neden gelince logit... hiçbir fikrim yok. Afedersiniz.
[Düzenle: Terimin arkasındaki tarihsel motivasyonlar için bu cevaba bakınız .]


önemsiz şeyler

İsterseniz , işlevden çıkanlara istatistiksel logitolarak uygulayabilirsiniz .probabilitiessoftmax

Belirli bir sınıfın olasılığı ise p,
O zaman o sınıfın log-olasılıklarıdırL = logit(p) .

Ayrıca, bu sınıfın olasılığı p = sigmoid(L), sigmoidfonksiyon kullanılarak geri kazanılabilir .

Ancak günlük oranlarını hesaplamak için çok yararlı değil.


80

Lojit olasılıkları eşleştiren bir fonksiyondur [0, 1]için [-inf, +inf].

Softmax eşleştiren bir işlevdir [-inf, +inf]için [0, 1]sigmoid benzer. Ancak Softmax, değerlerin (çıkış vektörü) toplamını da 1 olarak normalleştirir.

Tensorflow "logit" ile : Numaraları normalleştirmek için bir softmax işlevi uyguladığınız anlamına gelir. İnput_vector / logit normalleştirilmez ve [-inf, inf] 'den ölçeklendirilebilir.

Bu normalleştirme çok sınıflı sınıflandırma problemleri için kullanılır. Ve çok etiketli sınıflandırma problemleri için sigmoid normalizasyonu kullanılır yanitf.nn.sigmoid_cross_entropy_with_logits


10
yani logit "skor" ile aynı
Charlie Parker

1
Yanıtınıza açıkça farklılaşan Logitişlev (istatistikler) ve logitskatman (tensorflow) için bir satır eklemenizi öneririm
AneesAhmed777

62

özet

Derin öğrenme bağlamında logits katmanı, softmax'a (veya diğer normalizasyona) beslenen katman anlamına gelir. Softmax'ın çıktısı sınıflandırma görevi için olasılıklardır ve girdisi logits katmanıdır. Logits katmanı tipik olarak -infinity ila + infinity değerlerini üretir ve softmax katmanı 0 ile 1 arasındaki değerlere dönüştürür.

Tarihsel Bağlam

Bu terim nereden geliyor? 1930'lu ve 40'lı yıllarda, birçok kişi doğrusal regresyonu olasılıkları tahmin etme problemine uyarlamaya çalışıyordu. Bununla birlikte, doğrusal regresyon -infinity'den + infinity çıktısını üretirken, olasılıklar için arzu ettiğimiz çıktı 0 ila 1'dir. Bunu yapmanın bir yolu, 0 ila 1 ila-infinity ila + infinity olasılıklarını bir şekilde haritalamak ve daha sonra her zamanki gibi doğrusal regresyon kullanmaktır. Böyle bir haritalama, 1934 yılında Chester Ittner Bliss tarafından kullanılan kümülatif normal dağılımdır ve "olasılık birimi" için kısaca bu "probit" modelini çağırmıştır. Bununla birlikte, bu işlev, çok sınıflı sınıflandırma için arzu edilen bazı özelliklerden yoksunken, hesaplama açısından pahalıdır. 1944 yılında Joseph Berkson bu fonksiyonu kullandı.log(p/(1-p))Bu eşlemeyi yapmak ve logit olarak adlandırmak, "lojistik birimi" nin kısaltmasıdır. Lojistik regresyon terimi de bundan türemiştir.

Karışıklık

Maalesef, günlük terimler derin öğrenmede kötüye kullanılmaktadır. Saf matematiksel perspektiften logit, yukarıdaki haritalamayı gerçekleştiren bir fonksiyondur . Derin öğrenmede insanlar logit fonksiyonunu besleyen katmanı "logits katmanı" olarak adlandırmaya başladılar. Sonra insanlar logit fonksiyonu ile karışıklık yaratan bu katman "logit" çıkış değerlerini çağırmaya başladı .

Akış Kodu

Ne yazık ki TensorFlow kodu gibi isimlerle karışıklık ekler tf.nn.softmax_cross_entropy_with_logits. Buradaki logitler ne anlama geliyor? Sadece fonksiyonun girişinin yukarıda açıklandığı gibi son nöron tabakasının çıkışı olması gerektiği anlamına gelir. _with_logitsSoneklerdir , gereksiz kafa karıştırıcı ve anlamsız . İşlevler, bu tür çok spesifik bağlamlara bakılmaksızın adlandırılmalıdır çünkü bunlar, diğer birçok alandan türetilen değerler üzerinde gerçekleştirilebilen matematiksel işlemlerdir. Aslında TensorFlow, sparse_softmax_cross_entropyneyse ki _with_logitssonek tutarsızlık yaratarak ve karışıklığa katkıda bulunduklarını unuttukları başka bir işleve sahiptir . Öte yandan PyTorch, işlevini bu tür sonekler olmadan adlandırır.

Referans

Logit / Probit ders slaytları logit anlamak için en iyi kaynak biridir. Ayrıca Wikipedia makalesini yukarıdaki bilgilerden bazılarıyla güncelledim .


31

Kişisel anlayış, TensorFlow alanında, loglar softmax'a girdi olarak kullanılacak değerlerdir. Bu anlayışa, bu tensorflow öğreticisine dayanarak geldim.

https://www.tensorflow.org/tutorials/layers


Logit'in matematikte (özellikle istatistiklerde) bir işlev olduğu doğru olsa da, bunun baktığınız aynı 'logit' olduğunu düşünmüyorum. Ian Goodfellow'un Deep Learning kitabında şunları söyledi:

Σ −1 (x) fonksiyonuna istatistiklerde logit denir, ancak bu terim makine öğreniminde daha nadiren kullanılır. σ −1 (x) lojistik sigmoid fonksiyonunun ters fonksiyonunu ifade eder.

TensorFlow'da, genellikle son katmanın adı olarak görülür. Aurélien Géron'un Scikit-learn ve TensorFLow ile Uygulamalı Makine Öğrenimi kitabının 10. Bölümünde, logitskatmanı açıkça ifade eden bu paragrafla karşılaştım .

softmax aktivasyon fonksiyonundan geçmeden öncelogits sinir ağının çıkışı olduğuna dikkat edin : optimizasyon nedenleriyle softmax hesaplamasını daha sonra ele alacağız.

Yani, softmax'ı tasarımımızın son katmanındaki aktivasyon fonksiyonu olarak kullanmamıza rağmen, hesaplama kolaylığı için logitsayrı olarak çıkarıyoruz . Çünkü birlikte hesaplamak softmaxve cross-entropykaybetmek daha verimlidir . Bunun cross-entropyileri yayılmada kullanılmayan bir maliyet fonksiyonu olduğunu unutmayın .


12

İşte gelecekteki okuyucular için kısa bir cevap. TensorflowVar logitaktivasyon fonksiyonunu uygulamadan bir nöronun çıkış olarak tanımlanır:

logit = w*x + b,

x: giriş, w: ağırlık, b: önyargı. Bu kadar.


Aşağıdakiler bu soru ile ilgisizdir.

Tarih dersleri için diğer cevapları okuyun. Tensorflow'Yaratıcılık' kafa karıştırıcı adlandırma kuralına şapka çıkarır . İçinde PyTorchsadece bir tane var CrossEntropyLossve aktif olmayan çıkışları kabul ediyor. Konvolüsyonlar, matris çarpımları ve aktivasyonları aynı seviyedeki işlemlerdir. Tasarım çok daha modüler ve daha az kafa karıştırıcı. Bu benim anahtarlamalı nedenlerinden biridir Tensorflowiçin PyTorch.


8

( FOMO sapiens).

Matematik Logit işlevini kontrol ederseniz, gerçek alanı [0,1]aralıktan sonsuza dönüştürür [-inf, inf].

Sigmoid ve softmax tam tersini yapacak. [-inf, inf]Gerçek alanı gerçek uzaya dönüştürürler [0, 1].

Bu nedenle, makine öğreniminde sigmoid ve softmax fonksiyonundan önce logit kullanabiliriz (eşleştiklerinden beri).

Ve bu yüzden makine öğreniminde sigmoid veya softmax fonksiyonunun önüne geçen her şeyi logit "olarak adlandırabiliriz" .

İşte bu terimi kullanan J. Hinton videosu .

PS. Sadece terimi kontrol etmek için videoyu izlemenizi tavsiye etmiyorum.


5

Temel olarak, yalnızca ilgilendiğimiz sınıf sayısına başvurmak için ezilmeden önce ağdan alabileceğiniz en dolu modeldir. Bazı araştırmacıların ne kadar derin bir derinliğe bağlı olarak sığ bir sinir ağı eğitmek için bunları nasıl kullandıklarına bakın. ağ öğrendi: https://arxiv.org/pdf/1312.6184.pdf

Bir konuyu ayrıntılı olarak öğrenirken, çok sayıda küçük noktayı öğreneceksiniz, ancak daha sonra bir öğrenciye öğretirken, onu en basit duruma sıkıştırmaya çalışacaksınız. Öğrenci şimdi öğretmeye çalışsaydı, oldukça zor olurdu, ancak dili kullanmak için yeterince iyi tarif edebilecekti.


1

Logit (/ ˈloʊdʒɪt / LOH-jit) işlevi, özellikle istatistiklerde matematikte kullanılan sigmoidal "lojistik" işlevinin veya lojistik dönüşümün tersidir. Fonksiyonun değişkeni p olasılığını temsil ettiğinde, logit fonksiyonu log-odds veya p / (1 - p) oranlarının logaritmasını verir.

Buraya bakın: https://en.wikipedia.org/wiki/Logit


4
Bu istatistik / matematikte. Burada logitfarklı bir anlamı olan makine öğrenmesinden bahsediyoruz . Bkz bu , bu , bu .
AneesAhmed777

1

logits

Bir sınıflandırma modelinin ürettiği ham (normalleştirilmemiş) tahminlerin vektörü, bu normalde normalleştirme işlevine geçirilir. Model çok sınıflı bir sınıflandırma sorununu çözüyorsa, günlükler genellikle softmax işlevine girdi olur. Softmax fonksiyonu daha sonra olası her sınıf için bir değer içeren (normalleştirilmiş) olasılıkların bir vektörünü üretir.

Ek olarak, loglar bazen sigmoid fonksiyonunun element yönünden tersine karşılık gelir. Daha fazla bilgi için, bkz. Tf.nn.sigmoid_cross_entropy_with_logits.

resmi tensorflow belgeleri


-3

Logitler genellikle Tensorflow'daki çıktı katmanının Z işlevinin değeridir.


Mutlaka değil, diğer cevaplara bakın.
miktar
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.