{"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/meta-learning-bidirectional-update-rules","title":"Meta-Learning Bidirectional Update Rules","arxiv_id":"2104.04657","date":"2021-04-10","proceeding":null,"authors":["Mark Sandler","Max Vladymyrov","Andrey Zhmoginov","Nolan Miller","Andrew Jackson","Tom Madams","Blaise Aguera y Arcas"],"abstract":"In this paper, we introduce a new type of generalized neural network where neurons and synapses maintain multiple states. We show that classical gradient-based backpropagation in neural networks can be seen as a special case of a two-state network where one state is used for activations and another for gradients, with update rules derived from the chain rule. In our generalized framework, networks have neither explicit notion of nor ever receive gradients. The synapses and neurons are updated using a bidirectional Hebb-style update rule parameterized by a shared low-dimensional \"genome\". We show that such genomes can be meta-learned from scratch, using either conventional optimization techniques, or evolutionary strategies, such as CMA-ES. Resulting update rules generalize to unseen tasks and train faster than gradient descent based optimizers for several standard computer vision and synthetic tasks.","url_abs":"https://arxiv.org/abs/2104.04657v2","url_pdf":"https://arxiv.org/pdf/2104.04657v2.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":"meta-learning-bidirectional-update-rules","repo_url":"https://github.com/google-research/google-research/tree/master/blur","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"jax","reach":null}],"tasks":[{"task_slug":"meta-learning","task_name":"Meta-Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2104.04657","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.04657"}},"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/google-research/google-research/tree/master/blur","reach":null}],"summary":{"ran":1,"ran_draft_wrong":1,"unverified":2},"by_repo_kind":{"official":{"samples":4,"ran":2,"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":"f67d7efae25ed9e5","entry":"encoder_w","repo":"google-research/google-research","repo_kind":"official","path":"meta_learning_without_memorization/pose_code/np_bbb.py","file_url":"https://github.com/google-research/google-research/blob/HEAD/meta_learning_without_memorization/pose_code/np_bbb.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":"f67d7efae25ed9e5"}},{"code_sha256_prefix":"503db301e1432cad","entry":"sampling","repo":"google-research/google-research","repo_kind":"official","path":"meta_learning_without_memorization/pose_code/np_bbb.py","file_url":"https://github.com/google-research/google-research/blob/HEAD/meta_learning_without_memorization/pose_code/np_bbb.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"503db301e1432cad"}},{"code_sha256_prefix":"01f21b7037fcaf57","entry":"encoder_r","repo":"google-research/google-research","repo_kind":"official","path":"meta_learning_without_memorization/pose_code/np_bbb.py","file_url":"https://github.com/google-research/google-research/blob/HEAD/meta_learning_without_memorization/pose_code/np_bbb.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":"01f21b7037fcaf57"}},{"code_sha256_prefix":"cd8cea3350fad622","entry":"xy_to_z","repo":"google-research/google-research","repo_kind":"official","path":"meta_learning_without_memorization/pose_code/np_bbb.py","file_url":"https://github.com/google-research/google-research/blob/HEAD/meta_learning_without_memorization/pose_code/np_bbb.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":"cd8cea3350fad622"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}