Konvolüsyonel sinir ağları, sınırlı Boltzmann makineleri ve otomatik kodlayıcılar arasındaki fark nedir?


Yanıtlar:


237

Otomatik kodlayıcı , çıkış birimlerinin doğrudan giriş birimlerine bağlandığı 3 katmanlı basit bir sinir ağıdır . Örneğin böyle bir ağda:

görüntü tanımını buraya girin

output[i]input[i]her biri için geri bir kenarı vardır i. Genelde, gizli birim sayısı görünür (giriş / çıkış) olanlardan daha azdır. Sonuç olarak, böyle bir ağdan veri ilettiğinizde, ilk önce girdi vektörünü daha küçük bir gösterime "sığdırmak" için sıkıştırır (kodlar) ve sonra onu yeniden yapılandırmaya (kod çözme) çalışır. Eğitimin görevi bir hatayı veya yeniden yapılanmayı en aza indirgemek, yani girdi verileri için en verimli kompakt gösterimi bulmaktır.

RBM benzer bir fikri paylaşıyor, ancak stokastik bir yaklaşım kullanıyor. Deterministik (örneğin lojistik veya ReLU) yerine, belirli (genellikle Gauss ikili) dağılımına sahip stokastik birimleri kullanır. Öğrenme prosedürü, Gibbs örneklemesinin birkaç adımından oluşur (propagate: görsel olarak verilen örnek tavuklar; yeniden yapılandır: görsel olarak verilen örnek görseller; tekrarla) ve yeniden yapılanma hatasını en aza indirmek için ağırlıkları ayarlamak.

görüntü tanımını buraya girin

RBM'lerin ardındaki sezgi, bazı görünür rastgele değişkenler (örneğin, farklı kullanıcıların film incelemeleri) ve bazı gizli değişkenlerin (film türleri veya diğer dahili özellikler gibi) olduğu ve eğitimin görevi, bu iki değişken grubunun gerçekte nasıl olduğunu bulmaktır. birbirine bağlı (bu örnekte daha fazlası burada bulunabilir ).

Konvolüsyonel Sinir Ağları bu ikisine biraz benzemektedir, ancak iki katman arasında tek bir küresel ağırlık matrisi öğrenmek yerine, yerel olarak bağlı bir dizi nöron bulmayı hedeflemektedir. CNN'ler çoğunlukla görüntü tanımada kullanılır. İsimleri "evrişim" operatöründen veya basitçe "filtre" den gelir. Kısacası, filtreler bir evrişim çekirdeğinin basit bir şekilde değiştirilmesiyle karmaşık işlemi gerçekleştirmek için kolay bir yoldur. Gauss bulanıklaştırma çekirdeğini uygulayın ve düzeltin. Canny çekirdeği uygulayın ve tüm kenarları görün. Gradyan özellikleri almak için Gabor çekirdeğini uygulayın.

görüntü tanımını buraya girin

( buradan resim )

Konvolüsyonel sinir ağlarının amacı, önceden tanımlanmış çekirdeklerden birini kullanmak yerine verilere özgü çekirdekleri öğrenmek . Bu fikir otomatik kodlayıcılarla veya RBM'lerle aynıdır - birçok düşük seviye özelliği (örneğin, kullanıcı incelemeleri veya görüntü pikselleri) sıkıştırılmış yüksek seviye gösterime (örneğin, film türleri veya kenarları) çevirir - ama şimdi ağırlıklar sadece olan nöronlardan öğrenilir. mekansal olarak birbirine yakın.

görüntü tanımını buraya girin

Üç modelin de kullanım durumları, artıları ve eksileri var, fakat muhtemelen en önemli özellikleri şunlardır:

  1. Otomatik kodlayıcılar en basitleridir. Sezgisel olarak anlaşılabilir, uygulaması kolay ve akla gelebilecekleri (örneğin, RBM'lerden daha iyi meta parametreleri bulmak çok daha kolaydır).
  2. RBM'ler üretkendir. Diğer bir deyişle, yalnızca bazı veri vektörlerini diğerlerinin lehine ayırım yapan otomatik kodlayıcıların aksine, RBM'ler verilen birleştirilmiş dağıtımla yeni veriler de oluşturabilir. Ayrıca daha zengin özelliklere sahip ve esnek olarak kabul edilirler.
  3. CNN'ler çoğunlukla çok spesifik bir görev için kullanılan oldukça özel bir modeldir (oldukça popüler bir görev olsa da). Görüntü tanımadaki en üst seviye algoritmaların çoğu bir şekilde bugün CNN'lere dayanmaktadır, ancak bunların dışında nişler zor uygulanabilir (örneğin, film incelemesi analizi için evrişimi kullanma sebebi nedir?).

UPD.

Boyutsal küçülme

Bazı nesneleri elementlerin bir vektörü olarak temsil ettiğimizde , bunun -boyutlu uzayda bir vektör olduğunu söyleriz . Bu durumda, boyut indirgeme her bir veri vektörü, öyle bir şekilde rafine etme verileri için bir işleme değinmektedir bir vektör çevrilir in boyutlu boşluğu (vektör elemanları), . Muhtemelen bunu yapmanın en yaygın yolu PCA'dır . Kabaca konuşursak, PCA bir veri kümesinin "iç eksenlerini" bulur ("bileşenler" olarak adlandırılır) ve bunları önem derecelerine göre sıralar. İlknnxxmmm<nmEn önemli bileşenler daha sonra yeni temel olarak kullanılır. Bu bileşenlerin her biri, veri eksenlerini orijinal eksenlerden daha iyi tanımlayan, üst düzey bir özellik olarak düşünülebilir.

Her ikisi de - otomatik kodlayıcılar ve RBM'ler - aynı şeyi yapar. boyutlu uzayda bir vektör alarak, onu bir boyutuna dönüştürürler , mümkün olduğu kadar önemli bilgileri tutmaya çalışırlar ve aynı zamanda gürültüyü giderirler. Otomatik kodlayıcı / RBM eğitimi başarılı olursa, elde edilen vektörün her bir elemanı (yani her bir gizli birim) nesne hakkında önemli bir şey ifade eder - bir görüntüdeki kaşın şekli, bir filmin türü, bilimsel makalede çalışma alanı, vb. bir girdi olarak çok fazla gürültülü veri almak ve çok daha verimli bir sunumla daha az veri üretmek.nm

Derin mimariler

Öyleyse, zaten PCA'ya sahip olsaydık, neden otomatik kodlayıcılar ve RBM'ler ortaya çıkardık? PCA'nın yalnızca bir veri vektörünün doğrusal dönüşümüne izin verdiği ortaya çıktı . Yani, ana bileşenleri olan , yalnızca vektörlerini temsil edebilirsiniz . Bu zaten oldukça iyi, ama her zaman yeterli değil. Ne olursa olsun, PCA'yı bir veriye kaç kez uygulayacaksınız - ilişki her zaman doğrusal kalacaktır.mc1..cmx=i=1mwici

Diğer yandan, otomatik kodlayıcılar ve RBM'ler doğası gereği doğrusal değildir ve böylece görünür ve gizli birimler arasında daha karmaşık ilişkileri öğrenebilirler. Üstelik istiflenebilirler , bu da onları daha da güçlü kılar. Örneğin, RBM'yi görünür ve gizli birimlerle eğitiyorsunuz , ardından göreceli ve gizli birimleri olan bir RBM'yi birincinin üstüne koyuyorsunuz ve onu da eğitiyorsunuz. Ve aynı şekilde otomatik kodlayıcılarla aynı şekilde.nmmk

Ama sadece yeni katmanlar eklemiyorsunuz. Her katmanda, öncekinden bir veri için mümkün olan en iyi gösterimi öğrenmeye çalışırsınız:

görüntü tanımını buraya girin

Yukarıdaki resimde derin bir ağ örneği var. Sıradan piksellerle başlıyoruz, basit filtrelerle ilerliyoruz, sonra yüz elemanları ile başlıyoruz ve sonunda tüm yüzlerle bitiyoruz! Derin öğrenmenin özü budur .

Şimdi, bu örnekte görüntü verileriyle çalıştığımızı ve sırayla uzaysal olarak yakın piksellerin daha büyük ve daha büyük alanlarını aldığımızı not edin. Kulağa benzemiyor mu? Evet, çünkü bu bir evrişimsel ağ örneğidir . Otomatik kodlayıcılara veya RBM'lere dayanarak, bölgenin önemini vurgulamak için evrişimi kullanır. Bu yüzden CNN'ler otomatik kodlayıcılardan ve RBM'lerden biraz farklıdır.

sınıflandırma

Burada belirtilen modellerin hiçbiri kendi başına sınıflandırma algoritması olarak çalışmaz. Bunun yerine, düşük seviyeli ve tüketilmesi zor temsillerden (pikseller gibi) yüksek seviyeli olana dönüşümleri öğrenmek için kullanılır . Bir kez derin (veya belki de derin olmayan) bir ağ önceden tanımlanırsa, giriş vektörleri daha iyi bir gösterime dönüştürülür ve elde edilen vektörler sonunda gerçek sınıflandırıcıya (SVM veya lojistik regresyon gibi) geçirilir. Yukarıdaki görüntüde, en altta sınıflandırma yapan bir bileşen daha var.


3
@ffriend Çok kısa ve net bir açıklama. Bu konular hakkında yazılmış çok şey var ama brifinginiz harika. "RockTheStar" Daha ayrıntılı bir açıklama istiyorsanız, bu 100 sayfalık Yoshua Bengio kitabını okuyabilirsiniz (www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)
Javierfdr

olayların sırasını tahmin etmek için ne kullanırsınız?
skan

2
@skan: bakmak RNNs . Özellikle, LSTM şu anda oldukça popüler. Ayrıca, nitelikli bir cevap almak için daha fazla ayrıntı içeren ayrı bir soru sormak isteyebilirsiniz, çünkü RNN'ler benim uzmanlık alanım değil.
ffriend

15

Bu mimarilerin tümü bir sinir ağı olarak yorumlanabilir. AutoEncoder ve Convolutional Network arasındaki temel fark, ağ donanımının seviyesidir. Konvolüsyonlu Ağlar oldukça fazla kablolu. Evrişim operasyonu görüntü alanında hemen hemen lokaldir, yani sinir ağı görünümünde bağlantı sayısında çok daha fazla seyreklik anlamına gelir. Görüntü alanındaki havuzlama (alt örnekleme) işlemi ayrıca sinir alanındaki bir kablolu sinirsel bağlantı setidir. Ağ yapısı üzerindeki bu topolojik kısıtlamalar. Bu gibi kısıtlamalar göz önüne alındığında, CNN eğitimi bu evrişim işlemi için en iyi ağırlıkları öğrenir (pratikte çoklu filtreler vardır). CNN'ler genellikle evrişimli kısıtlamaların iyi bir varsayım olduğu görüntü ve konuşma görevleri için kullanılır.

Buna karşılık, Otomatik kodlayıcılar ağın topolojisi hakkında neredeyse hiçbir şey belirtmez. Onlar çok daha genel. Fikir, girişi yeniden yapılandırmak için iyi bir sinirsel dönüşüm bulmaktır. Kodlayıcıdan (girdiyi gizli katmana yansıtır) ve kod çözücüden (gizli katmanı çıktıya dönüştürür) oluşur. Gizli katman, bir dizi gizli özellik veya gizli faktörleri öğrenir. Doğrusal otomatik kodlayıcılar PCA ile aynı alt alana yayılır. Bir veri seti göz önüne alındığında, verinin altında yatan deseni açıklamak için bir takım temel bilgileri öğrenirler.

RBM'ler ayrıca bir sinir ağıdır. Ancak ağın yorumlanması tamamen farklı. RBM'ler ağı bir ileriye dönük değil, fikrin gizli ve giriş değişkenlerinin ortak olasılık dağılımını öğrenmek olduğu iki taraflı bir grafik olarak yorumluyor. Grafiksel bir model olarak görülüyorlar. Hem AutoEncoder hem de CNN'in deterministik bir işlev öğrendiğini unutmayın. Diğer yandan, RBM'ler üretici modeldir. Öğrenilen gizli gösterimlerden örnekler üretebilir. RBM'leri eğitmek için farklı algoritmalar var. Ancak, günün sonunda, RBM'leri öğrendikten sonra, ağ ağırlıklarını, ileriye dönük bir ağ olarak yorumlamak için kullanabilirsiniz.


6

RBM'ler bir tür olasılıksal otomatik kodlayıcı olarak görülebilir. Aslında, belirli koşullar altında eşdeğer hale geldikleri gösterilmiştir.

Bununla birlikte, bu eşdeğerliği göstermek, onların sadece farklı hayvanlar olduğuna inanmaktan daha zor. Aslında, yakından bakmaya başlar başlamaz, üçü arasında pek çok benzerlik bulmakta zorlanıyorum.

Örneğin, bir otomatik kodlayıcı, bir RBM ve bir CNN tarafından uygulanan fonksiyonları yazarsanız, üç tamamen farklı matematiksel ifadeler elde edersiniz.


1

Size RBM'ler hakkında çok fazla şey söyleyemem, ancak otomatik kodlayıcılar ve CNN'ler iki farklı şeydir. Otomatik kodlayıcı, denetlenmeyen bir şekilde eğitilmiş bir sinir ağıdır. Bir otomatik kodlayıcının amacı, verileri karşılık gelen kompakt gösterime dönüştüren bir kodlayıcı ve orijinal verileri yeniden yapılandıran bir kod çözücü öğrenerek verilerin daha kompakt bir gösterimini bulmaktır. Otomatik kodlayıcıların (ve orijinal olarak RBM'lerin) kodlayıcı kısmı, daha derin bir mimarinin başlangıçtaki iyi ağırlıklarını öğrenmek için kullanılmıştır, ancak başka uygulamalar da vardır. Temel olarak, bir otomatik kodlayıcı, verilerin kümelenmesini öğrenir. Buna karşılık, CNN terimi, veriden özellikler çıkarmak için evrişim operatörünü (genellikle görüntü işleme görevleri için kullanıldığında 2B evrişim) kullanan bir tür sinir ağı anlamına gelir. Görüntü işlemede, filtreler, Resimlerle sarsılmış olan, eldeki görevi çözmek için otomatik olarak öğrenilir, örneğin bir sınıflandırma görevi. Eğitim kriterinin bir regresyon / sınıflandırma (denetlenen) veya bir yeniden yapılanma (denetimsiz) olup olmadığı, dönüşümleri affetmeye alternatif olarak konvolüsyon fikri ile ilgisi yoktur. Bir CNN otomatik kodlayıcıya da sahip olabilirsiniz.


otomatik kodlayıcı, denetlenen eğitimdir; verilen girdiyle aynı bilgileri üretmek için eğitim alırken, yalnızca daha küçük bir gizli katmanla, böylece ağın, girişi gizli katmanın boyutuna ve arkasına dönüştüren uygun bir kodlama bulması gerekir. . Cevaplanmamış eğitimde, SOM veya sinir gazı gibi istatistiksel ağlarda kullanıldığı gibi, ağa çıktı olarak sunulan bir hedef bilginiz yoktur.
SCI
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.