Sinir Ağları her zaman birleşmeli mi?


16

Giriş

Adım bir

Standart bir backpropegating sinir ağı yazdım ve test etmek için XOR haritasını çıkarmaya karar verdim.

2-2-1 ağdır (tanh aktivasyon fonksiyonu ile)

X1  M1
        O1
X2  M2

B1  B2

Test amacıyla, üst orta nöronu (M1) bir AND geçidi ve alt nöronu (M2) bir OR geçidi olarak ayarladım (her ikisi de doğruysa çıkış 1 ve yanlışsa -1).

Şimdi, M1-O1 bağlantısını manuel olarak -.5, M2-O1'i 1 ve B2'yi -.75 olarak ayarladım.

Eğer M1 = 1 ve M2 = 1 ise, toplam (-0.5 +1 -0.75 = -.25) tanh (0.25) = -0.24

M1 = -1 ve M2 = 1 ise, toplam ((-0.5) * (- 1) +1 -0.75 = .75) tanh (0.75) = 0.63

M1 = -1 ve M2 = -1 ise, toplam ((-0.5) * (- 1) -1 -0.75 = -1.25) tanh (1.25) = -0.8

Bu, "ilk yineleme" için nispeten iyi bir sonuçtur.

İkinci adım

Daha sonra bu ağırlıkları biraz değiştirmeye devam ettim ve daha sonra hata yayılım algoritmasını (gradyan inişine bağlı olarak) kullanarak eğittim. Bu aşamada, girdi ve orta nöronlar arasındaki ağırlıkları olduğu gibi bırakıyorum ve sadece orta (ve bias) ve çıktı arasındaki ağırlıkları değiştiriyorum.

Test için ağırlıkları ve .5 .4 .3 olarak ayarladım (sırasıyla M1, M2 ve önyargı için)

Ancak burada sorunları yaşamaya başladım.


Benim sorum

Öğrenme oranımı 0,2 olarak ayarladım ve programın eğitim verileri (ABA ^ B) ile 10000 yineleme veya daha fazla yinelemesine izin verdim.

Çoğu zaman, ağırlıklar iyi bir sonuç verir. Bununla birlikte, zaman zaman, bu ağırlıklar (diyelim) 1.5, 5.7 ve .9'a yakınlaşır ve bu da +1 çıktısı (çift) {1, 1} girişiyle sonuçlanır (sonuç -1 olduğunda).

Hiç çözümü olmayan bir çözümü olan nispeten basit bir YSA için veya uygulamada bir hata var mı?

Yanıtlar:


13

("Hata yayılımı" ile "hata geri yayılımı" dediğim şeyi kastettiğimi varsayıyorum.)

Neural Networks'ün 231 sayfasında (Haykin tarafından), geri yayılmanın her zaman yakınlaştığını belirtiyor, ancak oran (sözleriyle) "dayanılmaz derecede yavaş" olabilir.

Ama sorduğunuz şey, algoritmanın her zaman yakınsaması değil, her zaman en uygun cevaba yakınsamasıdır . Ne yazık ki olmayacak. Sizinki gibi basit durumlarda bile, küresel minima olmayan yerel minimaların olması tamamen mümkündür.

Yerel ekstrema ile başa çıkmak optimizasyonda son derece önemli bir konudur ve bununla nasıl başa çıkılacağı konusunda çok sayıda tavsiye bulabilirsiniz. En yaygın olanlarından biri yaptığınız gibi geliyor: rastgele yeniden başlıyor (yani her biri rastgele bir yerden başlayarak algoritmayı birkaç kez çalıştırın).

Kodunuzda bir hata olup olmadığını anlamak için, hata terimini yazdırır ve her yinelemede azaldığını doğrularım. Eğer öyleyse, muhtemelen sadece yerel bir minimaya vuruyorsunuz.


Tüm ağırlıklar artar (OR nöronuna ağırlık daha hızlı artar), bu da girdi {1,0}, {0,1}, {0,0} olduğunda hatayı en aza indirir ancak {1,1} olduğunda hatayı en üst düzeye çıkarır. Bu, toplu öğrenme üzerinden çevrimiçi öğrenme ile ilgili bir sorun mu?

@Shmuel: hem çevrimiçi hem de toplu iş degrade yönünde gidecek. Bu degrade yanlış yönü gösteriyorsa, ikisi de yanlış yöne gider. İlgileniyorsanız , Hill Climbing'deki Wikipedia sayfasının bunu aşmanın bazı yolları vardır.
Xodarap

6

Girdi ve gizli birimler arasındaki ağırlıkları sabitlediyseniz ve gizli olanı eğitim sırasında yalnızca çıktı ağırlıklarına değiştirdiyseniz, yerel bir minimum olmaz. Gizli ağırlıklara sabit girdi ile çözdüğünüz optimizasyon problemi lojistik regresyona benzer ancak sigmoid fonksiyon yerine tanh ile. Ne olursa olsun problem dışbükeydir ve sadece bir tane küresel minima olmalıdır.

Yerel minimumlar sorununuza neden olmadığından, türevlerinizin sayısal olarak tahmin edilmesini ve ardından bunları hesapladığınız değerlerle karşılaştırmanızı öneririm. Bunu nasıl yapacağınızdan emin değilseniz, Standford ULFDL öğreticisinin hoş bir genel görünümü vardır.

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.