Evrişimli Sinir Ağlarında filtreler ve aktivasyon haritaları nasıl bağlanır?


11

Belirli bir katmandaki etkinleştirme haritaları, o katmanın filtrelerine nasıl bağlanır? Filtre ve aktivasyon haritası arasında kıvrımlı bir işlemin nasıl yapılacağını sormuyorum, bu iki bağlantının türünü soruyorum.

Örneğin, tam bağlantı yapmak istediğinizi varsayalım. Belirli bir katmanda f sayıda filtre ve n adet etkinleştirme haritası var. Bir sonraki katmandaki f * n etkinleştirme eşlemelerinin sayısını alırsınız ve her yeni katmanla etkinleştirme eşlemelerinin sayısı artar. Ben böyle yapıldığını varsayıyorum.

Veya her filtrenin yalnızca bir etkinleştirme haritasına bağlı olduğunu söyleyebilirsiniz. Bu durumda, filtre sayısı etkinleştirme haritalarının sayısına eşit olur ve her katmanın aynı sayıda filtre ve etkinleştirme haritası olur. Bu ağımın şu anki mimarisi ve iyi öğreniyor gibi görünüyor.

Kafa karışıklığımın ana kaynağı, çevrimiçi gördüğüm konnets şemalarına bakmak. Bazılarında filtreler ve aktivasyon haritaları arasında "tam bağlantı" vardır, bunun gibi - resim açıklamasını buraya girin İlk katmanda 4 aktivasyon haritası ve muhtemelen 2 filtre bulunur. Her harita, her filtre ile kıvrılır ve bir sonraki katmanda 8 harita elde edilir. Harika görünüyor.

Ama burada benim için anlamlı olmayan bir mimarimiz var - resim açıklamasını buraya girin Birinci kattaki 6 haritadan 2. kattaki 16 haritaya nasıl geçiyorsunuz? 6'dan 16 harita almanın yollarını düşünebilirim, ancak bunu yapmak anlamlı olmaz.

Yanıtlar:


10

Gönderdiğiniz ikinci evrişimli sinir ağı (CNN) mimarisi bu makaleden alınmıştır . Makalede yazarlar, S2 ve C3 katmanları arasında ne olduğuna dair bir açıklama yapmaktadır. Ancak açıklamaları çok açık değil. Bu CNN mimarisinin 'standart' olmadığını söyleyebilirim ve CNN'ler için ilk örnek olarak oldukça kafa karıştırıcı olabilir.

CNN mimarisi

28×285×5M×MN×NMN(MN+1)×(MN+1)

S2 katmanı ile C3 katmanı arasında olan şu. C3 katmanında, S2 katmanındaki 6 özellik haritasından üretilen 16 özellik haritası vardır. C3 katmanındaki filtre sayısı gerçekten açık değildir. Aslında, sadece mimari şemadan, bu 16 özellik haritasını üreten tam filtre sayısının ne olduğuna karar verilemez. Makalenin yazarları aşağıdaki tabloyu sunmaktadır (sayfa 8):

S2 ve C3 katmanları arasındaki bağlantılar

Tabloda aşağıdaki açıklamaları verilmektedir (sayfa 7'nin altında):

5×5

Tabloda yazarlar, C3 katmanındaki her özellik haritasının 3 veya daha fazla özellik haritasını birleştirerek oluşturulduğunu gösterir (sayfa 8):

İlk altı C3 özellik haritası, S2'deki üç özellik haritasının her bitişik alt kümesinden girdi alır. Sonraki altı, dördün her bitişik alt kümesinden girdi alır. Sonraki üçü, dörtlü süreksiz alt kümelerden girdi alır. Son olarak, sonuncusu tüm S2 özellik haritalarından girdi alır.

Şimdi, C3 katmanında kaç filtre var? Ne yazık ki, bunu açıklamıyorlar. En basit iki olasılık:

  1. Her C3 özellik haritası için S2 özellik haritası başına bir filtre vardır, yani aynı C3 özellik haritası ile ilişkili S2 özellik haritaları arasında filtre paylaşımı yoktur.
  2. C3 özellik haritası başına, birleştirilmiş S2 katmanının (3 veya daha fazla) özellik haritası boyunca paylaşılan bir filtre vardır.

Her iki durumda da, 'birleştirmek' S2 özellik harita grubu başına evrişim sonuçlarının üretilen C3 özellik haritalarıyla birleştirilmesi gerektiği anlamına gelir. Yazarlar bunun nasıl yapıldığını belirtmezler, ancak ekleme yaygın bir seçimdir (örneğin, bu sayfanın ortasına yakın olan hareketli gif'e bakın .

Yazarlar, mimariyi deşifre etmemize yardımcı olabilecek bazı ek bilgiler veriyorlar. 'C3 katmanının 1.516 eğitilebilir parametresi var' derler (sayfa 8). Bu bilgileri yukarıdaki (1) ve (2) vakaları arasında karar vermek için kullanabiliriz.

(6x3)+(9x4)+(1x6)=60(14-10+1)x(14-10+1)=5x55x5x60=1,5001,500+16=1,516(5x5x16)+16=416

Bu nedenle, yukarıdaki Tablo I'e tekrar bakarsak , her S2 özellik haritası ile ilişkili 10 farklı C3 filtresi vardır (bu nedenle toplamda 60 ayrı filtre).

Yazarlar bu tür bir seçimi açıklar:

Farklı katman haritaları [C3 katmanında] farklı girdi setleri elde ettikleri için farklı (umarım tamamlayıcı) özellikler çıkarmaya zorlanırlar.

Umarım bu durum netleşir.


3

@ İşaretinden önceki değerin, özellik eşleme miktarını değil, filtre miktarını gösterdiğini doğrudur (ilk kıvrımlı katmanlar için bu değerler çakışsa da).

Son sorunuzla ilgili olarak: evet, l katmanındaki her özellik haritasının l + 1 katmanındaki her filtreye bağlı olması mantıklıdır. Bunun tek nedeni, özellik haritalarını birleştirmek için daha fazla yolu (yolu) olduğu için ağın ifade gücünü büyük ölçüde arttırmasıdır, böylece giriş görüntüsündeki her şeyi daha iyi ayırt etmesine izin verir.

Sonunda sinir ağı becerilerinizi kendiniz uygulayarak uygulayıp uygulamadığınızı bilmiyorum, ama sadece belirli bir göreve evrişimsel ağları uygulamak istiyorsanız Theano, Brainstorm, Caffe gibi birkaç mükemmel sinir ağı kütüphanesi var.


Bence yapacağım şey onları karşılaştırmak için her iki yolu da karşılaştırmak. Tamamen bağlı olmayan versiyon ile sınıflandırmasını daha hızlı eğitir ve hesaplar. Ancak doğruluk daha önemlidir. Tam olarak bağlı olmayan sürümde, her filtre daha genel bir görev yerine çok daha spesifik bir göreve yerelleştirilir. Tamamen bağlı sürümde, filtre, tek bir özellik türü yerine önceki filtrelerin tümü için en iyi olana göre güncellenir. C # kullanarak ağımı% 100 sıfırdan yapıyorum. kesinlikle bir şeyler yapmanın kolay yolu değil ... ama bana derinlemesine şeyler öğretti
Frobot

Bu bir ses planı gibi geliyor. İyi şanslar!
Sjoerd
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.