{"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/statistical-and-geometrical-properties-of","title":"Statistical and Geometrical properties of regularized Kernel Kullback-Leibler divergence","arxiv_id":"2408.16543","date":"2024-08-29","proceeding":null,"authors":["Clémentine Chazal","Anna Korba","Francis Bach"],"abstract":"In this paper, we study the statistical and geometrical properties of the Kullback-Leibler divergence with kernel covariance operators (KKL) introduced by Bach [2022]. Unlike the classical Kullback-Leibler (KL) divergence that involves density ratios, the KKL compares probability distributions through covariance operators (embeddings) in a reproducible kernel Hilbert space (RKHS), and compute the Kullback-Leibler quantum divergence. This novel divergence hence shares parallel but different aspects with both the standard Kullback-Leibler between probability distributions and kernel embeddings metrics such as the maximum mean discrepancy. A limitation faced with the original KKL divergence is its inability to be defined for distributions with disjoint supports. To solve this problem, we propose in this paper a regularised variant that guarantees that the divergence is well defined for all distributions. We derive bounds that quantify the deviation of the regularised KKL to the original one, as well as finite-sample bounds. In addition, we provide a closed-form expression for the regularised KKL, specifically applicable when the distributions consist of finite sets of points, which makes it implementable. Furthermore, we derive a Wasserstein gradient descent scheme of the KKL divergence in the case of discrete distributions, and study empirically its properties to transport a set of points to a target distribution.","url_abs":"https://arxiv.org/abs/2408.16543v2","url_pdf":"https://arxiv.org/pdf/2408.16543v2.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":"statistical-and-geometrical-properties-of","repo_url":"https://github.com/cclementine25/kkl-divergence-gradient-flows","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2408.16543","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.16543"}},"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":"deterministic:regex_extraction","url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cclementine25/kkl-divergence-gradient-flows","reach":null}],"summary":{"ran_draft_wrong":1,"ran":20,"ran_violates":1,"unverified":2},"by_repo_kind":{"official":{"samples":2,"ran":2,"repositories":1},"found_in_text":{"samples":22,"ran":20,"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":24,"samples":[{"code_sha256_prefix":"e1793b3bb6c0a8d0","entry":"KKL","repo":"cclementine25/kkl-divergence-gradient-flows","repo_kind":"official","path":"Regularized/kkl/divergences.py","file_url":"https://github.com/cclementine25/kkl-divergence-gradient-flows/blob/HEAD/Regularized/kkl/divergences.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e1793b3bb6c0a8d0"}},{"code_sha256_prefix":"ef69d628412393fc","entry":"WGrad_KKL","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/divergences.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/divergences.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":"ef69d628412393fc"}},{"code_sha256_prefix":"d2e91a24a5daf9dd","entry":"dk_gauss","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/kernels.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/kernels.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":"d2e91a24a5daf9dd"}},{"code_sha256_prefix":"39b85c7a59cab838","entry":"dual_kale_objective","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.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":"39b85c7a59cab838"}},{"code_sha256_prefix":"315c972d7076c254","entry":"gaussian","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/generate_data.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/generate_data.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":"315c972d7076c254"}},{"code_sha256_prefix":"6fb23c47226c3604","entry":"gaussian_kernel","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.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":"6fb23c47226c3604"}},{"code_sha256_prefix":"e0d3e1933eb6c0cc","entry":"get_logger","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/config.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/config.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":"e0d3e1933eb6c0cc"}},{"code_sha256_prefix":"36014b23f5783ac2","entry":"get_scale","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/plotting.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/plotting.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":"36014b23f5783ac2"}},{"code_sha256_prefix":"66fc296b4a9fabc4","entry":"grad_dual_kale_obj","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.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":"66fc296b4a9fabc4"}},{"code_sha256_prefix":"085219670cbf19c6","entry":"gradient_descent","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/gradient_descent.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/gradient_descent.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":"085219670cbf19c6"}},{"code_sha256_prefix":"3ea66eb12b5f0390","entry":"hess_dual_kale_obj","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kale.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":"3ea66eb12b5f0390"}},{"code_sha256_prefix":"767c90fd9e4d01c4","entry":"k_gauss","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/kernels.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/kernels.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":"767c90fd9e4d01c4"}},{"code_sha256_prefix":"12a78faf896055fe","entry":"laplace_kernel","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.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":"12a78faf896055fe"}},{"code_sha256_prefix":"9f9fb7836d5b6f54","entry":"log_ou_0","repo":"cclementine25/kkl-divergence-gradient-flows","repo_kind":"official","path":"Regularized/kkl/divergences.py","file_url":"https://github.com/cclementine25/kkl-divergence-gradient-flows/blob/HEAD/Regularized/kkl/divergences.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9f9fb7836d5b6f54"}},{"code_sha256_prefix":"e49ee0157f166546","entry":"make_updater","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/plotting.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/plotting.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":"e49ee0157f166546"}},{"code_sha256_prefix":"b5a158d415e6e554","entry":"mixt_gauss","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/generate_data.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/generate_data.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":"b5a158d415e6e554"}},{"code_sha256_prefix":"8d45b931b21286e0","entry":"mmd","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.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":"8d45b931b21286e0"}},{"code_sha256_prefix":"bd4ea51ac588e009","entry":"mmd_first_variation","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.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":"bd4ea51ac588e009"}},{"code_sha256_prefix":"76a106f1c87c70c6","entry":"mmd_k","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/mmd.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":"76a106f1c87c70c6"}},{"code_sha256_prefix":"cbc9020c26136013","entry":"negative_distance_kernel","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/kernels.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":"cbc9020c26136013"}},{"code_sha256_prefix":"a8177ee54e95ad4a","entry":"rings","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kkl/generate_data.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kkl/generate_data.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":"a8177ee54e95ad4a"}},{"code_sha256_prefix":"aa565d53d151fdea","entry":"unadjusted_langevin_algorithm","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/extras.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/extras.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":"aa565d53d151fdea"}},{"code_sha256_prefix":"32b535b80fc71fd8","entry":"gradient_flow","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/gradient_flow.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/gradient_flow.py","link_basis":"plan_row","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":"32b535b80fc71fd8"}},{"code_sha256_prefix":"2abe9e31184b219d","entry":"gradient_flow","repo":"clementinechazal/KKL-divergence-gradient-flows","repo_kind":"found_in_text","path":"Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/gradient_flow_2.py","file_url":"https://github.com/clementinechazal/KKL-divergence-gradient-flows/blob/HEAD/Regularized/kale_flow_master/kernel_wasserstein_flows/kernel_wasserstein_flows/gradient_flow_2.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":"2abe9e31184b219d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}