cevap 1:

Bir otomatik enkoder girişini bir vektöre sıkıştırır - giriş verilerinden çok daha az boyutlara sahiptir ve daha sonra birkaç nöral ağ katmanı üzerindeki girişiyle aynı şekle sahip bir tensöre dönüştürür. Girdilerini yeniden üretmek için eğitildiler, bu yüzden bu belirli veri kümesi için bir sıkıştırma algoritması öğrenmek gibi.

Bir GAN içten dışa otomatik kodlayıcıya benziyor - yüksek boyutlu verileri sıkıştırmak yerine, girişler olarak düşük boyutlu vektörlere, ortada yüksek boyutlu verilere sahip.

Girdi olarak bir miktar veri vermek yerine, rastgele sayılardan oluşan küçük bir vektör verilir. Jeneratör ağı, bu küçük vektörü eğitim verilerinden gerçekçi bir örneğe dönüştürmeye çalışır. Ayrımcı ağ daha sonra bu oluşturulan örneği (ve veri kümesinden bazı gerçek örnekleri) alır ve örneklerin gerçek veya sahte olup olmadığını tahmin etmeyi öğrenir. Daha doğrusu, çıktı olasılığı ile sahte görüntüler için * 0s * ve gerçek görüntüler için “1” vektörleri arasındaki çapraz entropiyi en aza indirgemek için eğitilmiştir. Jeneratör daha ikna edici örnekler yapmayı öğrenir (veya ayrımcıların yaratımları ve “1” hakkında tahmin ettiği çapraz entropiyi en aza indirir)

Başka bir fark: ikisi de gözetimsiz öğrenme şemsiyesi altına girerken, probleme farklı yaklaşımlar. GAN üretken bir modeldir - bir veri kümesinin gerçekçi * yeni * örneklerini üretmeyi öğrenmesi gerekir. Varyasyonel oto-kodlayıcılar üretken modellerdir, ancak normal “vanilya” oto-kodlayıcılar sadece girdilerini yeniden yapılandırır ve gerçekçi yeni örnekler üretemez.


cevap 2:

Hem GAN'lar hem de Otomatik Enkoderler üretken modellerdir, yani yoğunluklarından ziyade belirli bir veri dağıtımını öğrenirler. Temel fark, bunu nasıl yaptıklarıdır.

Otomatik kodlayıcılar, girdisini çıktısıyla karşılaştırarak verilen bir dağılımı öğrenir, bu verilerin gizli temsillerini öğrenmek için iyidir, ancak yeni veri oluşturmak için oldukça kötüdür. Temelde verilerin ortalama bir temsilini öğrendiğimizden çıktı oldukça bulanık hale gelir.

Generatif Düşman Ağları tamamen farklı bir yaklaşım benimser. Oluşturulan ve gerçek veriler arasındaki mesafeyi ölçmek için başka bir ağ (Diskriminator olarak adlandırılır) kullanırlar. Temel olarak gerçek verileri üretilenlerden ayırt etmek. Bazı verileri girdi olarak alır ve 0 ile 1 arasında bir sayı döndürür. 0, verilerin sahte ve 1'in gerçek olduğu anlamına gelir. Jeneratörlerin hedefi, Ayrımcı'yı gerçek veri ürettiğine inanmaya ikna etmeyi öğrenmektir.

GAN'ların veri üretmede Autoencoder'lara göre temel avantajı, farklı girdilerle koşullandırılabilmeleridir. Örneğin, iki alan arasındaki eşlemeyi öğrenebilirsiniz: google haritalarına uydu görüntüleri [1]. Veya jeneratöre birkaç veri sınıfını yeniden üretmeyi öğretebilirsiniz: MNIST veri kümesinin oluşturulması [2].

Bu farklılıklar nedeniyle, farklı görevler için kullanılabilirler. Otomatik kodlayıcılar, verileri daha düşük boyutlara sıkıştırmak veya ondan anlamsal vektörler oluşturmak için daha uygundur. GAN'ların veri oluşturmak için daha uygun olduğu yerlerde.

Umarım sorunuzu cevapladım, değilse, bana sormaya çekinmeyin :)

Dipnotlar

[1] [1611.07004] Şartlı Düşman Ağları ile İmaj-Resim Çevirisi

[2] [1411.1784] Koşullu Üretken Düşman Ağları


cevap 3:

Önceki cevap farkı oldukça iyi özetliyor. Her ikisi de üretken modellerdir. AE, belirli bir girdi (daha yüksek bir boyutta) üzerinde koşullandırılmış verilerin düşük boyutlu bir temsilini bulmaya çalışır; burada GAN'lar, bir ayırıcı üzerinde koşullandırılmış gerçek veri dağıtımını genelleştirmek için yeterli temsilleri yaratmaya çalışır.