{"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/efficient-domain-generalization-via-common","title":"Efficient Domain Generalization via Common-Specific Low-Rank Decomposition","arxiv_id":"2003.12815","date":"2020-03-28","proceeding":"ICML 2020 1","authors":["Vihari Piratla","Praneeth Netrapalli","Sunita Sarawagi"],"abstract":"Domain generalization refers to the task of training a model which generalizes to new domains that are not seen during training. We present CSD (Common Specific Decomposition), for this setting,which jointly learns a common component (which generalizes to new domains) and a domain specific component (which overfits on training domains). The domain specific components are discarded after training and only the common component is retained. The algorithm is extremely simple and involves only modifying the final linear classification layer of any given neural network architecture. We present a principled analysis to understand existing approaches, provide identifiability results of CSD,and study effect of low-rank on domain generalization. We show that CSD either matches or beats state of the art approaches for domain generalization based on domain erasure, domain perturbed data augmentation, and meta-learning. Further diagnostics on rotated MNIST, where domains are interpretable, confirm the hypothesis that CSD successfully disentangles common and domain specific components and hence leads to better domain generalization.","url_abs":"https://arxiv.org/abs/2003.12815v2","url_pdf":"https://arxiv.org/pdf/2003.12815v2.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":"efficient-domain-generalization-via-common","repo_url":"https://github.com/vihari/csd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"efficient-domain-generalization-via-common","repo_url":"https://github.com/MindSpore-paper-code-3/code8/tree/main/csd","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"domain-generalization","task_name":"Domain Generalization"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"rotated-mnist","task_name":"Rotated MNIST"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/domain-generalization-on-lipitk","task":"Domain Generalization","dataset":"LipitK","model":"CSD (Ours)","rank_in_archive_order":1,"of":1,"metrics":{"Accuracy":"87.3"},"uses_additional_data":false},{"leaderboard":"/sota/domain-generalization-on-pacs-2","task":"Domain Generalization","dataset":"PACS","model":"CSD (Resnet-18)","rank_in_archive_order":93,"of":133,"metrics":{"Average Accuracy":"80.69"},"uses_additional_data":false},{"leaderboard":"/sota/domain-generalization-on-rotated-fashion","task":"Domain Generalization","dataset":"Rotated Fashion-MNIST","model":"CSD","rank_in_archive_order":2,"of":2,"metrics":{"Accuracy":"78.9"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2003.12815","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2003.12815"}},"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/MindSpore-paper-code-3/code8/tree/main/csd","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vihari/csd","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":11,"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":"81b32462156333ce","entry":"alexnet","repo":"vihari/csd","repo_kind":"official","path":"pacs/models/alexnet.py","file_url":"https://github.com/vihari/csd/blob/HEAD/pacs/models/alexnet.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":"81b32462156333ce"}},{"code_sha256_prefix":"639603695957f436","entry":"custom_rot","repo":"vihari/csd","repo_kind":"official","path":"rotation/ResNet.py","file_url":"https://github.com/vihari/csd/blob/HEAD/rotation/ResNet.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":"639603695957f436"}},{"code_sha256_prefix":"7867292780cc60d7","entry":"load_data","repo":"vihari/csd","repo_kind":"official","path":"hw/lipitk.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/lipitk.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":"7867292780cc60d7"}},{"code_sha256_prefix":"ff5baf06d230e98a","entry":"load_data","repo":"vihari/csd","repo_kind":"official","path":"hw/nhcd.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/nhcd.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":"ff5baf06d230e98a"}},{"code_sha256_prefix":"ded0bf1e1b21f399","entry":"one_hot","repo":"vihari/csd","repo_kind":"official","path":"pacs/train_csd.py","file_url":"https://github.com/vihari/csd/blob/HEAD/pacs/train_csd.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":"ded0bf1e1b21f399"}},{"code_sha256_prefix":"317da15047e473d1","entry":"prepare_data","repo":"vihari/csd","repo_kind":"official","path":"hw/lipitk.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/lipitk.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":"317da15047e473d1"}},{"code_sha256_prefix":"a8669f97e275a295","entry":"prepare_data","repo":"vihari/csd","repo_kind":"official","path":"hw/rmnist.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/rmnist.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":"a8669f97e275a295"}},{"code_sha256_prefix":"6ab3b3ea2d111f68","entry":"prepare_data_for","repo":"vihari/csd","repo_kind":"official","path":"hw/rmnist.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/rmnist.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":"6ab3b3ea2d111f68"}},{"code_sha256_prefix":"a3dee273f5549710","entry":"rankL","repo":"vihari/csd","repo_kind":"official","path":"speech/losses.py","file_url":"https://github.com/vihari/csd/blob/HEAD/speech/losses.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":"a3dee273f5549710"}},{"code_sha256_prefix":"59c9109a03787bbe","entry":"training","repo":"vihari/csd","repo_kind":"official","path":"hw/nhcd.py","file_url":"https://github.com/vihari/csd/blob/HEAD/hw/nhcd.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":"59c9109a03787bbe"}},{"code_sha256_prefix":"5e2641cdd55e645c","entry":"warp_loss","repo":"vihari/csd","repo_kind":"official","path":"speech/losses.py","file_url":"https://github.com/vihari/csd/blob/HEAD/speech/losses.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":"5e2641cdd55e645c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}