CNN'de örnekleme ve devrik evrişim aynı mıdır?


12

Hem "üst örnekleme" hem de "devrik evrişim" terimleri, "dekonvolüsyon" yaparken kullanılır (<- iyi bir terim değil, burada kullanayım). Başlangıçta, aynı anlama geldiklerini düşündüm, ancak bu makaleleri okuduktan sonra farklı oldukları bana geliyor. Herkes açıklığa kavuşturabilir mi?

  1. Geçişli evrişim : Görünüşe göre konvoltonal sinir ağı yoluyla kaybı propoagize ettiğimizde kullanabiliriz.

    http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/#Backward-Propagation

    https://github.com/vdumoulin/conv_arithmetic

    https://arxiv.org/pdf/1312.6034v2.pdf , bölüm 4 "Evrişimsel katman için ..."

  2. Örnekleme : Daha küçük girişten daha büyük girdiye, convnet-decovnet yapısında örneklemek istediğimizde kullandığımız anlaşılıyor.

    https://www.youtube.com/watch?v=ByjaPdWXKJ4&feature=youtu.be&t=22m


1
Çapraz yayın datascience.stackexchange.com/questions/15863/… adresinde yayınlanmıştır . Lütfen çapraz gönderi yapmayın, ancak sorunuzu hangi siteye istediğinize karar verin.
Scortchi - Monica'yı eski durumuna döndürün

@Scortchi Ah onlar bağlı !? Maalesef veri bilimindeki olanı kaldırdım.
RockTheStar

Deconvolutions
hans

Yanıtlar:


9

Ayrıntılı ve belirgin bir cevap olmadığı için elimden geleni yapacağım.

İlk olarak bu tür katmanlar için motivasyonun nereden geldiğini anlayalım: örneğin, evrişimli bir otomatik kodlayıcı. Orijinal görüntüyü yeniden yapılandırmak için otomatik kodlayıcıyı eğitirken, görüntülerin featuerlarını çıkarmak için kıvrımlı bir otomatik enkoder kullanabilirsiniz. (Denetimsiz bir yöntemdir.)

Böyle bir otomatik kodlayıcının iki bölümü vardır: Görüntüden özellikleri alan kodlayıcı ve orijinal görüntüyü bu özelliklerden yeniden oluşturan kod çözücü. Kodlayıcının ve kod çözücünün mimarisi genellikle yansıtılır.

Bir evrişimli otomatik kodlayıcıda, kodlayıcı evrişim ve havuzlama katmanlarıyla çalışır. Bunların nasıl çalıştığını bildiğinizi varsayıyorum. Kod çözücü kodlayıcıyı yansıtmaya çalışır, ancak "her şeyi küçültmek" yerine, görüntünün orijinal boyutuna uyacak şekilde "her şeyi büyütmek" amacına sahiptir.

Evrişimsel katmanların tersi, iç içe geçmiş evrişim katmanlarıdır (aynı zamanda evrişim olarak da bilinir , ancak doğru bir şekilde matematiksel olarak konuşmak farklı bir şeydir). Filtreler, çekirdekler, adımlarla tıpkı evrişim katmanları gibi çalışırlar, ancak örneğin 3x3 giriş piksellerinden 1 çıkışa eşlemek yerine 1 giriş pikselinden 3x3 piksele eşlerler. Tabii ki, backpropagation da biraz farklı çalışıyor.

Havuzlama katmanlarının tersi, en saf haliyle sadece görüntüyü yeniden boyutlandıran (veya pikseli gerektiği kadar kopyalayan) üst örnekleme katmanlarıdır. Daha gelişmiş bir teknik, maxpool'ın maxpooling katmanlarındaki konumunu ve unpooling katmanlarındaki değeri hatırlayarak, bu değeri tam olarak bu konuma kopyalayarak maxpooling'i düzeltir. Bu ( https://arxiv.org/pdf/1311.2901v3.pdf ) makaleden alıntı yapmak için :

Konvnet'te, maksimum havuzlama işlemi tersine çevrilemez, ancak her bir havuzlama bölgesinde maksimum anahtarlama yerlerini bir dizi anahtar değişkenine kaydederek yaklaşık bir tersine ulaşabiliriz. Dekonvnette, ayrıştırma işlemi bu anahtarları yukarıdaki katmandan rekonstrüksiyonları uygun yerlere yerleştirerek uyaranın yapısını koruyarak kullanır.

Daha fazla teknik girdi ve bağlam için bu gerçekten iyi, açıklayıcı ve derinlemesine bir açıklamaya göz atın: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

Ve https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Coding adresine bir göz atın


F. Chollet (Keras'ın yaratıcısı) bunun kendi kendini denetleyen bir teknik olduğunu savunur .
hans

6

Kullandığınız pakete bağlı olabilir.

Keralarda farklılar. Örnekleme burada tanımlanır https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py Tensorflow arka ucunu kullanmanız şartıyla, aslında olan şey, keras'ın aslında bir enterpolasyon olan ve tensorflow resize_images işlevini çağırmasıdır. eğitilebilir.

Aktarılmış evrişim daha çok işin içine girer . Yukarıda listelenen aynı python betiğinde tanımlanmıştır. Tensorflow conv2d_transpose işlevini çağırır ve çekirdeğe sahiptir ve eğitilebilir.

Bu yardımcı olur umarım.


1

Evrişimli sinir ağları bağlamında ters evrişim evrişim ile eşanlamlıdır. Dekonvolüsyonun diğer alanlarda başka anlamları olabilir .

Devrik evrişim, diğerleri arasında örnekleme yapmak için bir stratejidir.


Evet katılıyorum. ancak referansların bunları açıklama şekli farklı görünmektedir.
No.2'deki

@RockTheStar Hangi kavram farklı açıklanıyor? Evrişim mi yoksa örnekleme mi?
Franck Dernoncourt

1
2 numaralı videoda açıklanan örnekleme / dekonvolüsyon kavramı. Yaklaşık birkaç dakika.
RockTheStar

0

Burada 1) devrik evrişim ile 2) üst örnekleme + evrişim arasındaki farkın oldukça iyi bir örneğidir. https://distill.pub/2016/deconv-checkerboard/

Devrik evrişim daha verimli olmakla birlikte, makale dama tahtası artefaktından muzdarip olmadığı için örnekleme + evrişim için savunuculuk yapar.

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.