Evrişimli Ağlarda önyargı hakkında soru


11

CNN için kaç ağırlık ve önyargı gerektiğini anlamaya çalışıyorum.

Diyelim ki (3, 32, 32) bir resmim var ve (32, 5, 5) bir filtre uygulamak istiyorum. Her özellik haritası için 5x5 ağırlığım var, bu yüzden 3 x (5x5) x 32 parametrem olmalı. Şimdi önyargı eklemem gerekiyor. Sadece (3 x (5x5) + 1) x 32 parametrelerim olduğuna inanıyorum, bu yüzden önyargı tüm renklerde (RGB) aynı mı?

Bu doğru mu? Farklı ağırlıklar kullanırken her görüntü için aynı önyargıyı derinliğinde (bu durumda 3) tutar mıyım? Neden?

Yanıtlar:


6

Önyargı sanal nöron başına çalışır, bu nedenle tek bir çıkışın olduğu birden çok yanlılık girişine sahip olmanın bir değeri yoktur - bu, yalnızca farklı yanlılık ağırlıklarının tek bir yanlılığa eklenmesi anlamına gelir.

İlk gizli katmanın çıktısı olan özellik haritalarında renkler artık ayrı tutulmaz *. Etkili her özellik haritası, bir sonraki katmanda bir "kanal" dır, ancak bunlar genellikle girdinin birleştirilmiş kanallarla görselleştirildiği yerlerde ayrı ayrı görselleştirilir. Bunu düşünmenin bir başka yolu, orijinal görüntüdeki ayrı RGB kanallarının girişte 3 "özellik haritası" olmasıdır.

Önceki katmanda kaç kanalın veya özelliğin olduğu önemli değildir, sonraki katmanda bulunan her özellik haritasının çıktısı bu haritadaki tek bir değerdir. Bir çıkış değeri, bir önyargı ağırlığına ihtiyaç duyan tek bir sanal nörona karşılık gelir.

Bir CNN'de, soruda açıkladığınız gibi, çıktı özellikleri haritasındaki her noktada aynı ağırlıklar (sapma ağırlığı dahil) paylaşılır. Bu nedenle, her özellik haritasının kendi ağırlık ağırlığı ve previous_layer_num_features x kernel_width x kernel_heightbağlantı ağırlıkları vardır.

Bu nedenle evet, (3 x (5x5) + 1) x 32ilk katman için toplam ağırlığa neden olan örneğiniz , ilk gizli katman işleme RGB girişi 32 ayrı özellik eşlemesine sahip bir CNN için doğrudur.


* Üzerinde çalıştıkları renk kanallarına ayrılabilen CNN ağırlıklarının görselleştirilmesiyle kafanız karışıyor olabilir.


Filtre başına bir önyargı olduğunu düşündüm ... Sanal nöronların farklı tanımları var mı?
Charlie Parker

@CharlieParker Parametre sayısı açısından, filtre başına bir sapma, nöron başına bir sapma ile aynıdır. CNN özellik haritasının mimarisini görüntülemenin birkaç eşdeğer yolu vardır. Bunlardan biri, hepsi aynı parametreleri paylaşan çok sayıda nöron içeren "tamamen genişletilmiş" katman olacaktır. Bir diğeri, her evrişimsel filtrenin tek bir nöronun yerel bağlantılarını tarif ettiğini düşünmek olacaktır ve katman tekrar tekrar aynı nöronu kullanır. Bu yüzden muhtemelen bir nöron tanımına sahip olduğumuzu düşünüyorum, ancak cevap şeyleri tek bir perspektiften anlatıyor.
Neil Slater

İlginç, sanırım her filtre için her bir nöronu düşünüyorsunuz, bir nedenden dolayı her bir nöron için her bir aktivasyonu düşünüyordum, ancak filtre görüntüdeki birçok yerde aktive oluyor, bu yüzden elbette çok daha fazla nöronum vardı.
Charlie Parker

1

Aynı özelliği tespit etmek için, paylaşılan ağırlıkları ve önyargıları (bir katmandaki tüm gizli nöronlar için aynı ağırlıklar ve önyargı) kullanmaları CNN'lerin özelliğidir. Bu, basit sinir ağlarına kıyasla daha derin bir öğrenmeye yol açar. Bunu referans olarak okuyabilirsiniz:

http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introducing_convolutional_networks


Farklı bir soru soruyorum. Sorum yanlılık hakkında. Formülden, her özellik haritası için farklı ağırlıklar olduğu, ancak tüm özellik haritalarında aynı yanlılığın kullanıldığı görülmektedir.
kullanıcı
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.