VAE'ler için reparametre numarası nasıl çalışır ve bu neden önemlidir?


57

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?


5
Cevabın bir kısmı, tüm Normal dağılımların sadece Normal (1, 0) ölçeklendirilmiş ve çevrilmiş versiyonları olduğunu fark etmektir. Normal'den (mu, sigma) çizmek için Normal'den (1, 0) çizebilir, sigma (ölçek) ile çarpabilir ve mu (çeviri) ekleyebilirsiniz.
keşiş,

@monk: (1,0) sağ yerine Normal (0,1) olmalıydı, aksi takdirde çarpma ve kayma tamamen saman teline yol açar!
Rika

@Beze Ha! Evet, elbette teşekkürler.
keşiş,

Yanıtlar:


57

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 )zq(zϕ,x)

Yeni bir parametre Tanıtımı bize reparameterize sağlar backprop deterministik düğümleri boyunca akmasına izin veren bir şekilde.zϵz

orijinal ve onarılmış form


3
neden sağda deterministik? z
getirme

2
Öyle değil, ama bir "rastgelelik kaynağı" değil - bu rol tarafından üstlenildi . ϵ
quant_dev 17:18

Bu yöntemin 2014'ten önce birden çok kez önerildiğini unutmayın: blog.shakirm.com/2015/10/…
quant_dev

2
Çok basit, çok sezgisel! Mükemmel cevap!
Serhiy

2
Maalesef öyle değil. Orijinal form yine de daha yüksek varyansa sahip olarak yeniden savunulabilir. Ayrıntılar gönderimden bulunabilir .
JP Zhang

56

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 θqθqθ(x)=N(θ,1)θ E q [ x 2 ]

minθEq[x2]
θEq[x2]

yi hesaplamanın bir yolu aşağıdaki gibidir θEq[x2]

θEq[x2]=θqθ(x)x2dx=x2θqθ(x)qθ(x)qθ(x)dx=qθ(x)θlogqθ(x)x2dx=Eq[x2θlogqθ(x)]

Bizim örneğimizde burada , bu yöntem sağlar qθ(x)=N(θ,1)

θEq[x2]=Eq[x2(xθ)]

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 θqθx

x=θ+ϵ,ϵN(0,1)
Eq[x2]=Ep[(θ+ϵ)2]
pϵN(0,1)Eq[x2]
θEq[x2]=θEp[(θ+ϵ)2]=Ep[2(θ+ϵ)]

İş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


4
İlk denklem için "bariz" teta nedir?
gwg

2
bunu görmenin bir yolu, E [x ^ 2] = E [x] ^ 2 + Var (x) 'ın ki bu durumda ^ ^ 2 + 1 olmasıdır. Böylece, theta = 0 bu hedefi en aza indirir.
goker

Yani, tamamen soruna bağlı? Diyelim ki min_ \ theta E_q [| x | ^ (1/4)] tamamen farklı olabilir mi?
Anne van Rossum

Soruna ne bağlı? En uygun teta? Eğer öyleyse, evet kesinlikle soruna bağlı.
goker

Denklemde sadece "bu yöntem verir" sonra, bu olmamalıdır yerine sadece ? θEq[x2]=Eq[x2(xθ)qθ(x)]θEq[x2]=Eq[x2(xθ)]
AlphaOmega

17

"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.Gθ

Gθ=θExqθ[]

"Reparameterization trick" olmadan, bunu sık sık, yazıcının cevabına göre, , burada, olarak yeniden yazabiliriz.Exqθ[Gθest(x)]

Gθest(x)=1qθ(x)θqθ(x)=θlog(qθ(x))

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.xqθGθestGθθ

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 .GθestGθ

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ı olabilirGθxxqθ(x)1qθ(x)xGθqθGθestxqθθBu, 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 ,xϵpθGθp

Gθ=θEϵp[J(θ,ϵ)]=Eϵp[θJ(θ,ϵ)]
için bazı .J(θ,ϵ)

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.θJ(θ,ϵ)pϵpθp

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θJ(θ,ϵ)GθGθϵppϵ 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).J

Umarım bu yardımcı olur.


"1 / qθ (x) faktörü, bunu hesaba katacağınız tahmininizi arttırıyor, ancak böyle bir x değerini asla görmezseniz, bu ölçeklendirme işe yaramaz." Biraz daha fazla açıklayabilir misin?
czxttkl

@czxttkl Uygulamada, sınırlı sayıda örnek ile beklenen değerleri tahmin ediyoruz. Eğer bazıları için çok küçük , o zaman böyle bir örnek çok olası olabilir . Dolayısıyla, büyük bir faktörü içermesine ve beklenen gerçek değere anlamlı bir katkı da, beklenen değerin tahmin edilmesinden hariç tutulabilir makul sayıda örnek. qθxxGθest(x)1/qθ
Seth Bruder

10

Ö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 .

görüntü tanımını buraya girin

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.

görüntü tanımını buraya girin


Bu kavramı anlamak için en iyi video. Tam videoyu daha iyi anlamak için izlemenizi tavsiye ederim, ancak yalnızca reparametre hilesini anlamak istiyorsanız, 8 dakikadan itibaren izleyin. youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

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:

ϕEzq(z|x)[f(x,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.qϕ(z|x)

İ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 .ϵp(ϵ)gϕ(ϵ,x)qϕ

Örnek olarak, örnekleyeceğimiz çok basit bir q kullanalım.

zqμ,σ=N(μ,σ)
yerine numune alma, şimdi , biz bu yeniden olabilir burada .q
z=gμ,σ(ϵ)=μ+ϵσ
ϵN(0,1)

Şimdi, q (z) beklentisinin derecesini elde etmek yerine, daha basit olan işlevine ilişkin bir beklentinin gradyanı olarak yeniden yazabiliriz .p(ϵ)

ϕEzq(z|x)[f(x,z)]=Eϵp(ϵ)[ϕf(x,g(ϵ,x))]

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


Merhaba, neden uygulamada std'yi 2'ye böldüklerini biliyor musunuz? (örn. std = torch.exp (z_var / 2)) onarımda?
Rika

4

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:

  • VLB'yi hesapla
  • VLB'nin derecesini al

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.


2

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

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]

"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.

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Eq(z(i)x(i);ϕ)[logp(x(i)z(i),w)ϕlogqϕ(z)]
p(x(i)z(i),w)logp(x(i)z(i),w)

Reparametrization bizde z(i)=g(ϵ(i),x(i),ϕ)

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Ep(ϵ(i))[ϕlogp(x(i)g(ϵ(i),x(i),ϕ),w)]

Ş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.p(ϵ(i))p(ϵ(i))ϕ

Not: Bu yeniden hileyi yalnızca kesintisiz olduğunda gerçekleştirebiliriz, böylece .z(i)z(i)=g(ϵ(i),x(i),ϕ)

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.