Otomatik kodlayıcının aksine varyasyonel bir oto kodlayıcıyı ne zaman kullanmalıyım?


20

Varyasyonel oto-kodlayıcının ve normal (deterministik) oto-kodlayıcının temel yapısını ve bunların arkasındaki matematiği anlıyorum, ama ne zaman ve neden bir tip otomatik kodlayıcıyı diğerine tercih ederim? Aklıma gelen tek şey, varyasyonel oto-kodlayıcının gizli değişkenlerinin önceki dağılımı, gizli değişkenleri örneklememize ve sonra yeni görüntüyü oluşturmamıza izin veriyor. Varyasyonel otoenkoderin stokastikliğinin deterministik otoenkodere göre avantajı nedir?

Yanıtlar:


14

VAE, büyük veri kümelerinde varyasyonel EM (veya genel olarak varyasyon çıkarımı) yapmak için ölçeklenebilir bir yol olarak önerilen bir çerçevedir. AE benzeri bir yapıya sahip olmasına rağmen, çok daha büyük bir amaca hizmet eder.

Bunu söyledikten sonra, elbette gizli temsilleri öğrenmek için VAE'leri kullanabilirsiniz. VAE'lerin çözülmüş faktörlerle temsiller verdiği bilinmektedir [1] Bu, latent değişkenler üzerindeki izotropik Gauss önceliklerinden dolayı olur. Onları Gaussyalılar olarak modellemek, temsildeki her boyutun kendilerini diğer faktörlerden mümkün olduğunca uzağa itmesine izin verir. Ayrıca, [1] öncekinin etkisini kontrol eden bir düzenleme katsayısı ekledi.

İzotropik Gausslar çoğu vaka için yeterli olsa da, belirli vakalar için, öncelikleri farklı şekilde modellemek isteyebilirsiniz. Örneğin, diziler söz konusu olduğunda, öncelikleri ardışık modeller olarak tanımlamak isteyebilirsiniz [2].

Soruna geri dönersek, görüldüğü gibi, gizli dağılımımızı nasıl modellemek istediğimiz üzerinde önemli bir kontrol sağlıyor. Bu tür bir kontrol olağan AE çerçevesinde mevcut değildir. Bu aslında Bayes modellerinin gücüdür, VAE'ler basitçe onu büyük ölçekli veri kümeleri için daha pratik ve uygulanabilir kılmaktadır. Sonuç olarak, gizli temsilleriniz ve neyi temsil etmelerini istediğiniz üzerinde tam kontrol istiyorsanız, VAE'yi seçin. Bazen, hassas modelleme [2] 'deki gibi daha iyi temsilleri yakalayabilir. Ancak, AE yaptığınız iş için yeterliyse, sadece AE ile gidin, yeterince basit ve karmaşık değildir. Sonuçta, AE'ler ile sadece doğrusal olmayan PCA yapıyoruz.

[1] Denetimsiz Derin Öğrenme ile Erken Görsel Kavram Öğrenme, 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed, Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Sıralı Veriler için Tekrarlayan Gizli Değişken Model, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216


6

TenaliRaman'ın bazı iyi noktaları vardı, ancak birçok temel kavramı da kaçırdı. İlk olarak, AE benzeri bir çerçeveyi kullanmanın birincil nedeninin, bilgileri sıkıştırmamızı ve umarım verilerin üst düzey özelliklerini temsil eden bağımsız faktörleri almamızı sağlayan gizli alan olduğu belirtilmelidir. Önemli bir nokta, AE'lerin PCA'nın lineer olmayan uzantısı olarak yorumlanabilmesidir, çünkü "X" gizli birimleri ilk "X" ana bileşen sayısı ile aynı alana yayılacak olsa da, bir AE'nin latentte mutlaka dikey bileşenler üretmemesi boşluk (bir çeşit çözülme şekline karşılık gelir). Ek olarak, bir VAE'den, veri olasılığının bir özetini (yaklaşık da olsa) ve ayrıca ondan örnek alabilirsiniz (bu, çeşitli farklı görevler için yararlı olabilir). Ancak,

Bir VAE'deki gizli birimlere uygulanan önceki dağıtım, yalnızca [1] referansının bu terim üzerine bir hiperparametre çarpanı eklediği ve tam bir kağıt aldığı (KL çoğu oldukça açık). Esasen "bilgilendirici olmayan" bir önceki, bireysel olarak sıfıra yakın bir KL sapmasına sahip olan ve kayba çok fazla katkıda bulunmayan bir tanedir, yani, belirli bir birimin kod çözücüde yeniden yapılandırma için kullanılmadığı anlamına gelir. Çözülme doğal olarak bir VAE'de devreye girer, çünkü en basit çok modlu veri durumunda, KL ıraksama maliyeti, her mod için benzersiz bir gizli Gauss'a sahip olmakla, modelin tek bir Gaussian ile birden fazla modu yakalamaya çalıştığından (KL ıraksama maliyeti tarafından ağır şekilde cezalandırıldığı gibi) daha düşüktür - böylece lider gizli birimlerde çözülme. Bu nedenle VAE, kendisiyle ilişkili istatistiksel çıkarımlar nedeniyle çoğu veri kaynağına doğal olarak borç vermektedir.

AE için de ihtiyatlılık sağlayan çerçeveler var, ancak maalesef VAE ile AE'yi kesinlikle gizli alan temsili ve çözülme temelinde karşılaştıran herhangi bir kağıdın farkında değilim. Yine de bu alanda bir şey görmek istiyorum - AE'lerin eğitilmesi çok daha kolay olduğundan ve eğer gizli alanda VAE'ler kadar çözülmeyi başarabilirlerse, açıkça tercih edilirlerdi. İlgili bir notta, ICA (ve doğrusal olmayan ICA) yöntemleriyle de bazı umutlar gördüm, ancak gördüklerim gizli alanın, verilerle aynı boyutta olmasını zorladı, bu da AE'ler kadar kullanışlı değil Üst düzey özellikleri çıkarmak için.


3

Standart otomatik kodlayıcı aşağıdaki grafik kullanılarak gösterilebilir: resim açıklamasını buraya girin

Önceki cevaplarda belirtildiği gibi, sadece PCA'nın doğrusal olmayan bir uzantısı olarak görülebilir.

Ancak, varyasyonel otoenkodere kıyasla vanilya otoenkoderinin aşağıdaki dezavantajı vardır:

Üretim için otomatik enkoderlerin temel sorunu, girdilerini dönüştürdükleri ve kodlanmış vektörlerinin yattığı gizli alanın sürekli olmayabilir veya kolay enterpolasyona izin vermesidir.

Yani, yukarıdaki grafikteki kodlama kısmı, farklı sınıflar açık bir şekilde kümelendiğinden ve görünmeyen girdiler boş bir yerde bulunan bir şeye kodlandığından kodlayıcının daha önce hiç görmediği girişlerle ilgilenemez:

resim açıklamasını buraya girin

Bu sorunu çözmek için, varyasyonel otomatik kodlayıcı, orta katmandaki her gizli değişken için bir ortalama ve standart sapma içeren bir katman eklenerek oluşturuldu:

resim açıklamasını buraya girin

Daha sonra aynı giriş için bile kodu çözülmüş çıkış değişebilir ve kodlanmış ve kümelenmiş girişler pürüzsüz hale gelir:

resim açıklamasını buraya girin

Bu nedenle, verileri farklılaştırmak veya sınıflandırmak (farklı verileri filtrelemek) için standart bir otomatik kodlayıcı yeterli olurken, nesil için varyasyonel otomatik kodlayıcıyı daha iyi kullanırız.

Referans:
Varyasyonel Otomatik Kodlayıcıları Sezgisel Olarak Anlama


1

Kodun VAE'de dağılımını seçmek, aynı sınıftaki örneklerin kod alanında birbirine yakın olduğu daha iyi bir denetimsiz temsil öğrenmesine izin verir. Ayrıca bu şekilde, kod alanındaki bölgeler için bir semantik bulmak daha kolay hale gelir. Örneğin, her alandan hangi sınıfın üretilebileceğini bilirsiniz.

Daha derinlemesine analize ihtiyacınız varsa, Durk Kingma'nın tezine bir göz atın . Varyasyonel çıkarım için harika bir kaynak.


"Dağıtımın seçilmesi" hakkında konuşurken, hangi dağıtımdan bahsediyorsunuz? p (z), p (z | x), p (x | z) veya hepsi? Sadece normal dağılım veya Bernoulli dağılımı kullandığımı gördüm, farklı dağıtım kullanarak performansı karşılaştıran herhangi bir çalışma biliyor musunuz? İkinci noktanıza gelince, varyasyonel oto-kodlayıcının neden normal bir oto-kodlayıcıdan daha iyi bir iş yapacağını göremiyorum, biraz açıklayabilir misiniz? Teşekkürler.
DiveIntoML
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.