{"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/generalized-schrodinger-bridge-matching","title":"Generalized Schrödinger Bridge Matching","arxiv_id":"2310.02233","date":"2023-10-03","proceeding":null,"authors":["Guan-Horng Liu","Yaron Lipman","Maximilian Nickel","Brian Karrer","Evangelos A. Theodorou","Ricky T. Q. Chen"],"abstract":"Modern distribution matching algorithms for training diffusion or flow models directly prescribe the time evolution of the marginal distributions between two boundary distributions. In this work, we consider a generalized distribution matching setup, where these marginals are only implicitly described as a solution to some task-specific objective function. The problem setup, known as the Generalized Schr\\\"odinger Bridge (GSB), appears prevalently in many scientific areas both within and without machine learning. We propose Generalized Schr\\\"odinger Bridge Matching (GSBM), a new matching algorithm inspired by recent advances, generalizing them beyond kinetic energy minimization and to account for task-specific state costs. We show that such a generalization can be cast as solving conditional stochastic optimal control, for which efficient variational approximations can be used, and further debiased with the aid of path integral theory. Compared to prior methods for solving GSB problems, our GSBM algorithm better preserves a feasible transport map between the boundary distributions throughout training, thereby enabling stable convergence and significantly improved scalability. We empirically validate our claims on an extensive suite of experimental setups, including crowd navigation, opinion depolarization, LiDAR manifolds, and image domain transfer. Our work brings new algorithmic opportunities for training diffusion models enhanced with task-specific optimality structures. Code available at https://github.com/facebookresearch/generalized-schrodinger-bridge-matching","url_abs":"https://arxiv.org/abs/2310.02233v2","url_pdf":"https://arxiv.org/pdf/2310.02233v2.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":"generalized-schrodinger-bridge-matching","repo_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.02233","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.02233"}},"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/facebookresearch/generalized-schrodinger-bridge-matching","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran":16,"ran_honours":1,"unverified":4},"by_repo_kind":{"official":{"samples":21,"ran":17,"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":21,"samples":[{"code_sha256_prefix":"c0feeff7ebd754aa","entry":"base2_fourier_features","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/unet.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/unet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c0feeff7ebd754aa"}},{"code_sha256_prefix":"f2e746c7e4f45b7b","entry":"bm_loss","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/match_loss.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/match_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f2e746c7e4f45b7b"}},{"code_sha256_prefix":"3fb9c8c86c9d1724","entry":"build_img_loss_fn","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/gaussian_path.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/gaussian_path.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3fb9c8c86c9d1724"}},{"code_sha256_prefix":"6b97bcbf23260edd","entry":"build_loss_fn","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/gaussian_path.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/gaussian_path.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6b97bcbf23260edd"}},{"code_sha256_prefix":"3ca8e54de09b8c99","entry":"build_optim","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/gaussian_path.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/gaussian_path.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3ca8e54de09b8c99"}},{"code_sha256_prefix":"9968fceea727fff9","entry":"build_partition","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"afhq_sample.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/afhq_sample.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9968fceea727fff9"}},{"code_sha256_prefix":"5264bc4910d96ce6","entry":"cubic_interp1d","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/interp1d.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/interp1d.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5264bc4910d96ce6"}},{"code_sha256_prefix":"c5dda1a3509303bb","entry":"est_entropy_cost","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/evaluator.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/evaluator.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c5dda1a3509303bb"}},{"code_sha256_prefix":"64f8afb8755d4452","entry":"get_direction","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"afhq_sample.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/afhq_sample.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"64f8afb8755d4452"}},{"code_sha256_prefix":"3405bfb64f80e5c7","entry":"get_dist_boundary","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/dataset.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3405bfb64f80e5c7"}},{"code_sha256_prefix":"6c3287f25897592a","entry":"get_sampler","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/dataset.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6c3287f25897592a"}},{"code_sha256_prefix":"082ad53a03766bc9","entry":"identity_map","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/unet.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/unet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"082ad53a03766bc9"}},{"code_sha256_prefix":"d3376279888bc791","entry":"laplacian","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/match_loss.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/match_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d3376279888bc791"}},{"code_sha256_prefix":"6821bc6bb1e9a187","entry":"linear_interp1d","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/interp1d.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/interp1d.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6821bc6bb1e9a187"}},{"code_sha256_prefix":"37fb022c60d70c5c","entry":"normal_logprob","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/dataset.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/dataset.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"37fb022c60d70c5c"}},{"code_sha256_prefix":"a3f751b2478d9a71","entry":"qt_quad_cost","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/experimental.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/experimental.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a3f751b2478d9a71"}},{"code_sha256_prefix":"d0bda32f4b2dc376","entry":"shuffle","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/evaluator.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/evaluator.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d0bda32f4b2dc376"}},{"code_sha256_prefix":"d1843fddf89b8981","entry":"build_net","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/network.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/network.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":"d1843fddf89b8981"}},{"code_sha256_prefix":"27458acd5187086c","entry":"eam_loss_trajs","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/match_loss.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/match_loss.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":"27458acd5187086c"}},{"code_sha256_prefix":"74ca727bb92ec9ce","entry":"odeint_gt","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/experimental.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/experimental.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":"74ca727bb92ec9ce"}},{"code_sha256_prefix":"226e870e5736cbec","entry":"ut_quad_cost","repo":"facebookresearch/generalized-schrodinger-bridge-matching","repo_kind":"official","path":"gsbm/experimental.py","file_url":"https://github.com/facebookresearch/generalized-schrodinger-bridge-matching/blob/HEAD/gsbm/experimental.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":"226e870e5736cbec"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}