{"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/arxiv-2602-18502","title":"Mitigating Shortcut Learning via Feature Disentanglement in Medical Imaging: A Benchmark Study","arxiv_id":"2602.18502","date":"2026-02-17","proceeding":null,"authors":["Sarah Müller","Philipp Berens"],"abstract":"Although deep learning models in medical imaging often achieve excellent classification performance, they can rely on shortcut learning, exploiting spurious correlations or confounding factors that are not causally related to the target task. This poses risks in clinical settings, where models must generalize across institutions, populations, and acquisition conditions. Feature disentanglement is a promising approach to mitigate shortcut learning by separating task-relevant information from confounder-related features in latent representations. In this study, we systematically evaluated feature disentanglement methods for mitigating shortcuts in medical imaging, including adversarial learning and latent space splitting based on dependence minimization. We assessed classification performance and disentanglement quality using latent space analyses across one artificial and two medical datasets with natural and synthetic confounders. We also examined robustness under varying levels of confounding and compared computational efficiency across methods. We found that shortcut mitigation methods improved classification performance under strong spurious correlations during training. Latent space analyses revealed differences in representation quality not captured by classification metrics, highlighting the strengths and limitations of each method. Model reliance on shortcuts depended on the degree of confounding in the training data. The best-performing models combine data-centric rebalancing with model-centric disentanglement, achieving stronger and more robust shortcut mitigation than rebalancing alone while maintaining similar computational efficiency. The project code is publicly available at https://github.com/berenslab/medical-shortcut-mitigation.","url_abs":"https://arxiv.org/abs/2602.18502","url_pdf":"https://arxiv.org/pdf/2602.18502","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.18502","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.18502"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/berenslab/medical-shortcut-mitigation","reach":null}],"summary":{"unverified":12},"by_repo_kind":{"found_in_text":{"samples":12,"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":0,"samples":[{"code_sha256_prefix":"f26234a89ba11bec","entry":"compute_contingency_and_examples_from_labels","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/utils.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f26234a89ba11bec"}},{"code_sha256_prefix":"45ad2e86a6f8caa7","entry":"extract_argument_keys","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/config.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/config.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"45ad2e86a6f8caa7"}},{"code_sha256_prefix":"e6d1708dda25d1d0","entry":"extract_epoch","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/evaluation/aggregate_epochs.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/evaluation/aggregate_epochs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6d1708dda25d1d0"}},{"code_sha256_prefix":"e0d2ff890c92b27e","entry":"flatten","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/config.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/config.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e0d2ff890c92b27e"}},{"code_sha256_prefix":"797a7d17ce5b8687","entry":"flatten_list","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/utils.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"797a7d17ce5b8687"}},{"code_sha256_prefix":"d0f1cf7101a32e07","entry":"get_criterion","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/criterion.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/criterion.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d0f1cf7101a32e07"}},{"code_sha256_prefix":"ba3e37a95dd31982","entry":"get_mean_epoch","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/evaluation/aggregate_epochs.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/evaluation/aggregate_epochs.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ba3e37a95dd31982"}},{"code_sha256_prefix":"4a21195997a6a6b4","entry":"load_epoch_times","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/evaluation/measure_compute_time.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/evaluation/measure_compute_time.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4a21195997a6a6b4"}},{"code_sha256_prefix":"db1d257707c615ac","entry":"nest_dict","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/config.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/config.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"db1d257707c615ac"}},{"code_sha256_prefix":"170b7a6188f312ff","entry":"plot_data_overview","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/utils.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"170b7a6188f312ff"}},{"code_sha256_prefix":"205c9e57716f9722","entry":"prepare_config_for_benchmarking","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/evaluation/measure_compute_time.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/evaluation/measure_compute_time.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"205c9e57716f9722"}},{"code_sha256_prefix":"5ac524479b74f0a7","entry":"run_training","repo":"berenslab/medical-shortcut-mitigation","repo_kind":"found_in_text","path":"src/shortcut/evaluation/measure_compute_time.py","file_url":"https://github.com/berenslab/medical-shortcut-mitigation/blob/HEAD/src/shortcut/evaluation/measure_compute_time.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5ac524479b74f0a7"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}