Sinir Ağı modellemesi etkili bir şekilde nasıl yapılır?


13

Gözlem sayısının ve değişken sayısının oranı ne olmalıdır? Sinir ağı modelinde aşırı sığdırmayı nasıl tespit edebilir ve aşırı sığmayı önlemenin yolları nelerdir? Sinir Ağı ile sınıflandırma yapmak istiyorsam, sınıfların eşit sıklıkta olması gerekir mi? Lütfen bana yardım et.


1
Gerçekten NN'ye ihtiyacınız var mı? Bu yöntem oldukça eski kabul edilir (kısmen sorularınızı cevaplamak çok zor olduğu için).

1
@mbq: belki de bu ayrı bir soru olmalı, ancak Sinir Ağları'nın eskimiş olduğunu düşündüğünüz ifadesini genişletebilir misiniz? (ve kim tarafından?)
naught101

1
@ naught101 Bu 2010'dan bir yorum ... Bugünlerde ne yazık ki bu çılgınlıktan bir rönesansımız var, bu yüzden

1
@mbq: bu sorumu cevaplamıyor. Ama belki de öyle: stackoverflow.com/questions/683124/neural-networks-obsolete
naught101

Yanıtlar:


25

Vereceğim tavsiye şöyledir:

  1. Özellikle çok sayıda özelliğiniz ve çok fazla gözleminiz yoksa, sinir ağlarına gitmeden önce doğrusal modellerin (örneğin lojistik regresyon) olanaklarını tüketin. Birçok problem için bir Sinir Ağı basit doğrusal sınıflandırıcıları gerçekleştirmez ve probleminizin bu kategoride olup olmadığını öğrenmenin tek yolu denemek ve görmek.

  2. Önce çekirdek yöntemlerini (örneğin, Destek Vektör Makineleri (SVM), çekirdek lojistik regresyonu), Gauss süreç modellerini inceleyin. Her iki durumda da, aşırı montaj, az sayıda hiper parametrenin ayarlanmasıyla etkili bir şekilde kontrol edilir. Çekirdek yöntemler için bu genellikle çapraz validasyon ile gerçekleştirilir, Gaussian süreç modelleri için bu marjinal olabilirliği maksimuma çıkararak (model için Bayes "delil" olarak da bilinir) gerçekleştirilir. Bu yöntemleri kullanarak sinir ağlarından daha makul bir model elde etmenin çok daha kolay olduğunu gördüm, çünkü aşırı uydurmayı önleme araçları çok daha basittir.

  3. Gerçekten bir sinir ağı kullanmak istiyorsanız, ileri beslemeli Çok Katmanlı Perceptron (MLP) tipi bir ağ yerine (düzenli) radyal tabanlı bir işlev ağı ile başlayın.

  4. Bir MLP kullanıyorsanız, normalleştirme kullanın. Bunu yaparsanız, gizli birimlerin sayısını optimize etme gibi mimari seçimlerine karşı daha az duyarlı olacaktır. Bunun yerine, tek yapmanız gereken normalleştirme parametresi için iyi bir değer seçmektir. MacKay'ın Bayesci "kanıt çerçevesi", düzenleme parametresini ayarlamak için iyi bir yöntem sağlar. Düzenlemeyi kullanırsanız, gözlem sayısı ve değişken sayısı çok daha az sorun haline gelir.

Aşırı uydurmayı tespit etmek için genelleme performansını test etmek için çapraz doğrulamayı yapmanız yeterlidir.

Eşit frekanslara sahip sınıflara gelince, hatırlanması gereken şey, dengeli bir eğitim seti ile bir modeli eğitirseniz, ancak sınıflar operasyonel verilerde dengeli değilse, modelin azınlık sınıfını az tahmin etmesi muhtemeldir. Lojistik regresyon veya sinir ağı gibi olasılıksal bir sınıflandırıcı kullanırsanız, antrenmandan sonra bunu hesaba katmak için tahmini olasılıkları her zaman düzeltebilirsiniz. Veri kümeniz çok dengesizse, pozitif ve negatif sınıflardan desenlerin farklı ağırlıklandırılmasını öneririm, çapraz doğrulama ile seçilen ağırlıklandırma faktörleri.

Bununla birlikte, sınıflar çok dengesiz olduğunda, normalde yanlış negatif ve yanlış pozitif hataların fark maliyetleri vardır (örneğin, tıbbi tarama testlerinde yanlış negatif, yanlış pozitiften çok daha kötüdür). Çoğu zaman tek yapmanız gereken, yanlış sınıflandırma maliyetlerini ağı eğitmek için kullanılan hata işlevine dahil etmektir.

MATLAB kullanıcısıysanız (benim gibi) NETLAB yazılımını (Ian Nabney ve Chris Bishop) veya Rasmussen ve Williams'ın Gaussian Machine for Machine Learning kitabıyla birlikte gelen yazılımı şiddetle tavsiye ederim. Sinir ağlarında başlayan herkes için Chris Bishop'un "Örüntü tanıma için sinir ağları" kitabını şiddetle tavsiye ederim. Parlak bir kitaptır ve malzemeyi büyük bir netlikle ve ne yaptığınızı gerçekten anlamak için gereken minimum matematik seviyesiyle kapsar ve çoğu NETLAB yazılımında (Octave altında da çalışabilir) uygulanır.

HTH

PS Bir sinir ağı ile modellemenin en iyi yolu muhtemelen Radford Neal tarafından geliştirilen Hybrid Monte Carlo'ya (HMC) dayanan Bayesci bir yaklaşım kullanmaktır. Genel olarak, bazı parametreleri denediğinizde ve optimize ettiğinizde modellemeye başlar ve aşırı uydurma elde edersiniz. En iyi çözüm asla hiçbir şeyi optimize etmemek ve bunun yerine parametreler üzerinde marjinalleştirmektir (entegre etmektir). Ne yazık ki bu entegrasyon analitik olarak gerçekleştirilemez, bu nedenle bunun yerine örnekleme tabanlı yaklaşımlar kullanmanız gerekir. Ancak, bu (a) hesaplama açısından pahalı ve (b) biraz "siyah sanat" tır ve derin bir anlayış ve deneyim gerektirir.

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.