{"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/mirror-and-preconditioned-gradient-descent-in","title":"Mirror and Preconditioned Gradient Descent in Wasserstein Space","arxiv_id":"2406.08938","date":"2024-06-13","proceeding":null,"authors":["Clément Bonet","Théo Uscidda","Adam David","Pierre-Cyril Aubin-Frankowski","Anna Korba"],"abstract":"As the problem of minimizing functionals on the Wasserstein space encompasses many applications in machine learning, different optimization algorithms on $\\mathbb{R}^d$ have received their counterpart analog on the Wasserstein space. We focus here on lifting two explicit algorithms: mirror descent and preconditioned gradient descent. These algorithms have been introduced to better capture the geometry of the function to minimize and are provably convergent under appropriate (namely relative) smoothness and convexity conditions. Adapting these notions to the Wasserstein space, we prove guarantees of convergence of some Wasserstein-gradient-based discrete-time schemes for new pairings of objective functionals and regularizers. The difficulty here is to carefully select along which curves the functionals should be smooth and convex. We illustrate the advantages of adapting the geometry induced by the regularizer on ill-conditioned optimization tasks, and showcase the improvement of choosing different discrepancies and geometries in a computational biology task of aligning single-cells.","url_abs":"https://arxiv.org/abs/2406.08938v2","url_pdf":"https://arxiv.org/pdf/2406.08938v2.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":"mirror-and-preconditioned-gradient-descent-in","repo_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok"}}],"tasks":[],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.08938","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.08938"}},"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/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","reach":{"status":"ok"}}],"summary":{"ran":13,"unverified":2},"by_repo_kind":{"official":{"samples":15,"ran":13,"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":15,"samples":[{"code_sha256_prefix":"4ca1c4e3be0976ac","entry":"ent","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/estimator_entropy.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/estimator_entropy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4ca1c4e3be0976ac"}},{"code_sha256_prefix":"061339e08118d70f","entry":"fill_diagonal","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/estimator_entropy.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/estimator_entropy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"061339e08118d70f"}},{"code_sha256_prefix":"c5cb4bbca6ccc429","entry":"fwd_solver","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/gd.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/gd.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c5cb4bbca6ccc429"}},{"code_sha256_prefix":"de0ddc485474c498","entry":"gaussian_kernel","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mmdf.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mmdf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"de0ddc485474c498"}},{"code_sha256_prefix":"08da1440ea25282e","entry":"gen_matrix_with_eigs","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"xps_Gaussians/xp_gaussian.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/xps_Gaussians/xp_gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"08da1440ea25282e"}},{"code_sha256_prefix":"4bb4069f124b6f5f","entry":"get_potential","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/swf.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/swf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4bb4069f124b6f5f"}},{"code_sha256_prefix":"3aa3ac0cc5796225","entry":"gradient_descent","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/gd.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/gd.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3aa3ac0cc5796225"}},{"code_sha256_prefix":"f37dfdac0d4f70ee","entry":"imq_kernel","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mmdf.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mmdf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f37dfdac0d4f70ee"}},{"code_sha256_prefix":"969166020ca100c0","entry":"kl_divergence","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"xps_Gaussians/xp_gaussian.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/xps_Gaussians/xp_gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"969166020ca100c0"}},{"code_sha256_prefix":"52ff60389b3a2228","entry":"laplace_kernel","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mmdf.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mmdf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"52ff60389b3a2228"}},{"code_sha256_prefix":"b81bc59373b998ed","entry":"mirror_descent_entropy","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mirror_gaussians.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mirror_gaussians.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b81bc59373b998ed"}},{"code_sha256_prefix":"6e4b6e8722e3b41d","entry":"plot_trajectory","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/utils_plot.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/utils_plot.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6e4b6e8722e3b41d"}},{"code_sha256_prefix":"5520a0a9dbc6a754","entry":"target_grad_sw","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/swf.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/swf.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5520a0a9dbc6a754"}},{"code_sha256_prefix":"becb8047c46a5257","entry":"forward_backward","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mirror_gaussians.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mirror_gaussians.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"becb8047c46a5257"}},{"code_sha256_prefix":"fbc6d7665e4fc746","entry":"mirror_descent_kl","repo":"clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space","repo_kind":"official","path":"lib_jax/mirror_gaussians.py","file_url":"https://github.com/clbonet/Mirror_and_Preconditioned_Gradient_Descent_in_Wasserstein_Space/blob/HEAD/lib_jax/mirror_gaussians.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fbc6d7665e4fc746"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}