[Bu soru aynı zamanda yığın taşmasına da yollandı ]
Kısaca soru
Konvolüsyonel sinir ağları üzerinde çalışıyorum ve bu ağların her giriş nöronuna (piksel / parametre) eşit şekilde davranmadığına inanıyorum. Bazı giriş görüntülerine evrişim uygulayan derin bir ağa (birçok katman) sahip olduğumuzu hayal edin. Görüntünün "ortasındaki" nöronların, daha derin katman nöronlarına karşı birçok benzersiz yolu vardır; bu, orta nöronlardaki küçük bir değişimin, çıktı üzerinde güçlü bir etkiye sahip olduğu anlamına gelir. Bununla birlikte, görüntünün kenarındaki nöronlar, bilgilerinin grafik boyunca aktığı yalnızca yol (veya tam olarak uygulanmasına bağlı olarak, sırasına göre ) yollara sahiptir. Bunların "az temsil" olduğu görülüyor.1
Kenar nöronlarının bu ayırımcılığı , ağın derinliği (katman sayısı) ile üssel olarak ölçeklendiğinden, bu konuda endişeliyim . Maks-toplayıcı bir tabaka eklemek bile üstel artışı durduramaz, sadece tam bir bağlantı tüm nöronları eşit seviyeye getirir. Yine de mantığımın doğru olduğuna ikna olmadım, bu yüzden sorum şu:
- Bu etkinin evrişimli ağlarda yer alması doğru muyum?
- Bununla ilgili herhangi bir teori var mı, literatürde hiç bahsedilmiş mi?
- Bu etkinin üstesinden gelmenin yolları var mı?
Çünkü bunun yeterli bilgi verip vermediğinden emin değilim, sorun bildirimi ve bunun neden bir endişe olduğuna inanıyorum.
Daha ayrıntılı açıklama
Bir görüntüyü girdi olarak alan derin bir sinir ağımız olduğunu hayal edin. Evrişim penceresini her seferinde 4 piksel değiştirdiğimiz resmin üzerine piksel bir evrişim filtresi uyguladığımızı varsayın . Bu, girdideki her nöronun aktivasyonunu 2. katmandaki 16 x 16 = 265 nöronlara gönderdiği anlamına gelir . Bu nöronların her biri, aktivasyonlarını başka bir 265'e gönderebilir, böylece en üst nöronumuz 265 2 çıkış nöronlarında vb. Temsil edilir .
Bununla birlikte, bu, kenarlardaki nöronlar için doğru değildir: bunlar sadece az sayıda evrişim pencerelerinde temsil edilebilir, bu yüzden onların (sadece sırasını) aktive etmelerine neden olabilir sonraki katmandaki 1 nöronu. Kenarlar boyunca yansıtma gibi hileler kullanmak buna yardımcı olmaz: yansıtılacak olan ikinci katman nöronları hala kenarlardadır, yani ikinci katman nöronlarının yeterince temsil edilmeyeceği anlamına gelir (bu nedenle bizim kenar nöronlarımız da). Görülebileceği gibi, bu tutarsızlık kat sayısı ile katlanarak ölçeklenir.
Sorunu görselleştirmek için burada bulunan bir resim yarattım, burada bulunabilir (yazıya kendi resimlerini dahil etme yetkim yok). Bu ağ boyutlu bir evrişim penceresine sahiptir . Nöronların yanındaki sayılar, en derin nörona giden yol sayısını gösterir. Görüntü Pascal'ın Üçgenini andırıyor .
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
Bu neden bir problem?
Bu etki ilk bakışta sorun gibi görünmüyor: Prensipte, ağırlıklar otomatik olarak ağın işini yapacak şekilde ayarlanmalıdır. Dahası, bir görüntünün kenarları, görüntü tanımada zaten o kadar önemli değildir. Bu etki, günlük görüntü tanıma testlerinde farkedilmeyebilir, ancak iki nedenden ötürü beni hala ilgilendirir: 1. diğer uygulamalara genelleme ve 2. çok derin ağlarda ortaya çıkan problemler .
1. Konuşma veya ses tanıma gibi diğer uygulamalar olabilir, burada en ortadaki nöronların en önemlisi olduğu doğru değildir. Konvolüsyon uygulamak bu alanda sıklıkla yapılır, ancak ilgilendiğim etkiyi belirten hiçbir makale bulamadım.
Şimdi tüm nöronları az miktarda rahatsız ettiğimizi hayal edin. Merkezi nöronlar, çıkışın kenar nöronlara kıyasla birkaç büyüklük sırasına göre daha güçlü değişmesine neden olur. Genel uygulamalar ve çok derin ağlar için sorunumun etrafındaki yolların bulunması gerektiğine inanıyorum?