{"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/independent-mechanism-analysis-a-new-concept","title":"Independent mechanism analysis, a new concept?","arxiv_id":"2106.05200","date":"2021-06-09","proceeding":"NeurIPS 2021 12","authors":["Luigi Gresele","Julius von Kügelgen","Vincent Stimper","Bernhard Schölkopf","Michel Besserve"],"abstract":"Independent component analysis provides a principled framework for unsupervised representation learning, with solid theory on the identifiability of the latent code that generated the data, given only observations of mixtures thereof. Unfortunately, when the mixing is nonlinear, the model is provably nonidentifiable, since statistical independence alone does not sufficiently constrain the problem. Identifiability can be recovered in settings where additional, typically observed variables are included in the generative process. We investigate an alternative path and consider instead including assumptions reflecting the principle of independent causal mechanisms exploited in the field of causality. Specifically, our approach is motivated by thinking of each source as independently influencing the mixing process. This gives rise to a framework which we term independent mechanism analysis. We provide theoretical and empirical evidence that our approach circumvents a number of nonidentifiability issues arising in nonlinear blind source separation.","url_abs":"https://arxiv.org/abs/2106.05200v3","url_pdf":"https://arxiv.org/pdf/2106.05200v3.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":"independent-mechanism-analysis-a-new-concept","repo_url":"https://github.com/lgresele/independent-mechanism-analysis","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"jax","reach":null}],"tasks":[{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"blind-source-separation","task_name":"blind source separation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2106.05200","atlas_url":"https://app.syntology.ai/?focus=2106.05200","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.05200"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/lgresele/independent-mechanism-analysis","reach":null}],"summary":{"unverified":3},"by_repo_kind":{"official":{"samples":3,"ran":0,"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":3,"samples":[{"code_sha256_prefix":"13f91343b3f273aa","entry":"LipSwish","repo":"lgresele/independent-mechanism-analysis","repo_kind":"official","path":"ima/residual.py","file_url":"https://github.com/lgresele/independent-mechanism-analysis/blob/HEAD/ima/residual.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":"13f91343b3f273aa"}},{"code_sha256_prefix":"0ee799a2b1f48c9d","entry":"Residual","repo":"lgresele/independent-mechanism-analysis","repo_kind":"official","path":"ima/residual.py","file_url":"https://github.com/lgresele/independent-mechanism-analysis/blob/HEAD/ima/residual.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":"0ee799a2b1f48c9d"}},{"code_sha256_prefix":"6863a4959e32eff4","entry":"mlp","repo":"lgresele/independent-mechanism-analysis","repo_kind":"official","path":"ima/residual.py","file_url":"https://github.com/lgresele/independent-mechanism-analysis/blob/HEAD/ima/residual.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":"6863a4959e32eff4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}