{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/constraining-variational-inference-with","title":"Constraining Variational Inference with Geometric Jensen-Shannon Divergence","arxiv_id":"2006.10599","date":"2020-06-18","proceeding":"NeurIPS 2020 12","authors":["Jacob Deasy","Nikola Simidjievski","Pietro Liò"],"abstract":"We examine the problem of controlling divergences for latent space regularisation in variational autoencoders. Specifically, when aiming to reconstruct example $x\\in\\mathbb{R}^{m}$ via latent space $z\\in\\mathbb{R}^{n}$ ($n\\leq m$), while balancing this against the need for generalisable latent representations. We present a regularisation mechanism based on the skew-geometric Jensen-Shannon divergence $\\left(\\textrm{JS}^{\\textrm{G}_{\\alpha}}\\right)$. We find a variation in $\\textrm{JS}^{\\textrm{G}_{\\alpha}}$, motivated by limiting cases, which leads to an intuitive interpolation between forward and reverse KL in the space of both distributions and divergences. We motivate its potential benefits for VAEs through low-dimensional examples, before presenting quantitative and qualitative results. Our experiments demonstrate that skewing our variant of $\\textrm{JS}^{\\textrm{G}_{\\alpha}}$, in the context of $\\textrm{JS}^{\\textrm{G}_{\\alpha}}$-VAEs, leads to better reconstruction and generation when compared to several baseline VAEs. Our approach is entirely unsupervised and utilises only one hyperparameter which can be easily interpreted in latent space.","url_abs":"https://arxiv.org/abs/2006.10599v3","url_pdf":"https://arxiv.org/pdf/2006.10599v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"constraining-variational-inference-with","repo_url":"https://github.com/jacobdeasy/geometric-js","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"variational-inference","task_name":"Variational Inference"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.10599","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.10599"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jacobdeasy/geometric-js","reach":null}],"summary":{"ran_honours":1,"ran_draft_wrong":3,"unverified":2},"by_repo_kind":{"official":{"samples":6,"ran":4,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":6,"samples":[{"code_sha256_prefix":"3f7071e0c1942e0e","entry":"_get_mu_var","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3f7071e0c1942e0e"}},{"code_sha256_prefix":"5ac2b37980351f07","entry":"_gjs_normal_loss","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5ac2b37980351f07"}},{"code_sha256_prefix":"acc469c735ceae4e","entry":"_kl_normal_loss","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"acc469c735ceae4e"}},{"code_sha256_prefix":"43d00c038270cf52","entry":"_reconstruction_loss","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"43d00c038270cf52"}},{"code_sha256_prefix":"f95f43135a1ae56d","entry":"BaseLoss","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f95f43135a1ae56d"}},{"code_sha256_prefix":"9cdead6254050640","entry":"GeometricJSLoss","repo":"jacobdeasy/geometric-js","repo_kind":"official","path":"vae/models/losses.py","file_url":"https://github.com/jacobdeasy/geometric-js/blob/HEAD/vae/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9cdead6254050640"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}