Week 8 - VAE - AC
Week 8 - VAE - AC
Variational Autoencoders
Murat Kocaoglu
sha1_base64="/BwqdIsDrPG+401H09YaT2MC0Gc=">AAAJ3HicjVZfjxs1EN+Wf5fw7wqPvBiSk9oqF5K2Ah44qacDqUIghVOvrZRNT16vk1jx2pbt7eXO+I03xCufg0+DxBN8FMabzWV3k0hssspk5jc/e8bjsRPFmbGDwd937r719jvvvnfQar//wYcffXx475MXRuaa0AsiudSvEmwoZ4JeWGY5faU0xVnC6ctkcRbsL99QbZgUz+21opMMzwSbMoItqC4Pf7gfZ9jOk6lb+l/W4o1/EBuWodjSpXXfL9UUZ74KTC9jO6cW3694PLg87Az6g+JB28KwFDpR+Ywu7x3cxKkkeUaFJRwbMx4OlJ04rC0jnPp2nBuqMFngGR2DKHBGzcQVQXt0BJoUTaWGV1hUaKseDmfGXGcJIMMkTdMWlPtsdp7dmtqxoFdEZhkWqQthP8N8JjULGBdjjRNG3Ebl23WytYERv9tQdxjndvrNxDGhcksFWYU5zTmyEoX1QynTlFh+DQImQMAIInOYBbGwyjWm9A1TpszZcpU0GAoCkJpCiNecOsUxE76IsNS78te756UwNjAe1MqkBlNaKmlYMPhxqZy4UUVbg3MK+asAfyz+1yBEask51tcV2NmtrjHxlE6Z2DFORb9h+W4PGCouz1QDfLpRNsYEAetFnaLUbdzPS1C9aphIqUJQLopqFX9efILo6zDC/PjxxHWGqPToPEIxp1Mbwxa2qPM41mw2t/2Gm6j4CWlL7sow+3lqJWnZ4qZepCZPCF4no6LPcm6Zlld+56ZqN7Vhg5oGAwCtlNw00EsDEm0EqBTxznXjkWHd49GZj3eicG5lhpV3pyD8dDq6RdVhpogd6zB997DIUUXTwIakldD4Vg4+D5tIMIV3TZklcumOj499CW6gCdOhw63A3Q26K7dKIgDXcLlB7gaupiCrw++aaXX4vYwWM77i22C2IiHVbMpGNnfmlOzN6VZIwVrjr2UK7S3fIHGWaGgcodA0W/YUttAghdkGmDlW1PQSYJlpmYt0B4ZgDu37aI9rSqF3Feep6RUzNb3gUMr9DA7K3pTZ3ro1MjELZIEJ+Fz7qKUkE/bLftFn0Alyq/XpoVTjqx5iQlCNINATOE2fkAzIOO8JmVI49QQcE9acODh4jkLHWpO2Asf/p9xm285Cbf7VzM80VnNGls3iWMBedd1F2LOosbbnfjycwJYOfQCS5c59Z9ht+heXiyQroKu7SBg1dBN34V2wOPgKcG0eu4mUC4sTA+dncUUQjEC8oIFk6Bz2SRtuK8Pm3WRbePGoP/yqP/j5Sefpt+W95SD6LPoiuh8No6+jp9GzaBRdRCT6M/or+if6t/W69Wvrt9bvK+jdO6XPp1Htaf3xH2wCoKQ=</latexit>
<latexit
sha1_base64="FmEZ/IzLG+URUhpnSAhw+Awm/xc=">AAAJtXicjVbNjts2EFbSv7X7k6Q59sLUXiANtK6dBEkPXSCL7SGHFnAX2SSAZSwoirIJUyRBUll7CT1AnybX9FH6NhnK8lqSbaCyBY9nvvnIGQ6HjBVnxg6H/925+8WXX339zVGn++133/9w7/6DH98amWtCL4nkUr+PsaGcCXppmeX0vdIUZzGn7+LFube/+0C1YVK8sStFpxmeCZYygi2oru73ogzbeZy6myIyLEPqKrJzavHjrf4XQA0Hw/JBu8KoEnpB9YyvHhzdRIkkeUaFJRwbMxkNlZ06rC0jnBbdKDdUYbLAMzoBUeCMmqkroynQMWgSlEoNr7Co1NY9HM6MWWUxIP0cTdvmlYdsdp7dmrqRoNdEZhkWifNRv8Z8JjXzGBdhjWNG3FZVdJtkGwMjxX5D02GS2/S3qWNC5ZYKsg4zzTmyEvmFQQnTlFi+AgETIGAEkTnMglhYvgZT8oEpU+VsuU4aDAUBSE0hxBWnTnHMRFFGWOld9Vu4N5UwMTAeFMG0AVNaKmmYNxSTSjl145q2AecU8lcD/ln+b0CI1JJzrFc12PmtrjXxhKZM7Bmnpt+y/HEADBWXZ6oFPtsqW2OCgPWiSVHptu4XFahZNUwkVCEoF0W1ih6VHy8WTRhhxeTZ1PVGqPLoPUURp6mNYG9a1HsWaTab20HLTdT8hLQVd22YwzyNkrRscdMsUpPHBG+SUdNnObdMy+ti76bqtrV+g5oWAwCtlNy00EsDEm0FqBQpnOtHY8P6J+PzItqLwrmVGVaFOwPhr7PxLaoJM2XsWPvpuydljmqaFtYnrYJGt7L3edJGgsm/G8oslkt3cnJSVOAWmjDtO9wa3N+i+3KnJDxwA5db5H7gegqyPvy+mdaHP8hoMeNrvi1mJxJSz6ZsZXNvTsnBnO6E5K0N/kam0MHy9RJnsYbG4QtNs2WosIUGKcwuwMyxoiaMgWWmZS6SPRiCObTv4wOuCYXeVR6UJixnakLvUMmDDM7JMGU23LRGJmaezDMBn+sed5Rkwv46KPsMOkVuvT4hSjS+DhETgmoEgZ7CafqcZEDGeShkQuHUE3BMWHPq4OA59h1rQ9rxHP+fcpdtNwuN+dczP9NYzRlZtotjAXvV9Rd+z6LW2l4Uk9EUtrTvA5Asd1H0Rv22f3m3iLMSGlm6tM6P6ruJuyyctzj4CnBtH7uxlAuLYwPnZ3lFEIxAvKCBZOgc9kkXbiuj9t1kV3j7dDB6MRj+/bz36vfq3nIU/BT8HDwORsHL4FXwOhgHlwEJ/gk+Bp+CfzsvO9NO0knX0Lt3Kp+HQePpyM/b0o+a</latexit>
<latexit
neural network d that accepts z.
z ⇠ p✓ (z)
: Sufficient statistic
: Natural/canonical parameters
: Partition function
: Log-partition function
Ex.:
sha1_base64="EU+5HhPK7XYC4smc1ayq4lg7mC8=">AAAKEnicjVZfbyM1EN8c/5pwQA8EL7wYkkrtKQ1JDwEPVLrSe7gHkEJ1vTspm4u8Xiex4rUt23tNa63Eh+DT8IZ45QvwBfgcjDebZneTSGwaZTrzm589s+MZR4ozY/v9fxoP3nn3vfc/OGi2Pnz40cefHD769KWRqSb0mkgu9esIG8qZoNeWWU5fK01xEnH6Klpcevurt1QbJsULe6voOMEzwaaMYAuqyeFv4ailJi60c2pxdhxGksfmNoEft8xQmLAYlXV32Qk6R6HSMp64+HyQvXHPAGbp0rqfqM7Q8XISF26GzRJ8HO8mB6KTk1Y4bk0O2/1eP3/QtjAohHZQPMPJo4O7MJYkTaiwhGNjRoO+smOHtWWE06wVpoYqTBZ4RkcgCpxQM3Z5qjJ0BJoYTaWGr7Ao15Y9HE6M3yIgE2znpm7zyn02O0/uTa1Q0BsikwSLOE/Ac8xnUjOPcSHWOGLEbVRZq0q2NjCS7TZUHUapnf4wdkyo1FJBVmFOU46sRP6to5hpSiy/BQETIGAEkTnsgliojQpT/JYpU+RsuUoaLAUBSE0hxFtOneKYiSyPsNC74jdzLwphZGA9qLBxBQZ1o6Rh3pCNCuXYDUvaCpxTyF8J+HP+fwVCpJacY31bgl3e62obj+mUiR3rlPQblmd7wFBxaaJq4IuNsrYmCFgvqhSFbuN+VYCqVcNETBWCclFUq/Cr/OPFrAojLBs9Gbv2ABUe7TMUcjq1IRx8i9pPQs1mc9uruYmSn5C24C4ts5+nUpKWLe6qRWrSiOB1Mkr6JOWWaXmT7TxUrbrWH1BTYwCglZKbGnppQKK1AJUimXOdcGhY53R4mYU7UTi1MsEqcxcg/HIxvEdVYSaPHWu/ffc4z1FJU8P6pBXQ8F72Po/rSDD575oSWuPSnZ6eZgW4hiZM+w63Anc26I7cKgkPXMPlBrkbuNqCLC+/a6fl5fcyWsz4im+D2YqElLMpa9ncmVOyN6dbIXlrhb+SKbS3fL3EWaShcfhC02zZVdhCgxRmG2DmWFHTjYBlpmUq4h0Ygjm076M9rjGF3pVPYdPNd2q63qGQewmMzO6U2e66NTIx82SeCfhc66ipJBP2m17eZ2Aqu9X76aJY45suYkJQjSDQc5im35IEyDjvChlTmHoCxoQ15w4Gz5HvWGvSpuf4/5TbbNtZqOy/nPmZxmrOyLJeHAs4q66z8GcW1d7tVTYajOFI+z4AyXJXWXvQqft7YxQlOXR1M/Gr+m7irjPnLQ7+BLjWx24k5cLiyMD8zK8IghGIFzSQDJ3COfG3lUH9brItvDzrDb7r9X89az/9sbi3HARfBl8Hx8Eg+D54GjwPhsF1QIJ/Gw8bnze+aP7e/KP5Z/OvFfRBo/D5LKg8zb//A4PFscI=</latexit>
<latexit
p✓ (x | z) =
D
Y
d=1
Product of exponential family (Gaussian, Bernoulli)
https://danijar.com/building-variational-auto-encoders-in-tensorflow/
q (z | x) = q(z | e (x)) ⇡ p✓ (z | x)
https://krasserm.github.io/2018/07/27/dfc-vae/
sha1_base64="mfurLKujCx0BYwtSiK+PCJ25rcA=">AAALb3icvVbdbts2FFbc/STOtjbdxS4GDNzsFEngeHY6bLtYgAbZRS86wAuatoBlBBRF24QpUiWpxgnBBx2wl9gb7FCWY0m2gfVmcgyfnPOd7/yIPGSUcqZNr/fXTuPRJ59+9vnuXnP/iy+/evzk4OkbLTNF6DWRXKp3EdaUM0GvDTOcvksVxUnE6dtoduntbz9QpZkUr81dSkcJngg2ZgQbUN0c7PwdRnTChMWcTcSJa746CiPJY32XwI8NzZQa7DqookynzKEwYXFFPXfH6Nk5Cpkw6P3NAlUhu9/iFHI5QeFYYWLTm2XIoyqqmsG9O3b2Y2KAtoPiOjBsPgs5fV8k8PF5//8pny9y3RrzuBlSET+8zJsnrV63lz9oXegXQisonsHNwe59GEuSJVQYwrHWw34vNSOLlWGEU9cMM01TTGZ4QocgCpxQPbL5OnToEDQxGksFX2hmri17WJxonyogE2ymum7zym02M00eTM1Q0FsikwRDrb4RLzGfSMU8xoZY4YgRu1K5ZpVsaWDEbTZUHYaZGf86skykmaGCLMocZxwZifyWQjFTlBh+BwImQMAIIlPIghjYeBWm+ANLddGz+aJpEAoKkIpCiXec2pRjJlxeYaG3xa+zrwthqCEebN9RBZYqmUrNvMENC+XIDkraCpxT6F8J+Cr/vwIhUknOsborwS4fdLXEYzpmYkOckn7F8vsWMKy4LElr4IuVshYTBKxmVYpCt3K/KkDVVcNETFMEyyWlKg2/zz9edFUYYW74fGRbfVR4tM5gC9KxCWGqGtR6Hio2mZpuzU2U/IQ0BXcpzHaeypI0bHZfXaQ6iwheNqOkTzJumJK3buOmata1foPqGgMAjZRc19BzDRKtFZimxFnbDgeatU8Hly7ciMKZkQlOnb0A4Y+LwQOqCtN57Vj59O1J3qOSpob1TSug4YPsfU7qSDD575ISRuTcnp6eugJcQxOm/IRbgNsrdFuuLQkPXMLlCrkZuEhBlsNvyrQcfiujwYwv+FaYtUpIuZuy1s2NPSVbe7pWkrdW+CudQluXr5c4ixQMDr/QFJt3UmxgQAq9DtBTnFLdiYBlomQm4g0YgjmM78MtrjGF2ZVfcXQnz1R3vEMhdxM4OjtjZjrL0cjExJN5JuCzzcO9VMJ94MduPmfg2LWL9wMnssK3HcSEoApBoedwmv5EEiDjvCNkTOHUE3BMGH1u4eA59BNrSbrnOf475Trbehcq+Zc7P1EYLhpkXl8cM9irtj3zexbV3u2VG/ZHsKX9HIBm2SvX6rfr/t4YRUkODQ2dG+uj+mlir531Fgt/Alzrx24k5czgSMP5mV8RBCNQL2igGSqDfeJvK/363WRdeHPW7f/c7f151nrxW3Fv2Q2+DX4IjoJ+8EvwIngZDILrgDQuG6yhGrr5z/43+9/towW0sVP4fB1Unv3jfwEHLTky</latexit>
<latexit
Z
Training VAE
Z
L(✓, | x) = q (z | x) log
log q (z | x)
p✓ (x, z)
p✓ (x, z)
q (z | x)
q (z | x)
dz
dz = log p✓ (x)
We use ELBO to maximize data likelihood indirectly by maximizing ELBO.
Recall that ELBO is a lower bound to data likelihood due to Jensen’s inequality:
Therefore, for fixed encoder \phi, increasing ELBO should increase data likelihood.
sha1_base64="KJozOGjFSnv1JHobBDpuP/mvUH8=">AAALRnicjVbdbts2FFayv0TdT7vdbTfc7ABp63h2O2y7WIEW7YB264asaNoClhFQFG0TpkiOpBonBJ9qL7FX2EvsbtjtDmU5lmQbmBzDJ4ff+c6PeMiTKs6MHQz+2tt/59333v/g4DC+8eFHH39y89anr4wsNKFnRHKp36TYUM4EPbPMcvpGaYrzlNPX6fxxWH/9lmrDpHhpLxUd53gq2IQRbEF1fmvvj2QUPz9OUskzc5nDj0vsjFrse6ihVDPmUZKzrKFe+NvoAYqTHNtZmrof/blrWFFlGJcCLA3LUQkjmLtf/fHSZOIGwVElP/O3PZBxOrEjlHA5Rep8Fc5x0+1mKFceImk4z4sQTgj8uB3z3SbSsGmOd4ITmUmLtuYFi5pNZ3aM4hP0JARLF9b9/NxDgCGNY/T7NtarHaVMFNaYc8qRauFXjm7HyTg+v9kZ9AflgzaFYSV0ouo5Pb91cJVkkhQ5FZZwbMxoOFB27LC2jHDq46QwVGEyx1M6AlHgnJqxK7eXR0egydBEavgKi0pt3cLh3IRAARlepGmvBeWuNTvLr5fiRNALIvMci6x87U8xn0rNAsYlUJmUEbdW+bhJtlpgxG9faBqMCjv5fuyYUIWlgizTnBQcWYlCp6CMaUosvwQBEyBgBJEZREEs9FODKXvLlKlqtlgWDVxBAlJTSPGSU6c4ZsKXGVZ6V/1697ISRgb8QVeOGzClpZKGhQU/qpRjd1rTNuCcQv1qwOfl/w0IkVpyjvVlDfb4WtcKPKMTJrb4qenXLE92gGHHFblqgR+tlS2fIGA9b1JUurX5iwrU3DVMZFQh2C6KapV8WX6C6Jswwvzo/th1hqiy6NxbNmwCh6VFnfvLbuu3zETNTkhbcdfc7OZpbEnL5lfNTWqKlOBVMWr6vOCWaXnhtzZV3NaGBjUtBgBaKblpoRcGJNpKUCninesmp4Z1T04f+2QrChdW5lh59wiEXx6dXqOaMFPmjnUI390pa1TTtLChaBU0uZaDzZ02EpbCd0UJB+TCnZyc+ArcQhOmwwm3BHfX6K7c2BIBuILLNXI7cBmCrLvfFmnd/U5Gixlf8q0xG5mQejVlq5pba0p21nQjpbDa4G9UCu3cvkHiLNVwcISNptmip7CFA1KYTYCZYUVNLwWWqZaFyLZgYDqA4/toh2lG4ewqJxfTKyM1vWBQyf0cBoXehNne6mhkYhrIAhPwufjoUEkm7Nf98pyBecEt308PZRpf9BATgmoEiT6A2/QbkgMZ5z0hMwq3noBrwpoHDi6eo3BirUgPA8f/p9xk26xCI/565acawzBBFu3NMYdedd156FnUercv/Gg4hpZezV4vfGfYbdsv57e8hC5nmOA1nCbuzLuw4uBPgGn72k2lnFucGrg/yxFBMAL5ggaKoQvokzCtDNuzyabw6l5/+G1/8Nu9zsMfqrnlIPoi+io6jobRd9HD6Gl0Gp1FZP/z/Yf7z/Z/iv+M/47/if9dQvf3KpvPosZzI/oPVDsoMw==</latexit>
<latexit
sha1_base64="VRMTNBVM0Lw6OXxDwLjqqgDFjLc=">AAAKJnicjVbNbuM2EJZ3+xO7f9n22AtbO8Buqrh2dtEWaANskB720AJusNldwDICiqJtwhRJkNTGCaG36EP0aXorit76HD11KMuxJNvAyhY0mvnmI2c0HDJWnBk7GPzTevDwvfc/+PCg3fno408+/ezw0eevjMw0oVdEcqnfxNhQzgS9ssxy+kZpitOY09fx4sLbX7+l2jApXtpbRScpngk2ZQRbUF0f/h6NO1EseWJuU3i4uxydoem1oyGK0ix/XLUt8x9R9T1Sc5Y/Qd+s8YbNUvxOLpFMpK0bqDKMS5F3oknn+rA76A+KC20Lw1LoBuU1un50cBclkmQpFZZwbMx4OFB24rC2jHAKpJmhCpMFntExiAKn1Exckb4cHYEmQVOp4RYWFdqqh8Op8dMEZIrt3DRtXrnPZufpvakTCXpDZJpikbjIzukLzGdSM49xEdY4ZsRtVHmnTrY2MJLvNtQdxpmd/jBxTKjMUkFWYU4zjqxEvhJQwjQllt+CgAkQMILIHGZBLNRLjSl5y5Qpc7ZcJQ2GggCkphDiLadOccz8x4MIS70rn7l7WQpjA+NB1U1qMKWlkoZ5Qz4ulRM3qmhrcE4hfxXgL8V7DUKklpxjfVuBXdzrGhNP6JSJHeNU9BuWn/eAoeKyVDXA5xtlY0wQsF7UKUrdxv2yBNWrhomEKgTloqhW0VfFz4t5HUZYPn46cd0hKj26pyjidGojaAYWdZ9Gms3mtt9wExU/IW3JXRlmP0+tJC1b3NWL1GQxwetkVPRpxi3T8ibfuag6Ta1foKbBAEArJTcN9NKARBsBKkVy53rRyLDeyegij3aicGZlilXuzkH49Xx0j6rDTBE71n767rjIUUXTwPqkldDoXvY+x00kmPy9poT2uHQnJyd5CW6gCdO+w63AvQ26J7dKwgPXcLlB7gaupiCrw++aaXX4vYwWM77i22C2IiHVbMpGNnfmlOzN6VZI3lrjr2UK7S1fL3EWa2gcvtA0W4YKW2iQwmwDzBwrasIYWGZaZiLZgSGYQ/s+2uOaUOhdxc5swmKmJvQOpdxPqcXhlNlw3RqZmHkyzwR8rnPUVpIJ+22/6DOwk7vV9wlRovFNiJgQVCMI9Ax202ckBTLOQyETCruegG3CmjMHG8+R71hr0rbneHfKbbbtLNTmX838TGM4IZBlszgWsFZdb+HXLGp828t8PJzAkvZ9AJLlLvPusNf098Y4TgtoZOnSOj+q7ybuKnfe4uAvwLW57cZSLiyODeyfxRFBMALxggaSoTNYJ/60MmyeTbaFV6f94Xf9wW+n3ec/leeWg+DL4OvgcTAMvg+eBy+CUXAVkOC/Fmo9aR23/2j/2f6r/fcK+qBV+nwR1K72v/8DTui7EQ==</latexit>
<latexit
⇥
sha1_base64="53+ijlDXzxayZZVGdL0Wnn0EF/o=">AAAKE3icjVZfjxs1EN8r/y6BwhUkeODFkJxUqiQkVwQ8cFJPV6Q+FCmcem2lbHTyep3Eitde2d5eUssPfAg+DW+IVz4An4CvwXh3c9ndJBKbizI385ufPbMzY0cpZ9oMh/8c3Xvn3ffe/+C41f7wo/sff3Ly4NOXWmaK0GsiuVSvI6wpZ4JeG2Y4fZ0qipOI01fR8tLbX72hSjMpXph1SqcJngs2YwQbUN2c/BZO2n0UJtgsosj+7G5sGEke63UCP3blUKhZUtgJ5vapAw2nMzNBzx9WkaFZUINdD9WU6YIBPmExqrN+g0LF5gszbYfTm5POcDDMH7QrjEqhE5TP+ObB8dswliRLqDCEY60no2FqphYrwwinrh1mmqaYLPGcTkAUOKF6avNcOXQKmhjNpIKvMCjXVj0sTrTfJyB90Lpp88pDNrNI7kztUNBbIpMEizjPzjPM51Ixj7EhVjhixG5Vrl0n2xgYcfsNdYdJZmY/Ti0TaWaoIEWYs4wjI5F/7ShmihLD1yBgAgSMILKAXRADxVFjit+wVJc5WxVJg6UgAKkohLjm1KYcM+HyCEu9LX+dfVEKEw3rQYlNa7BUyVRq5g1uUiqndlzR1uCcQv4qwOf5/zUIkUpyjtW6Aru80zU2HtMZE3vWqei3LE8PgKHisiRtgC+2ysaaIGC1rFOUuq37VQmqVw0TMU0RlEtKVRp+lX+86Oowwtzk8dR2Rqj06JwVTRpC5xvUeVw026DhJip+QpqSu7LMYZ5aSRq2fFsvUp1FBG+SUdEnGTdMyVu3t6naTa1vUN1gAKCRkusGeqVBoo0A05Q4a7vhWLNuf3zpwr0onBmZ4NTZCxB+uRjfoeownceOld++fZTnqKJpYH3SSmh4J3ufR00kmPx3QwnzcWX7/b4rwQ00YcpPuALc3aK7cqckPHADl1vkfmCxBVldft9Oq8sfZDSY8YJvi9mJhFSzKRvZ3JtTcjCnOyF5a42/lil0sHy9xFmkYHD4QlNs1UuxgQEp9C5AL3BKdS8ClrmSmYj3YODEhPF9esA1pjC78mNY9/Kd6p53KOVBAudpb8ZMbzMamZh7Ms8EfLZ92kolE+bbQT5n0DmyxfvpoVjh2x5iQlCFINBzOE2/IwmQcd4TMqZw6gk4Jow+t3DwnPqJtSFteY7/T7nLtpuF2v6rmZ8rDBcEsmoWxxJ61XaXvmdR491eucloCi29uY9cuc6o2/QvLjNJDg0NXRnrV/XTxF476y0W/gS4No/dSMqlwZGG8zO/IghGIF7QQDJUBn3ShtvKqHk32RVeng1G3w+Gv551nvxU3luOgy+Dr4OHwSj4IXgSPAvGwXVAgn+P7h99fvRF6/fWH60/W38V0HtHpc9nQe1p/f0fSYOzeQ==</latexit>
<latexit
KL term can be computed in closed form.
Reparameterization Trick
⇤
Unit Gaussian
We can now take the gradient of −Ex⇠D [L(✓, | x)] since expectations do
L(✓, | x) = E✏⇠N (0,I) log p✓ (x | z = µ (x) + (x) ✏) DKL (q (z | x) k p(z))
To compute ELBO and its gradient, we use the so-called reparameterization trick.
k=1
K
log
✓
⇥
1
σk
◆
p(z) = N (0, I)
+
σk2
2·1
+ (µk 0) 2
KL term can be computed in closed form.
sha1_base64="6mn/P4wUBvp5iPUpW4ILKnkbZZQ=">AAAJ83icjVbNbhs3EN6kf5b657THXraVDMTBWpWSoO2hBmK4hxzaQjXiJIBWMLhcSiLEJVmSG0tm+CS5Bbn2OfoMfYhe22uHq5W1u5KAri1oNPPNR87scIaJZFSbfv+vO3ffe/+DDz86aLU//uTTzz4/vPfFcy1yhcklFkyolwnShFFOLg01jLyUiqAsYeRFMj/39heviNJU8GdmKck4Q1NOJxQjA6qrQ/T7/TgRLNXLDL7sjTsOT8M4Q2aGEbO/uob1dfVnnOUuig1ZGJtSNK1jY02nGXLHx1eHnX6vXzzhtjAohU5QPsOrewc3cSpwnhFuMENajwZ9acYWKUMxI64d55pIhOdoSkYgcpQRPbZFLlx4BJo0nAgFH27CQlv1sCjTfouA9FHqps0r99nMLLs1tWNOrrHIMsRTG5sZeYrYVCjqMTZGCiUU243KtetkawPFbreh7jDKzeSHsaVc5oZwvApzkrPQiNC/1jClimDDliAgDAQUh3gGu8AGXn6NKX1FpS5ztlglDZaCAIQiEOKSESsZotwVEZZ6W347+6wURhrWgxIa12BSCSk09QY3KpVjO6xoa3BGIH8V4M/F7xoECyUYQ2pZgZ3f6hobT8mE8h3rVPQblp/2gKHi8kw2wGcbZWNNEJCa1ylK3cb9ogTVq4bylMgQykUSJeOviz8vujoMUzd6NLadQVh6dB6GMSMTE8PJNmHnUazodGZ6DTde8ePClNyVZfbz1ErS0PlNvUh1nmC0TkZFn+XMUCWu3c5D1W5q/QHVDQYAGiGYbqAXGiTSCFBK7KztxkNNuyfDcxfvRKHciAxJZ89A+OVseIuqw3QRO1J++/ZBkaOKpoH1SSuh8a3sfR40kWDynzUltMaFPTk5cSW4gcZU+Q63Anc36K7YKgkPXMPFBrkbuNqCqC6/a6fV5fcyGkTZim+D2YoEV7MpGtncmVO8N6dbIXlrjb+WqXBv+XqJ0URB4/CFpugikshAg+R6G6BnSBIdJcAyVSLn6Q4MjEho30d7XFMCvasYszoqdqoj71DKvYwYFE2oidatkfKpJ/NMwGfbRy0pKDff9oo+A2PZrt5PFKYKXUch5ZyoEAI9hWn6GGdAxljERUpg6nEYE0afWhg8R75jrUlbnuP/U26zbWehtv9q5qcKyRnFi2ZxzOGs2u7cn9mw8W4v3GgwhiO9voBcuM6g2/T3xiTJCujq+uFX9d3EXjrrLRb+Obg2x24ixNygRMP8LK4InGKIFzSQDJXDOWnDbWXQvJtsC88f9gbf9fq/Pe48+bG8txwEXwXfBPeDQfB98CR4GgyDywAHfwZ/B/8E/7by1pvW29a7FfTundLny6D2tP74D0l9qq0=</latexit>
<latexit
2
1
Reparameterization Trick
=
2
K
k=1
1 X⇥
⇤
2 2
log σk σk µk + 1
⇤
L(✓, | x) = E✏⇠N (0,I) log p✓ (x | z = µ (x) + (x) ✏) DKL (q (z | x) k p(z))
VAEs vs. Autoencoders (AEs)
VAE can be used to generate new data, unlike AEs.
- Sample z from unit Gaussian, use decoder network to push forward and
sample new datapoint x.
VAE embeds each image into a Gaussian in latent space, vs. AEs encode each
image into a point in latent space.
VAE Sample
Implementation
VAE Learned Embeddings
https://colab.research.google.com/github/probml/pyprobml/blob/master/notebooks/book1/20/vae_mnist_conv_lightning.ipynb
VAE vs. AE Embeddings
VAE AE
https://colab.research.google.com/github/probml/pyprobml/blob/ https://colab.research.google.com/github/probml/pyprobml/blob/
master/notebooks/book1/20/vae_mnist_conv_lightning.ipynb master/notebooks/book1/20/ae_mnist_conv.ipynb
sha1_base64="7ZOGCsKV3Bjsjl+b0DoJKixl47w=">AAAJsHicjVZfj+M0EM8d/7blz+3BIxIytCsdp25p9k7AAyvdakG6B5DK6vZupaaqHMdtTR3b2M5ttyZvfBpe4cvwbRin6TZJW4m0Uaczv/nZMx6PHSvOjB0M/n3w8J1333v/g6NW+8OPPv7k0fHjT18bmWlCr4nkUt/E2FDOBL22zHJ6ozTFaczpm3hx6e1v3lJtmBSv7J2i4xTPBJsygi2oJsdfrCYhOkdRiu08jt1P+cT9/mT1x3ISfp2PVuPJcWfQHxQP2hXCUugE5TOcPD5aRYkkWUqFJRwbMwoHyo4d1pYRTvN2lBmqMFngGR2BKHBKzdgVgeToBDQJmkoNr7Co0FY9HE6NuUtjQPoJm6bNKw/Z7Dy9N7UjQW+JTFMsEhfZOX2J+Uxq5jEuwhrHjLitKm/XyTYGRvL9hrrDKLPT78eOCZVZKsg6zGnGkZXIrwlKmKbE8jsQMAECRhCZwyyIhZWrMSVvmTJlzpbrpMFQEIDUFEK849QpjpnIiwhLvSt/c/eqFEYGxoP1H9dgSkslDfOGfFQqx25Y0dbgnEL+KsCfi/81CJFaco71XQV2ea9rTDyhUyb2jFPRb1l+PACGistS1QBfbJWNMUHAelGnKHVb96sSVK8aJhKqEJSLolpFXxYfL+Z1GGH56NnYdUJUenTOUMTp1EawLS3qPIs0m81tv+EmKn5C2pK7MsxhnlpJWrZY1YvUZDHBm2RU9GnGLdPyNt+7qdpNrd+gpsEAQCslNw300oBEGwEqRXLnutHQsO7p8DKP9qJwZmWKVe4uQPjlYniPqsNMETvWfvruaZGjiqaB9UkrodG97H2eNpFg8u+GMo3l0p2enuYluIEmTPsOtwZ3t+iu3CkJD9zA5Ra5H7iegqwOv2+m1eEPMlrM+Jpvi9mJhFSzKRvZ3JtTcjCnOyF5a42/lil0sHy9xFmsoXH4QtNs2VPYQoMUZhdg5lhR04uBZaZlJpI9GII5tO+TA64Jhd5VnJGmV8zU9LxDKfdTanFvymxv0xqZmHkyzwR8rn3SUpIJ+02/6DNwwrr1+vRQovFtDzEhqEYQ6Dmcps9JCmSc94RMKJx6Ao4Ja84dHDwnvmNtSFue4/9T7rLtZqE2/2rmZxqrOSPLZnEsYK+67sLvWdRY26t8FI5hS/s+AMlyV3kn7Db91xeNtIBGli6t86P6buKuc+ctDr4CXJvHbizlwuLYwPlZXBEEIxAvaCAZOoN90obbSti8m+wKr8/64bf9wa/POy9+KO8tR8HnwVfBkyAMvgteBC+DYXAdkODP4K/g7+Cf1lnrpjVp4TX04YPS57Og9rR++w8bAIxo</latexit>
<latexit
sha1_base64="gooIoy5qt9n0PqYy4ob41hTCtXY=">AAAJsXicjVZfjxo3EN8k/XPQf5fmsQ91CyelKVC4i9o+9KScrg95aCV6yiWpWES9XgMWXtuyvTnA2sd+mr62H6bfpuNlOXYXkLqwYpj5zc+e8XjsSHFmbL//74OHj957/4MPTxrNjz7+5NPPTh9//trIVBN6SySX+m2EDeVM0FvLLKdvlaY4iTh9Ey2uvf3NO6oNk+KVXSk6TvBMsCkj2IJqcvrlGl2ikINDjNF6MvgWPR10i//frCfnk9NWv9fPH7QvDAqhFRTPcPL4ZB3GkqQJFZZwbMxo0Fd27LC2jHCaNcPUUIXJAs/oCESBE2rGLo8kQ2egidFUaniFRbm27OFwYswqiQCZYDs3dZtXHrPZeXJvaoaC3hGZJFjELrRz+hLzmdTMY1yINY4YcTtV1qySbQ2MZIcNVYdRaqc/jh0TKrVUkE2Y05QjK5FfFBQzTYnlKxAwAQJGEJnDLIiFpaswxe+YMkXOlpukwVAQgNQUQlxx6hTHTGR5hIXeFb+Ze1UIIwPjQQGMKzClpZKGeUM2KpRjNyxpK3BOIX8l4C/5/wqESC05x3pVgl3f62oTj+mUiQPjlPQ7lp+PgKHi0kTVwFc7ZW1MELBeVCkK3c79pgBVq4aJmCoE5aKoVuFX+ceLWRVGWDa6GLvWABUerXPYcHRqQ9iXFrUuQs1mc9uruYmSn5C24C4Nc5ynUpKWLdbVIjVpRPA2GSV9knLLtLzLDm6qZl3rN6ipMQDQSslNDb00INFagEqRzLl2ODSs3R1eZ+FBFE6tTLDK3BUIv14N71FVmMljx9pP3z3Lc1TS1LA+aQU0vJe9z7M6Ekz+3VImkVy6brebFeAamjDtO9wG3N6h23KvJDxwC5c75GHgZgqyPPyhmZaHP8poMeMbvh1mLxJSzqasZfNgTsnRnO6F5K0V/kqm0NHy9RJnkYbG4QtNs2VHYQsNUph9gJljRU0nApaZlqmID2AI5tC+z464xhR6V35Imk4+U9PxDoXcS6jFnSmznW1rZGLmyTwT8LnmWUNJJux3vbzPwCHrNuvTQbHGdx3EhKAaQaCXcJo+JwmQcd4RMqZw6gk4Jqy5dHDwnPmOtSVteI7/T7nPtp+FyvzLmZ9prOaMLOvFsYC96toLv2dRbW1vstFgDFva9wFIlrvJWoN23d8boyjJoaGlS+v8qL6buNvMeYuDrwDX+rEbSbmwODJwfuZXBMEIxAsaSIZOYZ804bYyqN9N9oXX573B973+b89bL34q7i0nwRfB18HTYBD8ELwIXgbD4DYgwZ/BX8HfwT+Ni8bvjT8a0Qb68EHh8ySoPI3FfxmDizs=</latexit>
<latexit
z1 = Eq(z|x1 ) [z]
sha1_base64="K3ULMB+YHmgWkmfJnaT4JeVRiE0=">AAAJoXicjVZtb9s2EFa7t9h7abp97BdudoChUFy7LbZ9WIAG2YAO2AAvaNoClhBQFG0TpkiCpBo7rH5Jv3Y/av9mR1mOJdkGJlvw+e65h7zj8chEcWbscPjvvfuffPrZ518cdbpffvX1Nw+OH3772shcE3pFJJf6bYIN5UzQK8ssp2+VpjhLOH2TLC68/c07qg2T4pVdKRpneCbYlBFsQXV9/CDKsJ0nifu9mCzf38bXx73hYFg+aFcYVUIvqJ7x9cOj2yiVJM+osIRjYyajobKxw9oywmnRjXJDFSYLPKMTEAXOqIldOfMCnYAmRVOp4RUWldq6h8OZMassAaSfp2nbvPKQzc6zO1M3EvSGyCzDInWRndOXmM+kZh7jIqxxwojbqopuk2xjYKTYb2g6THI7/SV2TKjcUkHWYU5zjqxEfhFQyjQllq9AwAQIGEFkDrMgFpaqwZS+Y8pUOVuukwZDQQBSUwhxxalTHDNRlBFWelf9Fu5VJUwMjAcLHjdgSkslDfOGYlIpYzeuaRtwTiF/NeCf5f8GhEgtOcd6VYNd3OlaE0/plIk949T0W5bfDoCh4vJMtcDnW2VrTBCwXjQpKt3W/bICNauGiZQqBOWiqFbR9+XHi0UTRlgxeRa73ghVHr2nKOJ0aiPYhxb1nkWazeZ20HITNT8hbcVdG+YwT6MkLVvcNovU5AnBm2TU9FnOLdPypti7qbptrd+gpsUAQCslNy300oBEWwEqRQrn+tHYsP7p+KKI9qJwbmWGVeHOQfjrfHyHasJMGTvWfvrucZmjmqaF9UmroNGd7H0et5Fg8u+GMkvk0p2enhYVuIUmTPsOtwb3t+i+3CkJD9zA5Ra5H7iegqwPv2+m9eEPMlrM+Jpvi9mJhNSzKVvZ3JtTcjCnOyF5a4O/kSl0sHy9xFmioXH4QtNsGSpsoUEKswswc6yoCRNgmWmZi3QPhmAO7fvkgGtKoXeVh6IJy5ma0DtU8iCjFodTZsNNa2Ri5sk8E/C57klHSSbsk0HZZ9AZcuv1CVGq8U2ImBBUIwj0DE7T5yQDMs5DIVMKp56AY8KaMwcHz4nvWBvSjuf4/5S7bLtZaMy/nvmZxmrOyLJdHAvYq66/8HsWtdb2spiMYtjSvg9Astxl0Rv12/7r+0VWQiNLl9b5UX03cVeF8xYHXwGu7WM3kXJhcWLg/CyvCIIRiBc0kAydwz7pwm1l1L6b7Aqvnw5GPw2Gfz/vvfi1urccBY+CH4Ifg1Hwc/AieBmMg6uABHnwIfgY/NPpdf7ojDuXa+j9e5XPd0Hj6Uz+Az9lhyg=</latexit>
<latexit
E[x|z] sha1_base64="VdqpSBgjln39l30A1wbTjIBM50Q=">AAAJsHicjVZfjxo3EN+k/w76J5f2sVLlFk5KI44Cido+9KScrpXy0Er0lEtOYhHyeg24eG3X9uYAd9/6afrafpl+m46X5dhdQOrCimHmNz97xuOxI8WZsb3evw8evvPue+9/cNJofvjRx588On386WsjU03oDZFc6tsIG8qZoDeWWU5vlaY4iTh9Ey2uvP3NW6oNk+KVXSk6TvBMsCkj2IJqcvrFejJAFyhMsJ1Hkfspm7jfn6z/WE4GX2ej9Xhy2up1e/mD9oV+IbSC4hlOHp+sw1iSNKHCEo6NGfV7yo4d1pYRTrNmmBqqMFngGR2BKHBCzdjlgWToDDQxmkoNr7Ao15Y9HE6MWSURIP2ETd3mlcdsdp7cm5qhoHdEJgkWsQvtnL7EfCY18xgXYo0jRtxOlTWrZFsDI9lhQ9VhlNrp92PHhEotFWQT5jTlyErk1wTFTFNi+QoETICAEUTmMAtiYeUqTPFbpkyRs+UmaTAUBCA1hRBXnDrFMRNZHmGhd8Vv5l4VwsjAeLD+4wpMaamkYd6QjQrl2A1L2gqcU8hfCfhz/r8CIVJLzrFelWBX97raxGM6ZeLAOCX9juXHI2CouDRRNfDlTlkbEwSsF1WKQrdzvy5A1aphIqYKQbkoqlX4Zf7xYlaFEZaNno1dq48Kj9YAhZxObQjb0qLWs1Cz2dx2a26i5CekLbhLwxznqZSkZYt1tUhNGhG8TUZJn6TcMi3vsoObqlnX+g1qagwAtFJyU0MvDUi0FqBSJHOuHQ4Na58Pr7LwIAqnViZYZe4ShF8uh/eoKszksWPtp++e5jkqaWpYn7QCGt7L3udpHQkm/24pk0gu3fn5eVaAa2jCtO9wG3B7h27LvZLwwC1c7pCHgZspyPLwh2ZaHv4oo8WMb/h2mL1ISDmbspbNgzklR3O6F5K3VvgrmUJHy9dLnEUaGocvNM2WHYUtNEhh9gFmjhU1nQhYZlqmIj6AIZhD+z474hpT6F35GWk6+UxNxzsUcjehFnemzHa2rZGJmSfzTMDnmmcNJZmw33TzPgMnrNusTwfFGt91EBOCagSBXsBp+pwkQMZ5R8iYwqkn4Jiw5sLBwXPmO9aWtOE5/j/lPtt+FirzL2d+prGaM7KsF8cC9qprL/yeRbW1vc5G/TFsad8HIFnuOmv123X/zUUjyaGhpUvr/Ki+m7ibzHmLg68A1/qxG0m5sDgycH7mVwTBCMQLGkiGTmGfNOG20q/fTfaF14Nu/9tu79fnrRc/FPeWk+Dz4KvgSdAPvgteBC+DYXATkODP4K/g7+CfxqBx25g08Ab68EHh81lQeRq//Qcteoxq</latexit>
<latexit
z = λz1 + (1 − λ)z2
Push them through to obtain interpolation images as
Let x1 and x2 be input images. Let their encodings be
Decode points in the linear interpolation between them.
VAE Latent Space Interpolation
z2 = Eq(z|x2 ) [z]