Bir Evrimsel Sinir Ağındaki evrişim adımı ne yapar?


16

Bilgisayar görmedeki uygulamaları nedeniyle evrişimli sinir ağları (CNN) üzerinde çalışıyorum. Standart feed-foward sinir ağlarına zaten aşinayım, bu yüzden burada bazı insanların CNN'leri anlama konusunda ekstra adım atmama yardımcı olabileceğini umuyorum. CNN'ler hakkında şöyle düşünüyorum:

  1. Geleneksel ileri beslemeli NN'lerde, her bir öğenin "giriş katmanı" ndaki NN'ye girdiğimiz bir özellik vektöründen oluştuğu eğitim verilerine sahibiz, bu nedenle görüntü tanıma ile her pikselin tek bir giriş olmasını sağlayabiliriz. Bunlar bizim özellik vektörlerimiz. Alternatif olarak, diğer olasılıkla daha küçük özellikli vektörleri manuel olarak oluşturabiliriz.
  2. CNN'nin avantajı, görüntü bozulması ve konumu için daha değişmez olan daha güçlü özellik vektörleri üretebilmesidir. Aşağıdaki görüntüde gösterildiği gibi ( bu öğreticiden ), CNN'ler daha sonra standart bir sinir ağına beslenen özellik haritaları oluşturur (bu yüzden gerçekten dev bir ön işleme adımıdır).

resim açıklamasını buraya girin

  1. Bu "daha iyi" özellikleri elde etme şeklimiz dönüşümlü dönüşüm ve alt örneklemedir. Alt örneklemenin nasıl çalıştığını anlıyorum. Her özellik haritası için yalnızca piksellerin bir alt kümesini alın, yoksa piksel değerlerini ortalayabiliriz.

Ama esas olarak kafam karıştı, evrişim adımının nasıl işlediğidir. Olasılık teorisinden (iki rastgele değişkenin toplamı için yoğunluk) kıvrımlara aşinayım, ancak CNN'lerde nasıl çalışırlar ve neden etkilidirler?

Sorum buna benziyor , ancak özellikle, ilk evrişim adımının neden işe yaradığından emin değilim .

Yanıtlar:


16

Önce CNN'in arkasında bir sezgi paylaşmaya çalışacağım ve sonra listelediğiniz belirli konuları yorumlayacağım.

Bir CNN'deki evrişim ve alt örnekleme katmanları, ortak bir MLP'deki gizli katmanlardan farklı değildir, yani işlevleri girdilerinden özellikler elde etmektir. Bu özellikler daha sonra daha karmaşık özellikler elde etmek için bir sonraki gizli katmana verilir veya nihai tahminin çıktısını almak için doğrudan standart bir sınıflandırıcıya verilir (genellikle bir Softmax, fakat aynı zamanda SVM veya başka herhangi bir kullanılabilir). Görüntü tanıma bağlamında, bu özellikler alt katmanlardaki kontur desenleri ve üst katmanlardaki nesne parçaları gibi görüntüler işlemidir.

Doğal görüntülerde bu özellikler tüm konumlarda aynı olma eğilimindedir. Görüntülerin ortasında belirli bir kontur desenini tanımak, kenarlıklara yakın olarak tanımak kadar faydalı olacaktır. Öyleyse neden gizli katmanları çoğaltmıyor ve giriş görüntüsünün tüm bölgelerine birden çok kopyasını bağlamıyoruz, böylece aynı özellikler her yerde algılanabiliyor? CNN tam olarak bunu yapar, ancak etkili bir şekilde. Çoğaltmadan sonra ("evrişim" adımı), birçok şekilde uygulanabilen ancak bir alt örnekten başka bir şey olmayan bir alt örnek adımı ekliyoruz. Teoride bu adım bile kaldırılabilir, ancak pratikte sorunun izlenebilir kalmasına izin vermek önemlidir.

Böylece:

  1. Doğru.
  2. Yukarıda açıklandığı gibi, bir CNN'nin gizli katmanları, normal bir MLP'deki gibi özellik çıkarıcılarıdır. Alternatif evrişim ve alt örnekleme adımları eğitim ve sınıflandırma sırasında yapılır, dolayısıyla bunlar gerçek işlemden önce "yapılmaz". Onlara "ön işleme" demezdim, MLP'nin gizli katmanları da aynı şekilde adlandırılmaz.
  3. Doğru.

3x35x5

resim açıklamasını buraya girin

9 kıvrımlı özellik ürettik. Gizli katmanda daha fazla sayıda birim olsaydı, bundan sonra alt örnekleme adımının neden gerekli olduğu açık olurdu.

Sonraki evrişim ve alt örnekleme adımları aynı prensibe dayanır, ancak orijinal görüntünün ham pikselleri yerine önceki katmanda çıkarılan özellikler üzerinden hesaplanır.


Açıklama için teşekkürler. Bahsettiğiniz öğreticiyi kontrol edeceğim.
ComputerScientist

Gerçekten güzel açıklayıcı grafikler. Referans referansına bakınız: M. Egmont-Petersen, D. de Ridder, H. Handels. Sinir ağları ile görüntü işleme - inceleme, Örüntü Tanıma, Cilt. 10, sayfa 2279-2301, 2002
Match Maker EE

Dört yıl sonra şimdi CNN'lerle neredeyse her gün çalışıyorum. @Saul Berardo'dan gelen bu yazı gerçekten doğru yola girmeme yardımcı oldu :)
ComputerScientist

1

"İlk evrişim adımı neden işe yarıyor?" İle ne demek istediğinizi bilmiyorum. Bir CNN'nin başarılı olması için birçok katmana sahip olması gerekir. CNN ve diğer birçok derin öğrenme yaklaşımının arkasındaki temel fikirlerden biri, daha büyük sinyallerin, seyrek olarak temsil edilebilen daha küçük parçalarının mekansal korelasyonu ile tanımlanabilmesidir. Başka bir deyişle, görüntüler karmaşık görünebilir, ancak bunlar sadece birkaç temel parçanın birleşiminden yapılır. Bilgisayarla görme için görüntülerdeki taban çizgisi yapısı genellikle kenarlardan ve köşelerden oluşur. CNN, ortak lokalize yapılar arayarak bir görüntüdeki yapının seyrekliğinden yararlanmaya çalışır. CNN'in ilk katmanı bunu belirlemeye çalışıyor. Bir kıvrımı belirli bir şablonla eşleşen sinyalleri arayan bir eşleşme filtresi olarak düşünün. Ne kadar iyi çalıştığı, eldeki verilere bağlıdır. Neyse ki dünya küçük ölçekte tekrarlarla doludur, bu nedenle CNN bilgisayar görme görevleri için iyi çalışır.


Evet, bence bu genel fikir. Orijinal sorumda net değildim, ama matematiğin neden çalıştığını, yani evrişim özelliğinin neden ilk katmanın bu küçük parçaları bulmasına izin verdiğini merak ediyordum .
ComputerScientist

1
Evrişim ve Eşleşen filtreleme hakkında daha fazla bilgi edinin. Evrişim çekirdeği sinyale uyduğunda en büyük dönüşü verir.
SimpleLikeAnEgg

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.