Otomatik Kodlayıcılar hakkında daha fazla bilgi için tıklayınız.
Varyasyonel Otomatik Kodlayıcı Nedir?
Standart otomatik kodlayıcılar, kompakt gösterimleri oluşturmayı (veri sıkıştırma işlevini) ve girdileri iyi bir şekilde yeniden yapılandırmayı öğrenirler, gürültü giderici otomatik kodlayıcı gibi birkaç otomatik kodlayıcı dışında diğerleri uygulamada oldukça sınırlıdırlar. Otomatik kodlayıcıların üretim için temel sorunu, girdilerini, kodlanmış vektörlerin bulunduğu uzaya dönüştürdüğü gizli alanın (latent space) sürekli olmaması veya kolay enterpolasyona izin vermesidir.
Ancak, üretici bir model oluştururken, girdinizin aynı görüntüsünü çoğaltmak için çalışmak istemezsiniz. Gizli alandan rastgele örnekleme yapmak veya sürekli bir gizli alandan bir giriş görüntüsündeki varyasyonları oluşturmak istersiniz.
Uzay sürekli değilse, örneğin, kümeler arasında boşluklara sahipse ve oradan bir varyasyonu örnekliyor, oluşturuyorsanız, kod çözücü gerçek dışı bir çıktı üretecektir; çünkü kod çözücünün gizli alanın bölgesiyle nasıl baş edeceği konusunda bir fikri yoktur. Eğitim sırasında, bu gizli alan bölgesinden gelen kodlanmış vektörleri hiç görmemiştir.
Varyasyonel Otomatik Kodlayıcılar (Variational Autoencoder (VAE)), vanilla otomatik kodlayıcılardan ayıran temelde benzersiz bir özelliğe sahiptir ve bu onları, üretici modelleme için çok yararlı kılan bir özelliktir: gizli alanları, tasarımı itibariyle, sürekli, kolay, rastgele örnekleme ve enterpolasyona izin vermektedir.
İlk başta oldukça şaşırtıcı görünen bir şey yaparak bunu başarır: kodlayıcısını n büyüklüğündeki bir kodlama vektörü üretmek yerine, çıktı olarak n boyutunda iki vektörü oluşturur, bunlar: vektörlerin ortalaması μ ve standart sapmalarının vektörüdür σ.
Varyasyonel Otomatik Kodlayıcının bir özelliği olarak, kodlayıcıdan elde edilen çıkışın, Gauss dağılımında ortalamasının sıfır ve varyansın bir olması beklenir. Bu, girdi verilerinden benzer özelliklerin tamamen farklı gösterimlerle sonuçlanmadığından emin olmak için yapılır. Böylece, Gauss dağılımından herhangi bir sapma, KL-divergence kaybı ile yakalanır. Ayrıca, KL-divergence’ı optimize etmek için, gerçek değerlerin bir vektörünü üreten kodlayıcı yerine, ortalama ve standart sapmaların vektörü üretilir.
Bu stokastik üretim, aynı girdi için bile, ortalama ve standart sapmalar aynı kalırken, gerçek kodlama, her bir geçişte örnekleme nedeniyle biraz değişecektir.
Sezgisel olarak, ortalama vektörü, girdi kodlamasının hangi merkezde olması gerektiğini kontrol ederken, standart sapma vektörü “alanı” ve kodlamanın ne kadar değiştiğini kontrol eder. Kodlamalar, “daire” (dağılım) içindeki herhangi bir yerden rastgele oluşturulduğundan, kod çözücü, bu sınıfın bir örneğine işaret ettiğinde tek bir noktanın sadece gizli bir alandan oluştuğunu değil, aynı zamanda tüm yakın noktaların da aynı şeyi ifade ettiğini öğrenir. Bu da, kod çözücünün, gizli alandaki tekil, özel kodlamaları çözmesini değil, aynı zamanda kod çözücünün, eğitim sırasında aynı girdinin kodlamada bir dizi varyasyonuna maruz kalması nedeniyle, biraz farklı olanları da üretmesini sağlar.
Varyasyonel Otomatik Kodlayıcılar, son derece güçlü üretici ağlardır, sıralı ya da ardışık olmayan, sürekli ya da ayrık, hatta etiketli ya da tamamen etiketlenmemiş, oldukça çeşitli veri türleri ile çalışabilmektedir.
Özetle, Varyasyonel Otomatik Kodlayıcı (VAE), gizli alandaki bir gözlemi tanımlamak için olasılıksal bir yol sağlar. Bu nedenle, her bir gizli durum özniteliğini tanımlamak için tek bir değer çıkaran bir kodlayıcı oluşturmak yerine, kodlayıcıyı her gizli öznitelik için bir olasılık dağılımını tanımlayacak şekilde formüle edilir.
Varyasyonel Otomatik Kodlayıcılar için kodlayıcı modeli bazen tanıma modeli olarak adlandırılırken, kod çözücü modeli bazen üretici model olarak adlandırılır. Kodlayıcı modelimizi, kod çözücü modelimize beslemek üzere rastgele örneklemleyeceğimiz bir dizi olası değerleri (istatistiksel dağılım) çıkarmak için tasarlayarak, aslında sürekli, düzgün bir gizli alan gösterimini zorunlu kılarız. Gizli dağılımların herhangi bir örneklemesi için, kod çözücünün modelimizin girdisini doğru bir şekilde yeniden oluşturabilmesini bekliyoruz. Böylece, gizli (latent) uzayda birbirine yakın olan değerler, çok benzer yeniden üretimlere karşılık gelmelidir. Gizli alandan örnekleme yaparak, eğitim sırasında gözlemlenenlere benzer yeni veriler oluşturabilen bir üretici model oluşturmak için kod çözücü ağını kullanırız.