Sinir ağını sıralı verileri çıkarmak için nasıl kurarım?


20

Çıktı değişkeni sıralı olduğu bir şey tahmin etmek için ayarlanmış bir sinir ağı var. Aşağıda üç olası çıkış A <B <C kullanarak açıklayacağım.

Kategorik verileri çıkarmak için bir sinir ağının nasıl kullanılacağı oldukça açıktır: çıktı, son (genellikle tamamen bağlı) katmanın sadece softmax'ıdır, kategori başına birdir ve tahmin edilen kategori en büyük çıktı değerine sahip olanıdır (bu birçok popüler modelde varsayılan). Sıralı değerler için aynı kurulumu kullanıyorum. Bununla birlikte, bu durumda çıkışlar çoğu zaman mantıklı değildir, örneğin A ve C için ağ çıkışları yüksektir, ancak B düşüktür: bu sıra değerleri için mantıklı değildir.

Bunun için bir fikrim var, bu da çıktıları A için 1 0 0, B için 1 1 0 ve C için 1 1 1 ile karşılaştırmaya dayalı olarak hesaplamaktır. Tam eşikler daha sonra başka bir sınıflandırıcı (örn. Bayesian) kullanılarak ayarlanabilir. ) ancak bu, belirli bir aralık ölçeği reçetelemeden, girdilerin sıralanması ile ilgili temel fikri ele almaktadır.

Bu sorunu çözmenin standart yolu nedir? Farklı yaklaşımların artılarını ve eksilerini açıklayan herhangi bir araştırma veya referans var mı?


1
Google'da "sıralı lojistik regresyon" için pek çok ilginç isabet aldım; örneğin, bu yazı
shadowtalker

@ ssdecontrol: İlginç. Denedim; sonuçlar, en yüksek değere sahip bir çıktıyı seçmekten daha iyi, ancak diğer yöntemlerden (saf Bayesian, vb.) biraz daha kötüdür. Bu yararlıdır, ancak ağın eğitilmesine yardımcı olmaz, sadece gerçekten sonra sonuçları biraz geliştirir ... veya en azından ağın eğitilmesine nasıl yardımcı olacağını göremiyorum.
Alex I

hangi "o" denediniz? Benim tek noktam, arama motorunun beklediğinizden daha yararlı olabileceğidir
shadowtalker

Ayrıca "örneğin A ve C için ağ çıkışları yüksek ama B düşük: Bu mantıklı değil" ile ne demek istediğinizi anladığımdan emin değilim. Yani çok fazla As ve C ama birkaç Bs tahmin ediyorsun? Bunu düşünmek için önemli veya alana özgü bir nedeniniz olmadıkça, bunun neden mantıksız olması gerektiğini anlamıyorum
shadowtalker

Ayrıca "1 1 0" gibi bir çıktıya nasıl sahip olabileceğinizi de bilmiyorum. Sanırım burada terminoloji ile ilgili bazı karışıklıklar var. Kümülatif sıralı sonuçları açıklıyor musunuz ? Bir kümülatif logit modelinde olduğu gibi?
shadowtalker

Yanıtlar:


15

Çoğu insanın yaptığı şeyin sıralı sınıflandırmayı genel bir çok sınıflı sınıflandırma olarak ele almak olduğuna inanıyorum. Yani, eğer sınıfları varsa, çıkışları olacak ve kayıp olarak sadece sigmoid aktivasyon fonksiyonu (açıkça softmax değil) ve ikili çapraz entropi kullanacaklar.KK

Ancak bazı insanlar sıralı sınıflarınız için akıllı bir kodlama icat etmeyi başardılar (bu yığın akışı yanıtına bakın ). Bir çeşit sıcak kodlama,

  • sınıf 1 [0 0 0 0 ...] olarak temsil edilir

  • sınıf 2 [1 0 0 0 ...] olarak temsil edilir

  • sınıf 3 [1 1 0 0 ...] olarak temsil edilir

yani her nöron, olasılığını tahmin etmektedir . Yine de aktivasyon fonksiyonu olarak bir sigmoid kullanmanız gerekiyor, ancak bunun ağın sınıflar arasındaki bazı sürekliliği anlamasına yardımcı olduğunu düşünüyorum, bilmiyorum. Daha sonra, ikili çıktıyı sınıflarınıza dönüştürmek için bir post-processing ( ) yaparsınız .P(y^<k)np.sum

Bu strateji Frank ve Hall topluluğuna benziyor ve bence bu ilk yayın .


Bu yaklaşım çok daha çekici görünüyor. Bunu bir sınıflandırma problemine dönüştürmek için öngörülen modları kullanmanın iyi bir fikir olmadığını fark etmek önemlidir. Öngörülen kümülatif olasılıklar, tahmin edilen bireysel olasılıklara dönüştürülebilir ve bu nedenle, nihai karar vermek için fayda fonksiyonu, yardımcı programlar bilinince daha sonra eklenebilir. Bkz. Fharrell.com/post/classification .
Frank Harrell

1
@RicardoCruz - Hmm, önerdiğim gibi görünüyor: "A için 1 0 0, B için 1 1 0 ve C için 1 1 1". Bunun işe yaradığını bilmek güzel! Ayrıca vay bu 2007'den bir kağıttı, bu fikir uzun zamandır var
Alex I

Evet, o kağıdı bulduğumda kendime şaşırdım!
Ricardo Cruz

Not: "Sıradan Regresyona Bir Neurel Ağ Yaklaşımı" nda belirtildiği gibi: ... ... çıkış düğümleri için bağımsız sigmoid işlevlerinin kullanılması, monotonik ilişkiyi garanti etmez (o1> = o2> = ....> = oK). gerekli değil, tahminlerde bulunmak isteniyor. " Bu nedenle, tahmin zamanında sadece bir "np.sum" gerçekleştirmek en iyi yöntem değildir.
sccrthlt

1
Yukarıdaki yorumuma düzenle: Sinir ağının çıkışlarında "np.sum" gerçekleştirmek yanıltıcıdır. Çıkış vektörü [0 1 0 1 0] olduğunda aşağıdaki durum ortaya çıkabilir. Bu vektör üzerinde bir özetleme yapmak, aslında sinir ağı emin olmadığında 2 sınıf tahmini üretecektir.
sccrthlt
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.