Konvolüsyonel sinir ağları: Merkezi nöronlar çıktıda aşırı temsil edilmiyor mu?


30

[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.111

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 .64x64416x16=26522652652

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.1

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 .3

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.

1026510

Ş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?


8
Sorunuza tam olarak cevap veremiyorum, ancak bu makaleyi buldum: cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf , sorununuzu giderir. Farklı çözümler hakkında konuşurlar, 1) girişlerin kenarlarını sıfırlarla doldurma, 2) rastgele bağlanmış bileşenlere ekleme, veya 3) kenarları kaybetmeden sabitleme ve ilerletme. Son zamanlarda aynı sorunu merak ediyordum ve sorunuzu buldum. Hala o makalenin ayrıntılarına giriyorum. Umarım yardımcı olur.
nfmcclure

Teşekkürler, tam olarak aradığım şey buydu! Bu etki, 2 kat kadar az fark edilir. Bu TL için, tüm makaleyi DR'lemek: 1) (sıfır doldurma) ve 2) (rastgele global bağlantı) kombinasyonunun kullanılması en iyi çözüm olarak bulundu.
Koen


Merak ediyorum, örtüşmeyen bir ofset kullanmak yeterli değil mi? Bu nedenle, örneğinizde 64x64 yamalar var ve evrişim uygularken her seferinde 64 piksel girişinizi taşıyorsunuz. ('vardiyanız' benim 'kaygımdır'). Sanırım, sıfır doldurma yapmakla aynı şey mi?
Renthal

1
Bir süredir cevap vermediğim için üzgünüm, artık NN üzerinde çalışmıyorum. Ancak, daha büyük amacımın neler olup bittiğini (hala anlamadığım) daha iyi anlamak olduğunu fark etmeme rağmen, soruları cevaplayabileceğimi düşünüyorum . 1) Bu etki gerçekten gerçekleşti gibi görünüyor. 2) Yukarıda verilen makale onu açıklar ve 3) ayrıca üstesinden gelmenin yollarını da araştırır. Renthal'e: Üst üste binmeyen yamalar (ofset = dönüşüm büyüklüğü seçimi) benim sorunumun üstesinden gelmelidir, ancak insanlar daha iyi çalışmak için genellikle üst üste binen yamaları bulurlar. EngrStudent için, Üzgünüm, Bootstrap Resampling ile aşina değilim.
Koen,

Yanıtlar:


4

Hiyerarşik modellerde seyrek temsiller bekleniyor. Muhtemelen, keşfettiğiniz şey, derin öğrenme modellerinin hiyerarşik yapısına özgü bir problemdir. Özellikle bellek araştırmalarında “seyrek temsiller” üzerine epeyce bilimsel makale bulacaksınız.

Görsel kortekste "reseptör alanları" hakkında okumaktan faydalanacağınızı düşünüyorum. Sadece memeli beyninde ON ve OFF hücreleri değil, aynı zamanda hem ON hem de OFF sırasında ateşleyen RF hücreleri de vardır. Belki de kenar / ihtiyat sorunu, mevcut sinirbilimi, özellikle hayvan modellerinde görmeye yansıtacak şekilde model güncellenerek çözülebilir.


3

Konvolüsyon sadece görüntü piksellerinde çalışıyorsa bu sorunu çözüyorsunuz, ancak görüntüleri (genellikle tavsiye edildiği gibi) sıfırlarsanız sorun yok oluyor . Bu, evrişimin filtreyi her piksele aynı sayıda uygulayabilmesini sağlar.


1
Henüz ikna olmadım. Sıfır doldurma, yalnızca biri doldurmadan bulduğu "orta" piksellerin etrafında daha fazla çıktı pikseli oluşturur. "Merkez" piksellerinin değerleri, hangi sıfır-dolgusu kullanılsa da, tamamen aynıdır.
Koen

1
nxnn-1

Bu sayfanın ortasındaki
jon_simon
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.