{"id":8504,"date":"2022-04-20T19:42:42","date_gmt":"2022-04-20T19:42:42","guid":{"rendered":"https:\/\/wealthrevelation.com\/data-science\/2022\/04\/20\/variational-autoencoders\/"},"modified":"2022-04-20T19:42:42","modified_gmt":"2022-04-20T19:42:42","slug":"variational-autoencoders","status":"publish","type":"post","link":"https:\/\/wealthrevelation.com\/data-science\/2022\/04\/20\/variational-autoencoders\/","title":{"rendered":"Variational Autoencoders"},"content":{"rendered":"<div>\n<p><span dir=\"ltr\" role=\"presentation\">After <a href=\"https:\/\/data-science-blog.com\/blog\/2022\/03\/15\/deep-autoregressive-models\/\">Deep Autoregressive Models<\/a> and <a href=\"https:\/\/data-science-blog.com\/blog\/2022\/02\/19\/deep-generative-modelling\/\">Deep Generative Modelling<\/a>, we will continue our discussion with <strong>V<\/strong>ariational <strong>A<\/strong>uto<strong>E<\/strong>ncoders (VAEs) after covering up DGM basics <\/span><span dir=\"ltr\" role=\"presentation\">and AGMs. Variational autoencoders (VAEs) are a deep learning method to produce synthetic data <\/span><span dir=\"ltr\" role=\"presentation\">(images, texts) by learning the latent representations of the training data. AGMs are sequential models <\/span><span dir=\"ltr\" role=\"presentation\">and generate data based on previous data points by defining tractable conditionals. On the other hand, <\/span><span dir=\"ltr\" role=\"presentation\">VAEs are using latent variable models to infer hidden structure in the underlying data by using the <\/span><span dir=\"ltr\" role=\"presentation\">following intractable distribution function:\u00a0<\/span><\/p>\n<p class=\"ql-center-displayed-equation\"><span class=\"ql-right-eqno\"> (1) <\/span><span class=\"ql-left-eqno\"> \u00a0 <\/span><img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-63b0e673319498bd272db3d72c38b85f_l3.png\" height=\"40\" width=\"202\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"begin{equation*} p_theta(x) = int p_theta(x|z)p_theta(z) dz. end{equation*}\" title=\"Rendered by QuickLaTeX.com\"><\/p>\n<p>The generative process using the above equation can be expressed in the form of a directed graph as shown in Figure ?? (the decoder part), where latent variable <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-8bd69e70af0636790eff9af6c7355651_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"zsim p_theta(z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"71\"> produces meaningful information of <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ef239f2f404470fb78654243563dd915_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"x sim p_theta(x|z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"87\">.<\/p>\n<div id=\"attachment_6037\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-6037\" loading=\"lazy\" class=\"size-full wp-image-6037\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/uploads\/sites\/4\/2022\/04\/variational-auto-encoder-image-encoding-decoding.png\" alt=\"Architectures AE and VAE based on the bottleneck architecture. The decoder part work as a generative model during inference.\" width=\"1595\" height=\"548\"><\/p>\n<p id=\"caption-attachment-6037\" class=\"wp-caption-text\">Figure 1: Architectures AE and VAE based on the bottleneck architecture. The decoder part work as<br \/>a generative model during inference.<\/p>\n<\/div>\n<h3><strong>Autoencoders<\/strong><\/h3>\n<p>Autoencoders (AEs) are the key part of VAEs and are an unsupervised representation learning technique and consist of two main parts, the encoder and the decoder (see Figure ??). The encoders are deep neural networks (mostly convolutional neural networks with imaging data) to learn a lower-dimensional feature representation from training data. The learned latent feature representation <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-4586e340cb83d5b642972e97a288fec2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"z\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\"> usually has a much lower dimension than input <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ede05c264bba0eda080918aaa09c4658_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"x\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\"> and has the most dominant features of <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ede05c264bba0eda080918aaa09c4658_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"x\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\">. The encoders are learning features by performing the convolution at different levels and compression is happening via max-pooling.<\/p>\n<p>On the other hand, the decoders, which are also a deep convolutional neural network are reversing the encoder\u2019s operation. They try to reconstruct the original data <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ede05c264bba0eda080918aaa09c4658_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"x\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\"> from the latent representation <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-4586e340cb83d5b642972e97a288fec2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"z\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\"> using the up-sampling convolutions. The decoders are pretty similar to VAEs generative models as shown in Figure 1, where synthetic images will be generated using the latent variable <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-4586e340cb83d5b642972e97a288fec2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"z\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\">.<\/p>\n<p>During the training of autoencoders, we would like to utilize the unlabeled data and try to minimize the following quadratic loss function:<br \/><a name=\"id3979961283\"><\/a><\/p>\n<p class=\"ql-center-displayed-equation\"><span class=\"ql-right-eqno\"> (2) <\/span><span class=\"ql-left-eqno\"> \u00a0 <\/span><img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-2337442a8c44121aab8ceef9816fb769_l3.png\" height=\"22\" width=\"150\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"begin{equation*} mathcal{L}(theta, phi) = ||x-hat{x}||^2, end{equation*}\" title=\"Rendered by QuickLaTeX.com\"><\/p>\n<p>\nThe above equation tries to minimize the distance between the original input and reconstructed image as shown in Figure 1.<\/p>\n<h3><strong>Variational autoencoders<\/strong><\/h3>\n<p>VAEs are motivated by the decoder part of AEs which can generate the data from latent representation and they are a probabilistic version of AEs which allows us to generate synthetic data with different attributes. VAE can be seen as the decoder part of AE, which learns the set parameters <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-356a08e839ab6974a16448e16e56745d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"theta\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\"> to approximate the conditional <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-6abcab61a7ca0a5d10816c1653db0323_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta(x|z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"55\"> to generate images based on a sample from a true prior, <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-8bd69e70af0636790eff9af6c7355651_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"zsim p_theta(z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"71\">. The true prior <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-2006ed9fc40ced164dd8064d59c33921_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta(z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"39\"> are generally of Gaussian distribution.<\/p>\n<h3><strong>Network Architecture<\/strong><\/h3>\n<p>VAE has a quite similar architecture to AE except for the bottleneck part as shown in Figure 2. in AES, the encoder converts high dimensional input data to low dimensional latent representation in a vector form. On the other hand, VAE\u2019s encoder learns the mean vector and standard deviation diagonal matrix such that <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-73b4a86a96e20b0eae22ee502ac3c831_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"zsim matcal{N}(mu_z, Sigma_x)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"109\"> as it will be performing probabilistic generation of data. Therefore the encoder and decoder should be probabilistic.<\/p>\n<h3><strong>Training<\/strong><\/h3>\n<p>Similar to AGMs training, we would like to maximize the likelihood of the training data. The likelihood of the data for VAEs are mentioned in Equation <a href=\"#id474365903\">1<\/a> and the first term <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-6abcab61a7ca0a5d10816c1653db0323_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta(x|z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"55\"> will be approximated by neural network and the second term <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-281d25eadace5f1ac42638e934e3eff1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p(x)\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"33\"> prior distribution, which is a Gaussian function, therefore, both of them are tractable. However, the integration won\u2019t be tractable because of the high dimensionality of data.<\/p>\n<p>To solve this problem of intractability, the encoder part of AE was utilized to learn the set of parameters <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-5b2be26c0c1341f54b29baddda771346_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"phi\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"11\"> to approximate the conditional <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-c521422bdf6a2139572ebbf3be0c5ed7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"q_phi (z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"54\">. Furthermore, the conditional <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-c521422bdf6a2139572ebbf3be0c5ed7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"q_phi (z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"54\"> will approximate the posterior <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ac9292c49586d36ec06c9b5575b16467_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta (z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"54\">, which is intractable. This additional encoder part will help to derive a lower bound on the data likelihood that will make the likelihood function tractable. In the following we will derive the lower bound of the likelihood function:<\/p>\n<p class=\"ql-center-displayed-equation\"><span class=\"ql-right-eqno\"> (3) <\/span><span class=\"ql-left-eqno\"> \u00a0 <\/span><img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-94567d6202e7ed5971ce2e83cbc2d369_l3.png\" height=\"151\" width=\"667\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"begin{equation*} begin{flalign} begin{aligned} log : p_theta (x) = &amp; mathbf{E}_{zsim q_phi(z|x)} Bigg[log : frac{p_theta (x|z) p_theta (z)}{p_theta (z|x)} : frac{q_phi(z|x)}{q_phi(z|x)}Bigg] \\ = &amp; mathbf{E}_{zsim q_phi(z|x)} Bigg[log : p_theta (x|z)Bigg] - mathbf{E}_{zsim q_phi(z|x)} Bigg[log : frac{q_phi (z|x)} {p_theta (z)}Bigg] + mathbf{E}_{zsim q_phi(z|x)} Bigg[log : frac{q_phi (z|x)}{p_theta (z|x)}Bigg] \\ = &amp; mathbf{E}_{zsim q_phi(z|x)} Big[log : p_theta (x|z)Big] - mathbf{D}_{KL}(q_phi (z|x), p_theta (z)) + mathbf{D}_{KL}(q_phi (z|x), p_theta (z|x)). end{aligned} end{flalign} end{equation*}\" title=\"Rendered by QuickLaTeX.com\"><\/p>\n<p>\nIn the above equation, the first line computes the likelihood using the logarithmic of <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-c342a942c0c352d8e5ca7bfe751ccccb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta (x)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"41\"> and then it is expanded using Bayes theorem with additional constant <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-c4ae9034a655cf189d43ae2769e3cc1f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"q_phi(z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"54\"> multiplication. In the next line, it is expanded using the logarithmic rule and then rearranged. Furthermore, the last two terms in the second line are the definition of KL divergence and the third line is expressed in the same.<\/p>\n<p>In the last line, the first term is representing the reconstruction loss and it will be approximated by the decoder network. This term can be estimated by the reparametrization trick cite{}. The second term is KL divergence between prior distribution <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-2006ed9fc40ced164dd8064d59c33921_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta(z)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"39\"> and the encoder function <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-c521422bdf6a2139572ebbf3be0c5ed7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"q_phi (z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"54\">, both of these functions are following the Gaussian distribution and has the closed-form solution and are tractable. The last term is intractable due to <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-ac9292c49586d36ec06c9b5575b16467_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"p_theta (z|x)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"54\">. However, KL divergence computes the distance between two probability densities and it is always positive. By using this property, the above equation can be approximated as:<br \/><a name=\"id2677436716\"><\/a><\/p>\n<p class=\"ql-center-displayed-equation\"><span class=\"ql-right-eqno\"> (4) <\/span><span class=\"ql-left-eqno\"> \u00a0 <\/span><img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-959a973388a0ab24ad2464bb87d185e7_l3.png\" height=\"32\" width=\"649\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"begin{equation*} log : p_theta (x)geq mathcal{L}(x, phi, theta) , : text{where} : mathcal{L}(x, phi, theta) = mathbf{E}_{zsim q_phi(z|x)} Big[log : p_theta (x|z)Big] - mathbf{D}_{KL}(q_phi (z|x), p_theta (z)). end{equation*}\" title=\"Rendered by QuickLaTeX.com\"><\/p>\n<p>In the above equation, the term <img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-1a94cd25d981a905189a0c7469ff85d1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"mathcal{L}(x, phi, theta)\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"70\"> is presenting the tractable lower bound for the optimization and is also termed as ELBO (Evidence Lower Bound Optimization). During the training process, we maximize ELBO using the following equation:<br \/><a name=\"id3170698914\"><\/a><\/p>\n<p class=\"ql-center-displayed-equation\"><span class=\"ql-right-eqno\"> (5) <\/span><span class=\"ql-left-eqno\"> \u00a0 <\/span><img loading=\"lazy\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/ql-cache\/quicklatex.com-207f6bcb365aa4b865b0af52c8f4b855_l3.png\" height=\"39\" width=\"169\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"begin{equation*} operatorname*{argmax}_{phi, theta} sum_{xin X} mathcal{L}(x, phi, theta). end{equation*}\" title=\"Rendered by QuickLaTeX.com\"><\/p>\n<p>.<\/p>\n<p>Furthermore, the reconstruction loss term can be written using Equation <a href=\"#id3979961283\">2<\/a> as the decoder output is assumed to be following Gaussian distribution. Therefore, this term can be easily transformed to mean squared error (MSE).<\/p>\n<p>During the implementation, the architecture part is straightforward and can be found here. The user has to define the size of latent space, which will be vital in the reconstruction process. Furthermore, the loss function can be minimized using ADAM optimizer with a fixed batch size and a fixed number of epochs.<\/p>\n<div id=\"attachment_6036\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-6036\" loading=\"lazy\" class=\"size-full wp-image-6036\" src=\"https:\/\/data-science-blog.com\/en\/wp-content\/uploads\/sites\/4\/2022\/04\/variational-auto-encoder-image-vae-vs-nvae.png\" alt=\"Figure 2: The results obtained from vanilla VAE (left) and a recent VAE-based generative model NVAE (right)\" width=\"1579\" height=\"353\"><\/p>\n<p id=\"caption-attachment-6036\" class=\"wp-caption-text\">Figure 2: The results obtained from vanilla <strong>VAE<\/strong> (left) and a recent VAE-based generative<br \/>model <strong>NVAE<\/strong> (right)<\/p>\n<\/div>\n<p><span dir=\"ltr\" role=\"presentation\">In the above, we are showing the quality improvement since VAE was introduced by Kingma and<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">Welling [KW14]. NVAE is a relatively new method using a deep hierarchical VAE [VK21].<\/span><\/p>\n<h3><strong><span dir=\"ltr\" role=\"presentation\">Summary<\/span><\/strong><\/h3>\n<p><span dir=\"ltr\" role=\"presentation\">In this blog, we discussed variational autoencoders along with the basics of autoencoders. We covered<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">the main difference between AEs and VAEs along with the derivation of lower bound in VAEs.<\/span> <span dir=\"ltr\" role=\"presentation\">We<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">have shown using two different VAE based methods that VAE is still active research because in general,<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">it produces a blurry outcome.<\/span><\/p>\n<h3><strong><span dir=\"ltr\" role=\"presentation\">Further readings<\/span><\/strong><\/h3>\n<p><span dir=\"ltr\" role=\"presentation\">Here are the couple of links to learn further about VAE-related concepts:<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">1. To learn basics of probability concepts, which were used in this blog, you can check this article.<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">2. To learn more recent and effective VAE-based methods, check out NVAE.<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">3. To understand and utilize a more advance loss function, please refer to this article.<\/span><\/p>\n<h3><strong><span dir=\"ltr\" role=\"presentation\">References<\/span><\/strong><\/h3>\n<p><span dir=\"ltr\" role=\"presentation\">[KW14] Diederik P Kingma and Max Welling. Auto-encoding variational bayes, 2014.<\/span><br role=\"presentation\"><span dir=\"ltr\" role=\"presentation\">[VK21]<\/span> <span dir=\"ltr\" role=\"presentation\">Arash Vahdat and Jan Kautz. Nvae: A deep hierarchical variational autoencoder, 2021.<\/span><\/p>\n<div id=\"author-bio-box\">\n<h3><a href=\"https:\/\/data-science-blog.com\/en\/blog\/author\/sunilyadav\/\" title=\"All posts by Sunil Yadav\" rel=\"author\">Sunil Yadav<\/a><\/h3>\n<div class=\"bio-gravatar\"><img alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/970316518f70bdde11d4df09cf262eb4?s=70&amp;d=mm&amp;r=g\" class=\"avatar avatar-70 photo\" height=\"70\" width=\"70\" loading=\"lazy\"><\/div>\n<p><a target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\/\/www.linkedin.com\/in\/sunil-yadav-9804315a?miniProfileUrn=urnlifs_miniProfileACoAAAyFjzABioeldpBaEuO5tOpf0utOM-kzYdk&amp;lipi=urnlipaged_flagship3_search_srp_all4iVlVv0TnKvm3Q9n4xIA\" class=\"bio-icon bio-icon-linkedin\"><\/a><\/p>\n<p class=\"bio-description\">Sunil Yadav is an experienced researcher with a keen focus on applying academic research to solve real-world problems. He believes a research paper has more value if it can be used for the welfare of society in general and the wellness of people in particular. He finished his PhD in mathematics and computer science and has a focus on computer vision, 3D data modelling, and medical imaging. His research interests revolve around understanding the visual data and producing meaningful output using the different areas of mathematics, including Deep learning, Machine learning, and computer vision.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/data-science-blog.com\/en\/blog\/2022\/04\/19\/variational-autoencoders\/<\/p>\n","protected":false},"author":0,"featured_media":8505,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/posts\/8504"}],"collection":[{"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/comments?post=8504"}],"version-history":[{"count":0,"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/posts\/8504\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/media\/8505"}],"wp:attachment":[{"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/media?parent=8504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/categories?post=8504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wealthrevelation.com\/data-science\/wp-json\/wp\/v2\/tags?post=8504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}