{"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/provable-training-for-graph-contrastive-1","title":"Provable Training for Graph Contrastive Learning","arxiv_id":"2309.13944","date":"2023-09-25","proceeding":"NeurIPS 2023 11","authors":["Yue Yu","Xiao Wang","Mengmei Zhang","Nian Liu","Chuan Shi"],"abstract":"Graph Contrastive Learning (GCL) has emerged as a popular training approach for learning node embeddings from augmented graphs without labels. Despite the key principle that maximizing the similarity between positive node pairs while minimizing it between negative node pairs is well established, some fundamental problems are still unclear. Considering the complex graph structure, are some nodes consistently well-trained and following this principle even with different graph augmentations? Or are there some nodes more likely to be untrained across graph augmentations and violate the principle? How to distinguish these nodes and further guide the training of GCL? To answer these questions, we first present experimental evidence showing that the training of GCL is indeed imbalanced across all nodes. To address this problem, we propose the metric \"node compactness\", which is the lower bound of how a node follows the GCL principle related to the range of augmentations. We further derive the form of node compactness theoretically through bound propagation, which can be integrated into binary cross-entropy as a regularization. To this end, we propose the PrOvable Training (POT) for GCL, which regularizes the training of GCL to encode node embeddings that follows the GCL principle better. Through extensive experiments on various benchmarks, POT consistently improves the existing GCL approaches, serving as a friendly plugin.","url_abs":"https://arxiv.org/abs/2309.13944v4","url_pdf":"https://arxiv.org/pdf/2309.13944v4.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":"provable-training-for-graph-contrastive-1","repo_url":"https://github.com/voidharuhi/pot-gcl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2309.13944","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2309.13944"}},"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":"deterministic:regex_extraction","url":"https://github.com/VoidHaruhi/POT-GCL","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/BUPT-GAMMA/GammaGL","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/voidharuhi/pot-gcl","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":5,"ran":5,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"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":"2dff6e858d437842","entry":"weighted_mean","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"ProGCL/pGRACE/model.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/ProGCL/pGRACE/model.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2dff6e858d437842"}},{"code_sha256_prefix":"c8bbf5537361b210","entry":"Ztrans","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"COSTA/src/util/helper.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/COSTA/src/util/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":"c8bbf5537361b210"}},{"code_sha256_prefix":"22bfb6129463d322","entry":"drop_feature","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GRACE/model.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GRACE/model.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"22bfb6129463d322"}},{"code_sha256_prefix":"867c9382144672b7","entry":"drop_feature_weighted","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GCA/pGRACE/functional.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GCA/pGRACE/functional.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"867c9382144672b7"}},{"code_sha256_prefix":"2694bcf35c3d7b93","entry":"drop_feature_weighted_2","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GCA/pGRACE/functional.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GCA/pGRACE/functional.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2694bcf35c3d7b93"}},{"code_sha256_prefix":"300e84c6b99cb7f4","entry":"fit_beta_weighted","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"ProGCL/pGRACE/model.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/ProGCL/pGRACE/model.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"300e84c6b99cb7f4"}},{"code_sha256_prefix":"b6b75b8c990299ac","entry":"generate_split","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GRACE/my_utils.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GRACE/my_utils.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":"b6b75b8c990299ac"}},{"code_sha256_prefix":"3b63e93e7a542afb","entry":"get_alpha_beta","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GRACE/my_utils.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GRACE/my_utils.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":"3b63e93e7a542afb"}},{"code_sha256_prefix":"06aaec706bf52e17","entry":"get_batch","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"COSTA/src/model/utils.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/COSTA/src/model/utils.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":"06aaec706bf52e17"}},{"code_sha256_prefix":"5b18ad957d4c29e1","entry":"get_path","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"GCA/pGRACE/dataset.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/GCA/pGRACE/dataset.py","link_basis":"harvester_set","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":"5b18ad957d4c29e1"}},{"code_sha256_prefix":"ec9355b99f54bc56","entry":"get_crown_weights","repo":"VoidHaruhi/POT-GCL","repo_kind":"official","path":"COSTA/src/model/utils.py","file_url":"https://github.com/VoidHaruhi/POT-GCL/blob/HEAD/COSTA/src/model/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":"ec9355b99f54bc56"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}