{"id":28098042,"url":"https://github.com/dynamical-inference/dcl","last_synced_at":"2025-05-13T17:47:55.311Z","repository":{"id":258898616,"uuid":"875721231","full_name":"dynamical-inference/dcl","owner":"dynamical-inference","description":"Official reference implementation of dynamics contrastive learning (DCL).","archived":false,"fork":false,"pushed_at":"2024-10-21T01:21:42.000Z","size":1957,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-11T03:12:12.564Z","etag":null,"topics":["contrastive-learning","dynamical-systems","pytorch","self-supervised-learning"],"latest_commit_sha":null,"homepage":"https://dynamical-inference.ai/dcl","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dynamical-inference.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-20T17:18:37.000Z","updated_at":"2025-05-09T15:07:47.000Z","dependencies_parsed_at":"2024-10-22T05:21:38.924Z","dependency_job_id":null,"html_url":"https://github.com/dynamical-inference/dcl","commit_stats":null,"previous_names":["dynamical-inference/dyncl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynamical-inference%2Fdcl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynamical-inference%2Fdcl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynamical-inference%2Fdcl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dynamical-inference%2Fdcl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dynamical-inference","download_url":"https://codeload.github.com/dynamical-inference/dcl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253996947,"owners_count":21996778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["contrastive-learning","dynamical-systems","pytorch","self-supervised-learning"],"created_at":"2025-05-13T17:47:50.999Z","updated_at":"2025-05-13T17:47:55.305Z","avatar_url":"https://github.com/dynamical-inference.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Self-supervised contrastive learning performs non-linear system identification\n\n[[website](https://dynamical-inference.ai/dyncl)] [[pre-print](https://arxiv.org/abs/2410.14673)]\n\nThis repo contains the code for the `DynCL` algorithm presented in \"Self-supervised contrastive learning performs non-linear system identification\".\n\n**We will open source the code upon publication of our pre-print**. Stay tuned!\nIf you want to get notified about the code release, make sure to `watch 🕶️` the repo!\nIn case you need early access to the codebase (for benchmarking/comparisons, application of DynCL to a dataset, etc.), please send an email to [Steffen Schneider](mailto:steffen.schneider@helmholtz-munich.de).\n\n## Summary\n\nSelf-supervised learning (SSL) approaches have brought tremendous success across many tasks and domains. It has been argued that these successes can be attributed to a link between SSL and identifiable representation learning: Temporal structure and auxiliary variables ensure that latent representations are related to the true underlying generative factors of the data. Here, we deepen this connection and show that SSL can perform system identification in latent space. We propose a new model to uncover linear, switching linear and non-linear dynamics under a non-linear observation model, give theoretical guarantees and validate them empirically.\n\n### Generative process and model\n\n\u003cp\u003e(a) The assumed data-generating process: \u003ci\u003ey\u003c/i\u003e represents the observable input variables, \u003ci\u003ex\u003c/i\u003e denotes the latent variables, and \u003ci\u003eu\u003c/i\u003e is the control input. (b) General formulation of our method: It consists of an encoder \u003ci\u003eh\u003c/i\u003e that is shared across the reference, positive, and negative samples. The method also includes a dynamics model \u003ci\u003ef̂\u003c/i\u003e. Additionally, a (possibly latent) variable \u003ci\u003ez\u003c/i\u003e can be used to parameterize the dynamics model (see section 4).\u003c/p\u003e\n\n\u003cimg width=\"840\" alt=\"image\" src=\".github/img/model.png\"\u003e\n\n### Theory and empirical validation \n\n\u003cp\u003eComprehensive categorization of ground-truth dynamical processes \u003ci\u003ef\u003c/i\u003e and model configurations \u003ci\u003ef̂\u003c/i\u003e. Note, the mixing function \u003ci\u003eg\u003c/i\u003e is always assumed non-linear, and \u003ci\u003eh\u003c/i\u003e is always parameterized as a neural network. For all metrics, we report mean and standard deviation across 3 datasets (5 for Lorenz) and 3 experiment repeats.\u003c/p\u003e\n\n\u003cimg width=\"840\" alt=\"image\" src=\".github/img/overview.png\"\u003e\n\n### Non-linear system identification\n\n\u003cp\u003eContrastive learning of 3D non-linear dynamics following a Lorenz attractor model. (a) Left to right: ground truth dynamics for 10k samples with \u003ci\u003edt = 0.0005\u003c/i\u003e and \u003ci\u003eσ = 0.1\u003c/i\u003e, estimation results for baseline (identity dynamics), DynCL with ∇-SLDS, estimated mode sequence. (b) Empirical identifiability (\u003ci\u003eR²\u003c/i\u003e) between baseline (BAS) and ∇-SLDS for varying numbers of discrete states \u003ci\u003eK\u003c/i\u003e. (c, d) Same layout but for \u003ci\u003edt = 0.01\u003c/i\u003e and \u003ci\u003eσ = 0.001\u003c/i\u003e.\u003c/p\u003e\n\u003cimg width=\"840\" alt=\"image\" src=\".github/img/lorenz.png\"\u003e\n\n\n## Reference\n\n```\n@article{gozalezlaizschmidt2024dyncl,\n  author = {González Laiz, Rodrigo and Schmidt, Tobias and Schneider, Steffen},\n  title={Self-supervised contrastive learning performs non-linear system identification},\n  journal={arxiv},\n  year={2024},\n  month={October},\n  url={https://arxiv.org/abs/2410.14673}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynamical-inference%2Fdcl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdynamical-inference%2Fdcl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynamical-inference%2Fdcl/lists"}