{"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/two-complementary-perspectives-to-continual","title":"Two Complementary Perspectives to Continual Learning: Ask Not Only What to Optimize, But Also How","arxiv_id":"2311.04898","date":"2023-11-08","proceeding":null,"authors":["Timm Hess","Tinne Tuytelaars","Gido M. van de Ven"],"abstract":"Recent years have seen considerable progress in the continual training of deep neural networks, predominantly thanks to approaches that add replay or regularization terms to the loss function to approximate the joint loss over all tasks so far. However, we show that even with a perfect approximation to the joint loss, these approaches still suffer from temporary but substantial forgetting when starting to train on a new task. Motivated by this 'stability gap', we propose that continual learning strategies should focus not only on the optimization objective, but also on the way this objective is optimized. While there is some continual learning work that alters the optimization trajectory (e.g., using gradient projection techniques), this line of research is positioned as alternative to improving the optimization objective, while we argue it should be complementary. In search of empirical support for our proposition, we perform a series of pre-registered experiments combining replay-approximated joint objectives with gradient projection-based optimization routines. However, this first experimental attempt fails to show clear and consistent benefits. Nevertheless, our conceptual arguments, as well as some of our empirical results, demonstrate the distinctive importance of the optimization trajectory in continual learning, thereby opening up a new direction for continual learning research.","url_abs":"https://arxiv.org/abs/2311.04898v2","url_pdf":"https://arxiv.org/pdf/2311.04898v2.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":"two-complementary-perspectives-to-continual","repo_url":"https://github.com/timmhess/twocomplementaryperspectivescl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"continual-learning","task_name":"Continual Learning"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2311.04898","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.04898"}},"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/timmhess/twocomplementaryperspectivescl","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9},"by_repo_kind":{"official":{"samples":9,"ran":9,"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":"16b9e00f007a0abf","entry":"AE_loss","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/models/expert_gate.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/models/expert_gate.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"16b9e00f007a0abf"}},{"code_sha256_prefix":"baa60c6b90daab7c","entry":"check_overwrite_directory","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"helper.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"baa60c6b90daab7c"}},{"code_sha256_prefix":"4468c94aca4d060f","entry":"compare_keys","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/models/dynamic_optimizers.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/models/dynamic_optimizers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4468c94aca4d060f"}},{"code_sha256_prefix":"1c48b422727921a2","entry":"cut_string","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"helper.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1c48b422727921a2"}},{"code_sha256_prefix":"667a50347702db96","entry":"deprecated","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/_annotations.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/_annotations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"667a50347702db96"}},{"code_sha256_prefix":"9bd77285b9ea9767","entry":"experimental","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/_annotations.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/_annotations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9bd77285b9ea9767"}},{"code_sha256_prefix":"c3dd6c1f097353b6","entry":"get_transforms","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"helper.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c3dd6c1f097353b6"}},{"code_sha256_prefix":"551c67f1ad0c8a2c","entry":"reset_optimizer","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/models/dynamic_optimizers.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/models/dynamic_optimizers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"551c67f1ad0c8a2c"}},{"code_sha256_prefix":"d0dc299a23419623","entry":"update_optimizer","repo":"timmhess/twocomplementaryperspectivescl","repo_kind":"official","path":"avalanche/models/dynamic_optimizers.py","file_url":"https://github.com/timmhess/twocomplementaryperspectivescl/blob/HEAD/avalanche/models/dynamic_optimizers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d0dc299a23419623"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}