Son zamanlarda derin öğrenme hakkında okudum ve terimler hakkında kafam karıştı (ya da teknolojiler deyin). Arasındaki fark nedir
- Konvolüsyonel sinir ağları (CNN),
- Sınırlı Boltzmann makineleri (RBM) ve
- Otomatik kodlayıcılar?
Son zamanlarda derin öğrenme hakkında okudum ve terimler hakkında kafam karıştı (ya da teknolojiler deyin). Arasındaki fark nedir
Yanıtlar:
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:
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.
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.
( 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.
Üç modelin de kullanım durumları, artıları ve eksileri var, fakat muhtemelen en önemli özellikleri şunlardır:
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. İlkEn ö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.
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.
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.
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:
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.
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.
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.
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.