{"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/interaction-asymmetry-a-general-principle-for","title":"Interaction Asymmetry: A General Principle for Learning Composable Abstractions","arxiv_id":"2411.07784","date":"2024-11-12","proceeding":null,"authors":["Jack Brady","Julius von Kügelgen","Sébastien Lachapelle","Simon Buchholz","Thomas Kipf","Wieland Brendel"],"abstract":"Learning disentangled representations of concepts and re-composing them in unseen ways is crucial for generalizing to out-of-domain situations. However, the underlying properties of concepts that enable such disentanglement and compositional generalization remain poorly understood. In this work, we propose the principle of interaction asymmetry which states: \"Parts of the same concept have more complex interactions than parts of different concepts\". We formalize this via block diagonality conditions on the $(n+1)$th order derivatives of the generator mapping concepts to observed data, where different orders of \"complexity\" correspond to different $n$. Using this formalism, we prove that interaction asymmetry enables both disentanglement and compositional generalization. Our results unify recent theoretical results for learning concepts of objects, which we show are recovered as special cases with $n\\!=\\!0$ or $1$. We provide results for up to $n\\!=\\!2$, thus extending these prior works to more flexible generator functions, and conjecture that the same proof strategies generalize to larger $n$. Practically, our theory suggests that, to disentangle concepts, an autoencoder should penalize its latent capacity and the interactions between concepts during decoding. We propose an implementation of these criteria using a flexible Transformer-based VAE, with a novel regularizer on the attention weights of the decoder. On synthetic image datasets consisting of objects, we provide evidence that this model can achieve comparable object disentanglement to existing models that use more explicit object-centric priors.","url_abs":"https://arxiv.org/abs/2411.07784v1","url_pdf":"https://arxiv.org/pdf/2411.07784v1.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":"interaction-asymmetry-a-general-principle-for","repo_url":"https://github.com/jackbrady/interaction-asymmetry","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"disentanglement","task_name":"Disentanglement"}],"methods":[{"method_slug":"attention","method_name":"Attention"},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2411.07784","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.07784"}},"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/jackbrady/interaction-asymmetry","reach":{"status":"ok"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"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":10,"samples":[{"code_sha256_prefix":"e4df5adc692667d4","entry":"build_grid","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"models/positional_encodings.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/models/positional_encodings.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":"e4df5adc692667d4"}},{"code_sha256_prefix":"a88bc851c360ca14","entry":"compute_grid_indices","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"models/positional_encodings.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/models/positional_encodings.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":"a88bc851c360ca14"}},{"code_sha256_prefix":"f71dd20a68b13c95","entry":"compute_jac_iter_full","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"eval/eval_metrics.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/eval/eval_metrics.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":"f71dd20a68b13c95"}},{"code_sha256_prefix":"201b6affd84c78ca","entry":"get_ari","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"eval/eval_metrics.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/eval/eval_metrics.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":"201b6affd84c78ca"}},{"code_sha256_prefix":"18c8d59f841bc0fa","entry":"get_recon_loss","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"eval/eval_metrics.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/eval/eval_metrics.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":"18c8d59f841bc0fa"}},{"code_sha256_prefix":"c48102623e2b7495","entry":"set_seed","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"utilities/setup_utils.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/utilities/setup_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":"c48102623e2b7495"}},{"code_sha256_prefix":"229d4fb138f99c0a","entry":"setup_direcs","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"utilities/setup_utils.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/utilities/setup_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":"229d4fb138f99c0a"}},{"code_sha256_prefix":"ac9fda0dbf8ef366","entry":"vis_interactions","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"utilities/vis_utils.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/utilities/vis_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":"ac9fda0dbf8ef366"}},{"code_sha256_prefix":"31d6c62ea40a1bfd","entry":"vis_reconstructions","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"utilities/vis_utils.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/utilities/vis_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":"31d6c62ea40a1bfd"}},{"code_sha256_prefix":"0ca5802b0802894b","entry":"vis_slot_pixel_attn_mask","repo":"jackbrady/interaction-asymmetry","repo_kind":"official","path":"utilities/vis_utils.py","file_url":"https://github.com/jackbrady/interaction-asymmetry/blob/HEAD/utilities/vis_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":"0ca5802b0802894b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}