{"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/latent-space-symmetry-discovery","title":"Latent Space Symmetry Discovery","arxiv_id":"2310.00105","date":"2023-09-29","proceeding":null,"authors":["Jianke Yang","Nima Dehmamy","Robin Walters","Rose Yu"],"abstract":"Equivariant neural networks require explicit knowledge of the symmetry group. Automatic symmetry discovery methods aim to relax this constraint and learn invariance and equivariance from data. However, existing symmetry discovery methods are limited to simple linear symmetries and cannot handle the complexity of real-world data. We propose a novel generative model, Latent LieGAN (LaLiGAN), which can discover symmetries of nonlinear group actions. It learns a mapping from the data space to a latent space where the symmetries become linear and simultaneously discovers symmetries in the latent space. Theoretically, we show that our model can express nonlinear symmetries under some conditions about the group action. Experimentally, we demonstrate that our method can accurately discover the intrinsic symmetry in high-dimensional dynamical systems. LaLiGAN also results in a well-structured latent space that is useful for downstream tasks including equation discovery and long-term forecasting.","url_abs":"https://arxiv.org/abs/2310.00105v3","url_pdf":"https://arxiv.org/pdf/2310.00105v3.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":"latent-space-symmetry-discovery","repo_url":"https://github.com/jiankeyang/laligan","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"equation-discovery","task_name":"Equation Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2310.00105","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.00105"}},"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/jiankeyang/laligan","reach":{"status":"ok"}}],"summary":{"ran":14,"unverified":4},"by_repo_kind":{"official":{"samples":18,"ran":14,"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":18,"samples":[{"code_sha256_prefix":"9f0c98aff853fe98","entry":"H_lv","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/lotka.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/lotka.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":"9f0c98aff853fe98"}},{"code_sha256_prefix":"cd8724eb8db7bed5","entry":"SINDyConst","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/sindy.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/sindy.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":"cd8724eb8db7bed5"}},{"code_sha256_prefix":"76f53fc695e1d269","entry":"SINDyPoly1","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/sindy.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/sindy.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":"76f53fc695e1d269"}},{"code_sha256_prefix":"71279450fd2cd00d","entry":"SINDyPoly2","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/sindy.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/sindy.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":"71279450fd2cd00d"}},{"code_sha256_prefix":"9a0145f1b199d5fc","entry":"affine_coord","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/utils.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":"9a0145f1b199d5fc"}},{"code_sha256_prefix":"2cdfaa2a1c228aef","entry":"generate_pendulum_data","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/pendulum.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/pendulum.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":"2cdfaa2a1c228aef"}},{"code_sha256_prefix":"ff8ff7d594be8206","entry":"generate_random_ics","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/lotka.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/lotka.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":"ff8ff7d594be8206"}},{"code_sha256_prefix":"c7392adcc430b122","entry":"get_low_dim_pendulum_data","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/pendulum.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/pendulum.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":"c7392adcc430b122"}},{"code_sha256_prefix":"4ee77dcaee962635","entry":"half_circle","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/double_bump.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/double_bump.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":"4ee77dcaee962635"}},{"code_sha256_prefix":"add68527352c9df2","entry":"lotka_volterra","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/lotka.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/lotka.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":"add68527352c9df2"}},{"code_sha256_prefix":"cb8d5658aac9d306","entry":"read_off","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/modelnet.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/modelnet.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":"cb8d5658aac9d306"}},{"code_sha256_prefix":"3e819bf465cf2436","entry":"rectangle","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/double_bump.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/double_bump.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":"3e819bf465cf2436"}},{"code_sha256_prefix":"803f1e337c817805","entry":"so","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/utils.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":"803f1e337c817805"}},{"code_sha256_prefix":"fc4b4d943fbca646","entry":"triangle","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/double_bump.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/double_bump.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":"fc4b4d943fbca646"}},{"code_sha256_prefix":"de0fee302f192a6e","entry":"get_dataset","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/utils.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":"de0fee302f192a6e"}},{"code_sha256_prefix":"8a871dcc0d085010","entry":"get_pendulum_data","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/pendulum.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/pendulum.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":"8a871dcc0d085010"}},{"code_sha256_prefix":"4dfcfa4c3aa08f03","entry":"parse_config","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/parser_utils.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/parser_utils.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":"4dfcfa4c3aa08f03"}},{"code_sha256_prefix":"6610b131046c3892","entry":"render","repo":"jiankeyang/laligan","repo_kind":"official","path":"src/data_utils/modelnet.py","file_url":"https://github.com/jiankeyang/laligan/blob/HEAD/src/data_utils/modelnet.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":"6610b131046c3892"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}