{"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/balanced-destruction-reconstruction-dynamics","title":"Balanced Destruction-Reconstruction Dynamics for Memory-replay Class Incremental Learning","arxiv_id":"2308.01698","date":"2023-08-03","proceeding":null,"authors":["YuHang Zhou","Jiangchao Yao","Feng Hong","Ya zhang","Yanfeng Wang"],"abstract":"Class incremental learning (CIL) aims to incrementally update a trained model with the new classes of samples (plasticity) while retaining previously learned ability (stability). To address the most challenging issue in this goal, i.e., catastrophic forgetting, the mainstream paradigm is memory-replay CIL, which consolidates old knowledge by replaying a small number of old classes of samples saved in the memory. Despite effectiveness, the inherent destruction-reconstruction dynamics in memory-replay CIL are an intrinsic limitation: if the old knowledge is severely destructed, it will be quite hard to reconstruct the lossless counterpart. Our theoretical analysis shows that the destruction of old knowledge can be effectively alleviated by balancing the contribution of samples from the current phase and those saved in the memory. Motivated by this theoretical finding, we propose a novel Balanced Destruction-Reconstruction module (BDR) for memory-replay CIL, which can achieve better knowledge reconstruction by reducing the degree of maximal destruction of old knowledge. Specifically, to achieve a better balance between old knowledge and new classes, the proposed BDR module takes into account two factors: the variance in training status across different classes and the quantity imbalance of samples from the current phase and memory. By dynamically manipulating the gradient during training based on these factors, BDR can effectively alleviate knowledge destruction and improve knowledge reconstruction. Extensive experiments on a range of CIL benchmarks have shown that as a lightweight plug-and-play module, BDR can significantly improve the performance of existing state-of-the-art methods with good generalization.","url_abs":"https://arxiv.org/abs/2308.01698v1","url_pdf":"https://arxiv.org/pdf/2308.01698v1.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":"balanced-destruction-reconstruction-dynamics","repo_url":"https://github.com/zyuh/bdr-main","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"class-incremental-learning","task_name":"Class Incremental Learning"},{"task_slug":"incremental-learning","task_name":"Incremental Learning"},{"task_slug":"class-incremental-learning-1","task_name":"class-incremental learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2308.01698","atlas_url":"https://app.syntology.ai/?focus=2308.01698","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.01698"}},"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/zyuh/bdr-main","reach":{"status":"ok"}}],"summary":{"ran":4,"ran_draft_wrong":1,"ran_fixture":1},"by_repo_kind":{"official":{"samples":6,"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":6,"samples":[{"code_sha256_prefix":"9b12f69ea3486b68","entry":"compute_confusion_matrix","repo":"zyuh/bdr-main","repo_kind":"official","path":"utils.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/utils.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9b12f69ea3486b68"}},{"code_sha256_prefix":"fac5364e2f53c6db","entry":"conv3x3","repo":"zyuh/bdr-main","repo_kind":"official","path":"networks/resnet18.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/networks/resnet18.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"3e30d88eaef01190","entry":"off_diagonal","repo":"zyuh/bdr-main","repo_kind":"official","path":"approach/aux_loss.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/approach/aux_loss.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3e30d88eaef01190"}},{"code_sha256_prefix":"6dec04c069f04577","entry":"resnet18","repo":"zyuh/bdr-main","repo_kind":"official","path":"networks/resnet18.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/networks/resnet18.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6dec04c069f04577"}},{"code_sha256_prefix":"3246f1a3750d33b3","entry":"resnet18_cifar","repo":"zyuh/bdr-main","repo_kind":"official","path":"networks/resnet18_cifar.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/networks/resnet18_cifar.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3246f1a3750d33b3"}},{"code_sha256_prefix":"207dfc366b9bb7c9","entry":"resnet32","repo":"zyuh/bdr-main","repo_kind":"official","path":"networks/resnet32.py","file_url":"https://github.com/zyuh/bdr-main/blob/HEAD/networks/resnet32.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"207dfc366b9bb7c9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}