Değişken otomatik kodlayıcılar (VAE) için reparameterization trick nasıl çalışır? Temel matematiği basitleştirmeden sezgisel ve kolay bir açıklama var mı? Ve neden 'numaraya' ihtiyacımız var?
Değişken otomatik kodlayıcılar (VAE) için reparameterization trick nasıl çalışır? Temel matematiği basitleştirmeden sezgisel ve kolay bir açıklama var mı? Ve neden 'numaraya' ihtiyacımız var?
Yanıtlar:
Kingma'nın NIPS 2015 atölye slaytlarını okuduktan sonra , rastgele bir düğümde geri yayını almak için onarım sayacına ihtiyacımız olduğunu fark ettim.
Sezgisel olarak, orijinal biçiminde, rastgele bir düğüm ile ilgili Vaes numunede parametrik model yaklaşılır doğru posterior. Backprop, rastgele bir düğümden akamaz.q ( z ∣ ϕ , x )
Yeni bir parametre Tanıtımı bize reparameterize sağlar backprop deterministik düğümleri boyunca akmasına izin veren bir şekilde.z
Bir normal dağılım sahip varsayalım parametreli , özellikle . Aşağıdaki sorunu çözmek istiyoruz Bu elbette oldukça aptalca bir sorundur ve optimal açıktır. Bununla birlikte, burada sadece bu amacın gradyanını hesaplamada nasıl yardımcı olduğunu anlamak istiyoruz .θ q θ ( x ) = N ( θ , 1 ) min θθ E q [ x 2 ]
yi hesaplamanın bir yolu aşağıdaki gibidir
Bizim örneğimizde burada , bu yöntem sağlar
Reparameterization hilesi, beklentiyi yeniden yazmanın bir yoludur, böylece gradyanı alacağımız dağılım, parametresinden bağımsızdır . Bunu başarmak için, stokastik öğeyi bağımsız olarak yapmamız gerekir . Dolayısıyla, geç olarak sonra, yazabiliriz burada , yani dağılımıdır . Şimdi türevini yazabilir aşağıdaki gibi
İşte, bu iki gradyan hesaplama yönteminin varyansına bakarak yazdığım bir IPython not defteri. http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb
"Yenileştirme numarası" matematiğinin makul bir örneği, goker'in cevabında veriliyor, ancak bazı motivasyonlar yardımcı olabilir. (Bu cevap hakkında yorum yapma iznim yok; bu yüzden ayrı bir cevap.)
Kısacası, formun değerini ,
değerini hesaplamak istiyoruz.
"Reparameterization trick" olmadan, bunu sık sık, yazıcının cevabına göre, , burada,
olarak yeniden yazabiliriz.
Biz çizerseniz gelen , daha sonra tarafsız bir tahmindir . Bu, Monte Carlo entegrasyonu için bir "önemli örnekleme" örneğidir. Eğer bazı temsil çıkışları hesaplama ağının (örneğin, takviye öğrenme için bir politika ağı), biz olabilir ağ parametrelerine göre türevleri bulmak için (zincir kuralı uygulanır) arka propagatation içinde kullanacağız.
Kilit nokta genellikle çok kötü (yüksek varyans) bir tahmin olmasıdır . Çok fazla sayıda numunenin ortalamasını alsanız bile, ortalamasının sistematik olarak aşma (veya aşma) göründüğünü görebilirsiniz .
Bir temel sorunu için gerekli katkıları olduğunu değerleri gelebilir çok nadirdir (yani değerleri hangi küçük). faktörü, bunu hesaba katacağınız tahmininizi , ancak tahmin ederken böyle bir değeri görmüyorsanız, bu ölçeklendirme işe yaramaz sonlu sayıda örneklemden. İyilik veya kötülük (yani kestirimini kalitesini, için çekilen ) bağlı olabilirBu, optimum olmaktan uzak olabilir (örneğin, keyfi olarak seçilen bir başlangıç değeri). Anahtarlarını sokak lambasının yanında (çünkü görebildiği / örnekleyebildiği yerde) düşürdüğü yere bakmak isteyen, sarhoş bir insanın hikayesi gibi.
"Reparameterization trick" bazen bu sorunu giderir. Göker'in gösterim kullanılarak, hile yeniden yazmak için , bir rastgele değişkenin bir fonksiyonu olarak bir dağıtım ile, bağlı değildir, ve daha sonra beklenti yeniden üzerinde bir beklenti olarak ,
Yeniden değerleme püf noktası özellikle yeni tahminci, , yukarıda belirtilen sorunlara sahip olmadığında (örneğin, seçebildiğimizde , iyi bir tahminde bulunmadıkça) kullanışlıdır. nadir değerlerini çizerek ). Bu kolaylaştırılabilir (ancak garanti değildir) gerçeğiyle bağlı değildir ve biz seçebilirsiniz basit tek modlu dağılım olarak.
Bununla birlikte, reparamerization trick bile olabilir "iş" olan olup iyi bir tahmin . Özellikle, büyük katkıları olmasa bile gelen çok nadirdir, biz sürekli optimizasyon sırasında onları görmüyorum ve biz ne zaman biz de onları görmüyorum kullanmak (modelimizi bizim model üretken modeli ise ). Biraz daha resmi anlamda, bizim objektif (aşırı beklenti yerine düşünebiliriz bazıları üzerinde bir beklenti olduğunu etkili bir hedefi ile) "tipik seti" için . Bu tipik küme dışında, bizim keyfi olarak zayıf değerlerini üretebilir - bakınız Brock et. ark. antrenman sırasında örneklenen tipik kümenin dışında değerlendirilen bir GAN için (bu makalede, daha yüksek olasılıklar olsa bile, tipik kümeden uzaktaki gizli değişken değerlerine karşılık gelen daha küçük kesme değerleri).
Umarım bu yardımcı olur.
Öncelikle açıklayayım, neden VAE’de Reparameterization trick’ine ihtiyacımız var?
VAE kodlayıcı ve kod çözücüye sahiptir. Dekoder rastgele gerçek posterior Z ~ q (z∣ϕ, x) den örnekler . Enkoderi ve kod çözücüyü bir sinir ağı olarak uygulamak için, rastgele örneklemeyle geri çoğaltmanız gerekir ve sorun budur çünkü geri çoğaltma rastgele düğümden akamaz; Bu engelin üstesinden gelmek için, yeniden tamir hilesi kullanıyoruz.
Şimdi kandırmaya gelelim. Posteriorumuz normal dağıldığı için başka bir normal dağılımla tahmin edebiliriz. Normal dağılıma ε ile yaklaşık Z ye yaklaşıyoruz .
Fakat bunun önemi ne?
Yerine olduğunu söyleyen Şimdi Z den örneklenir (z|φ, x) q , diyebiliriz Z parametre alan bir fonksiyonudur (ε, (μ, İL)) ve bu μ L üst sinir ağı (kodlayıcı) gelen . Bu nedenle backpropogation, tek ihtiyacımız olan rt , L ve ε olan kısmi türevler türev almak için anlamsızdır.
Olasılıklı grafik modellerde Stanford CS228 dersinde bulunan açıklamanın çok iyi olduğunu düşündüm. Burada bulunabilir: https://ermongroup.github.io/cs228-notes/extras/vae/
Kolaylık / kendi anlayışım için önemli kısımları burada özetledim / kopyaladım (her ne kadar sadece orijinal bağlantıyı kontrol etmenizi şiddetle tavsiye ediyorum)
Öyleyse, bizim sorunumuz şu hesaplamayı yapmak istediğimiz degradeye sahip olmamız:
Eğer puan fonksiyonu tahmin edicilerine aşina iseniz (REINFORCE'un bunun sadece özel bir durum olduğuna inanıyorum), çözdükleri sorunun hemen hemen farkındasınız. Bununla birlikte, puan işlevi tahmincisi yüksek bir varyansa sahiptir ve çoğu zaman öğrenme modellerinde zorluklara yol açmaktadır.
Bu nedenle, belirli koşullar altında dağılımını 2 adımlı bir işlem olarak ifade edebiliriz.
İlk önce , standart Normal gibi basit bir dağılımından bir gürültü değişkeni örneği alıyoruz . Daha sonra, rastgele gürültüyü bu daha karmaşık dağılıma belirleyici bir dönüşüm . Bu ikinci bölüm her zaman mümkün değildir, ancak ilginç birçok sınıfı için geçerlidir .
Örnek olarak, örnekleyeceğimiz çok basit bir q kullanalım.
Şimdi, q (z) beklentisinin derecesini elde etmek yerine, daha basit olan işlevine ilişkin bir beklentinin gradyanı olarak yeniden yazabiliriz .
Bu, önemsiz sebeplerden ötürü, daha düşük bir varyansa sahiptir. Bir açıklama için buradaki ek D bölümünü kontrol ediniz: https://arxiv.org/pdf/1401.4082.pdf
Olasılık modelimiz var. Ve modelin parametrelerini kurtarmak istiyorum. Değişken alt sınır (VLB) optimizasyonu görevimizi azaltıyoruz. Bunu yapmak için iki şey yapabiliriz:
Yazarlar, her ikisi için de Monte Carlo Tahmincisi kullanılmasını önermektedir. Ve aslında, bu numarayı VLB'nin Monte Carlo Gradient Tahmincisi olarak daha kesin bir şekilde elde etmek için tanıtıyorlar.
Bu sadece sayısal yöntemin iyileştirilmesi.
Reparametre numarası, MC tahmincisinin gradyan için değişkenliğini önemli ölçüde azaltır. Yani bir varyans azaltma tekniği:
Amacımız bir tahminini bulmak
"Puan işlevi tahmincisini" kullanabiliriz:
Ama puan fonksiyon tahmincisi yüksek varyansa sahiptir. Örn: olasılığı çok küçükse, mutlak değeri
çok büyük ve değerin kendisi negatif. Böylece yüksek varyansımız olur.
Reparametrization bizde
Şimdi beklenti wrt ve degrade parametresinden bağımsızdır . Böylece, gradyanı doğrudan beklentiyi açıkça yazarak kolayca görülebilen beklentinin içine koyabiliriz. Degrade değerleri çok daha küçüktür, bu nedenle sezgisel olarak daha düşük varyansa sahibiz.
Not: Bu yeniden hileyi yalnızca kesintisiz olduğunda gerçekleştirebiliriz, böylece .