{"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/unsupervised-multi-class-domain-adaptation","title":"Unsupervised Multi-Class Domain Adaptation: Theory, Algorithms, and Practice","arxiv_id":"2002.08681","date":"2020-02-20","proceeding":null,"authors":["Yabin Zhang","Bin Deng","Hui Tang","Lei Zhang","Kui Jia"],"abstract":"In this paper, we study the formalism of unsupervised multi-class domain adaptation (multi-class UDA), which underlies a few recent algorithms whose learning objectives are only motivated empirically. Multi-Class Scoring Disagreement (MCSD) divergence is presented by aggregating the absolute margin violations in multi-class classification, and this proposed MCSD is able to fully characterize the relations between any pair of multi-class scoring hypotheses. By using MCSD as a measure of domain distance, we develop a new domain adaptation bound for multi-class UDA; its data-dependent, probably approximately correct bound is also developed that naturally suggests adversarial learning objectives to align conditional feature distributions across source and target domains. Consequently, an algorithmic framework of Multi-class Domain-adversarial learning Networks (McDalNets) is developed, and its different instantiations via surrogate learning objectives either coincide with or resemble a few recently popular methods, thus (partially) underscoring their practical effectiveness. Based on our identical theory for multi-class UDA, we also introduce a new algorithm of Domain-Symmetric Networks (SymmNets), which is featured by a novel adversarial strategy of domain confusion and discrimination. SymmNets affords simple extensions that work equally well under the problem settings of either closed set, partial, or open set UDA. We conduct careful empirical studies to compare different algorithms of McDalNets and our newly introduced SymmNets. Experiments verify our theoretical analysis and show the efficacy of our proposed SymmNets. In addition, we have made our implementation code publicly available.","url_abs":"https://arxiv.org/abs/2002.08681v2","url_pdf":"https://arxiv.org/pdf/2002.08681v2.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":"unsupervised-multi-class-domain-adaptation","repo_url":"https://github.com/YBZh/MultiClassDA","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"unsupervised-multi-class-domain-adaptation","repo_url":"https://github.com/YBZh/SymNets","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"multi-class-classification","task_name":"Multi-class Classification"}],"methods":[{"method_slug":"symmnet","method_name":"SymmNet"}],"datasets_introduced":[],"methods_introduced":[{"slug":"symmnet","name":"SymmNet","full_name":"Domain-Symmetric Network"}],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2002.08681","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2002.08681"}},"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/YBZh/MultiClassDA","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YBZh/SymNets","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"ran_honours":1,"unverified":5},"by_repo_kind":{"official":{"samples":5,"ran":2,"repositories":1},"listed":{"samples":2,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"YBZh/MultiClassDA","repo_kind":"official","path":"models/resnet_McDalNet.py","file_url":"https://github.com/YBZh/MultiClassDA/blob/HEAD/models/resnet_McDalNet.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"00780a5caa71ae85","entry":"to_cuda","repo":"YBZh/MultiClassDA","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/YBZh/MultiClassDA/blob/HEAD/utils/utils.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"00780a5caa71ae85"}},{"code_sha256_prefix":"8b62a4631d7bc3cc","entry":"discrepancy_slice_wasserstein","repo":"YBZh/MultiClassDA","repo_kind":"official","path":"models/loss_utils.py","file_url":"https://github.com/YBZh/MultiClassDA/blob/HEAD/models/loss_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":"8b62a4631d7bc3cc"}},{"code_sha256_prefix":"ad1d5cb471e9efdd","entry":"resnet18","repo":"YBZh/SymNets","repo_kind":"listed","path":"symnets/models/resnet.py","file_url":"https://github.com/YBZh/SymNets/blob/HEAD/symnets/models/resnet.py","link_basis":"harvester_set","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":"ad1d5cb471e9efdd"}},{"code_sha256_prefix":"fa21d6d557433fa1","entry":"resnet34","repo":"YBZh/SymNets","repo_kind":"listed","path":"symnets/models/resnet.py","file_url":"https://github.com/YBZh/SymNets/blob/HEAD/symnets/models/resnet.py","link_basis":"harvester_set","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":"fa21d6d557433fa1"}},{"code_sha256_prefix":"8e96295481d8e083","entry":"to_cpu","repo":"YBZh/MultiClassDA","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/YBZh/MultiClassDA/blob/HEAD/utils/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":"8e96295481d8e083"}},{"code_sha256_prefix":"f3ad4921e4058fcf","entry":"to_numpy","repo":"YBZh/MultiClassDA","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/YBZh/MultiClassDA/blob/HEAD/utils/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":"f3ad4921e4058fcf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}