{"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/causal-representation-learning-made","title":"Causal Representation Learning Made Identifiable by Grouping of Observational Variables","arxiv_id":"2310.15709","date":"2023-10-24","proceeding":null,"authors":["Hiroshi Morioka","Aapo Hyvärinen"],"abstract":"A topic of great current interest is Causal Representation Learning (CRL), whose goal is to learn a causal model for hidden features in a data-driven manner. Unfortunately, CRL is severely ill-posed since it is a combination of the two notoriously ill-posed problems of representation learning and causal discovery. Yet, finding practical identifiability conditions that guarantee a unique solution is crucial for its practical applicability. Most approaches so far have been based on assumptions on the latent causal mechanisms, such as temporal causality, or existence of supervision or interventions; these can be too restrictive in actual applications. Here, we show identifiability based on novel, weak constraints, which requires no temporal structure, intervention, nor weak supervision. The approach is based on assuming the observational mixing exhibits a suitable grouping of the observational variables. We also propose a novel self-supervised estimation framework consistent with the model, prove its statistical consistency, and experimentally show its superior CRL performances compared to the state-of-the-art baselines. We further demonstrate its robustness against latent confounders and causal cycles.","url_abs":"https://arxiv.org/abs/2310.15709v2","url_pdf":"https://arxiv.org/pdf/2310.15709v2.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":"causal-representation-learning-made","repo_url":"https://github.com/hmorioka/gcarl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.15709","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.15709"}},"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/hmorioka/gcarl","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":5,"ran_draft_wrong":1,"unverified":1},"by_repo_kind":{"official":{"samples":7,"ran":6,"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":0,"samples":[{"code_sha256_prefix":"aadafdde9f61d6f7","entry":"gen_net","repo":"hmorioka/gcarl","repo_kind":"official","path":"subfunc/generate_dataset.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/subfunc/generate_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aadafdde9f61d6f7"}},{"code_sha256_prefix":"8cc11b69747da417","entry":"gen_net_dag","repo":"hmorioka/gcarl","repo_kind":"official","path":"subfunc/generate_dataset.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/subfunc/generate_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8cc11b69747da417"}},{"code_sha256_prefix":"60f32cea809132df","entry":"make_cost_matrix","repo":"hmorioka/gcarl","repo_kind":"official","path":"subfunc/munkres.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/subfunc/munkres.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"60f32cea809132df"}},{"code_sha256_prefix":"2e4e71a1d5589fc8","entry":"w_permute","repo":"hmorioka/gcarl","repo_kind":"official","path":"gcarl/utils.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/gcarl/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2e4e71a1d5589fc8"}},{"code_sha256_prefix":"3a09c60e4da6bd1b","entry":"w_threshold","repo":"hmorioka/gcarl","repo_kind":"official","path":"gcarl/utils.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/gcarl/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3a09c60e4da6bd1b"}},{"code_sha256_prefix":"8e9723eeb23e5649","entry":"w_to_directed","repo":"hmorioka/gcarl","repo_kind":"official","path":"gcarl/utils.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/gcarl/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8e9723eeb23e5649"}},{"code_sha256_prefix":"e819903465fc4d8e","entry":"generate_dataset","repo":"hmorioka/gcarl","repo_kind":"official","path":"subfunc/generate_dataset.py","file_url":"https://github.com/hmorioka/gcarl/blob/HEAD/subfunc/generate_dataset.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e819903465fc4d8e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}