Konvolüsyonel Katmanlar: Ped yapmak veya değil


19

AlexNet mimarisi, resimde gösterildiği gibi sıfır dolgu kullanır: resim açıklamasını buraya girin Ancak, kağıtta bu dolgulamanın neden sunulduğuna dair bir açıklama yoktur.

Standford CS 231n kursu, uzamsal boyutu korumak için dolgu kullandığımızı öğretir: resim açıklamasını buraya girin

Dolguya ihtiyacımız olan tek neden olduğunu merak ediyorum. Yani, uzamsal boyutu korumam gerekmiyorsa, sadece dolguları kaldırabilir miyim? Daha derin seviyelere doğru gittikçe uzamsal boyutta çok hızlı bir düşüşle sonuçlanacağını biliyorum. Ancak, havuz katmanlarını kaldırarak bunu takas edebilirim. Herkes sıfır doldurma arkasında bana mantıklı verebilir eğer çok mutlu olurdu. Teşekkürler!

Yanıtlar:


20

Dolgunun önemli olmasının birkaç nedeni vardır:

  1. Biz korumak eğer ağlar tasarlamak için kolay heightve widthve boyutlar nedeniyle başka bir katmandan giderken tensör boyutları hakkında çok fazla endişelenmenize gerek yok , sadece "iş" olacak .

  2. Daha derin ağlar tasarlamamızı sağlar . Dolgu olmadan, hacim boyutundaki azalma çok hızlı bir şekilde azalacaktır.

  3. Dolgu aslında bilgiyi sınırlarda tutarak performansı artırır .

Stanford konferansından alıntı: "CONV'den sonra uzamsal boyutları sabit tutmanın yukarıda belirtilen faydasına ek olarak, bunu yapmak performansı gerçekten artırır. CONV katmanları girişleri sıfırlamayacak ve yalnızca geçerli kıvrımlar gerçekleştirecekse, hacimler her CONV'dan sonra küçük bir miktar azalacak ve sınırlardaki bilgiler çok hızlı bir şekilde “yıkanacak”. - kaynak

  1. @Dontloo'nun daha önce de söylediği gibi, yeni ağ mimarilerinin evrişimli katmanları 1x1, 3x3 ve 5x5 filtrelerle birleştirmesi gerekiyor ve boyutlar eşleşmediği için dolgu kullanmasalar bile mümkün olmazdı. Dolgunun burada neden faydalı olduğunu daha iyi anlamak için başlangıç ​​modülünün bu görüntüsünü kontrol edin.

resim açıklamasını buraya girin


4
Sıfır dolgu neden bu kadar yaygındır? Görüntü işlemede, çeşitli yansıtma türleri veya kenardaki değerle devam etme gibi birçok farklı kenarlık modu kullanılır. Saf sıfırlar, gerçek görüntülere / özelliklere göre çok farklı bir yapıya sahiptir.
isarandi

3

Bana öyle geliyor ki en önemli sebep mekânsal büyüklüğü korumak. Söylediğiniz gibi, havuz katmanlarını kaldırarak uzamsal boyuttaki azalmayı takas edebiliriz. Bununla birlikte, birçok yeni ağ yapısı ( artık ağlar , başlangıç ​​ağları , fraktal ağlar gibi ), farklı katmanların çıktıları üzerinde çalışır ve bunlar arasında tutarlı bir uzaysal boyut gerektirir.

Başka bir şey, dolgu yoksa, girişin köşesindeki pikseller yalnızca çıktının karşılık gelen köşesindeki pikselleri etkilerken, merkezdeki pikseller çıktıdaki bir mahalleye katkıda bulunur. Birkaç dolgu içermeyen katman birlikte istiflendiğinde, ağ türü görüntünün yatılı piksellerini yok sayar.

Anladıklarımdan bazıları, başka iyi nedenler olduğuna inanıyorum.


2

Harika bir soru. Drag0 güzelce açıkladı ama katılıyorum, bir şey yanlış.

Bir fotoğrafa bakmak ve sınırla uğraşmak gibi. Gerçek hayatta, daha fazla bakmak için gözlerinizi hareket ettirebilirsiniz; Gerçek sınır yoktur. Bu yüzden ortamın bir sınırlamasıdır.

Büyüklüğü korumanın yanı sıra önemli mi? Tatmin edici bir cevabın farkında değilim ama dikkat ve oklüzyon deneylerinde (kısmi nesneler) sınırlarda kaybolan bilgiye ihtiyacımız olmadığına (kanıtlanmamış) inanıyorum. Daha akıllıca bir şey yapacak olsaydınız (yanındaki pikseli kopyala diyelim), kendimi denememiş olsam da cevabı değiştirmezdi. 0s ile doldurmak hızlıdır ve boyutu korur, bu yüzden yapıyoruz.


1

bu benim düşüncem. Çıkış dolgu vektörünün büyüklüğünü korumak için başlangıçta sıfır dolgu önemlidir. ve yukarıdaki birisi sıfır doldurmanın daha fazla performansa sahip olduğunu söyledi.

ama son kez ne dersin? görüntü özelliği vektör çözünürlüğü çok küçüktür ve piksel değeri bazı küresel boyutta bir tür vektör anlamına gelir.

Son durumda bir çeşit yansıtma sıfır dolgulu olmaktan daha iyidir.


1

Sınırda bilgi tutmaya özen göstererek, temelde, kıvrım yapıldığında köşedeki piksel (yeşil gölgeli) sadece bir kez kullanılırken, ortadaki gölgeli kırmızı gibi, sonuçta ortaya çıkan özellik haritasına birçok kez katkıda bulunacaktır. , görüntüyü dolduruyoruz Bkz. şekil: 2 .


1

Bilgi açısından, ne zaman ped yapmanın ve ne zaman uygun olmadığını anlatmaya çalışacağım.

Temel durum için tensorflow dolgu işlevselliği örneğini ele alalım. "Geçerli" veya "aynı" olmak üzere iki senaryo sağlar. Aynı durum çıktının boyutunu koruyacak ve uygun dolgu ekleyerek girişinkiyle aynı tutacaktır, ancak geçerli olmaz ve bazı insanlar bilgi kaybına yol açacağını iddia eder, ancak işte yakalama .

Bu bilgi kaybı, çekirdeğin veya kullandığınız filtrenin boyutuna bağlıdır. Örneğin, 28x28 bir resminiz olduğunu ve filtre boyutunun 15x15 olduğunu varsayalım (diyelim). Çıktı 16x16 boyutuna sahip olmalıdır, ancak tensorflow'da "aynı" kullanarak ped uygularsanız 28x28 olacaktır. Şimdi kendi içindeki 12 sıra ve 12 sütun anlamlı bir bilgi taşımıyor, ancak hala bir gürültü biçimi olarak var. Ve hepimiz gürültüye karşı derin öğrenme modellerinin ne kadar duyarlı olduğunu biliyoruz. Bu, eğitimi çok azaltabilir. Yani büyük filtreler kullanıyorsanız, dolgu ile gitmeyin.

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.