{"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/rethinking-and-simplifying-bootstrapped-graph","title":"Rethinking and Simplifying Bootstrapped Graph Latents","arxiv_id":"2312.02619","date":"2023-12-05","proceeding":null,"authors":["Wangbin Sun","Jintang Li","Liang Chen","Bingzhe Wu","Yatao Bian","Zibin Zheng"],"abstract":"Graph contrastive learning (GCL) has emerged as a representative paradigm in graph self-supervised learning, where negative samples are commonly regarded as the key to preventing model collapse and producing distinguishable representations. Recent studies have shown that GCL without negative samples can achieve state-of-the-art performance as well as scalability improvement, with bootstrapped graph latent (BGRL) as a prominent step forward. However, BGRL relies on a complex architecture to maintain the ability to scatter representations, and the underlying mechanisms enabling the success remain largely unexplored. In this paper, we introduce an instance-level decorrelation perspective to tackle the aforementioned issue and leverage it as a springboard to reveal the potential unnecessary model complexity within BGRL. Based on our findings, we present SGCL, a simple yet effective GCL framework that utilizes the outputs from two consecutive iterations as positive pairs, eliminating the negative samples. SGCL only requires a single graph augmentation and a single graph encoder without additional parameters. Extensive experiments conducted on various graph benchmarks demonstrate that SGCL can achieve competitive performance with fewer parameters, lower time and space costs, and significant convergence speedup.","url_abs":"https://arxiv.org/abs/2312.02619v1","url_pdf":"https://arxiv.org/pdf/2312.02619v1.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":"rethinking-and-simplifying-bootstrapped-graph","repo_url":"https://github.com/zszszs25/sgcl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.02619","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.02619"}},"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/zszszs25/sgcl","reach":{"status":"ok"}}],"summary":{"ran":8,"unverified":4},"by_repo_kind":{"official":{"samples":12,"ran":8,"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":12,"samples":[{"code_sha256_prefix":"88c2733c063d14d3","entry":"compute_representations","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/bgrl.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/bgrl.py","link_basis":"harvester_set","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":"88c2733c063d14d3"}},{"code_sha256_prefix":"509669ee062c0b43","entry":"create_mask","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/utils.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/utils.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":"509669ee062c0b43"}},{"code_sha256_prefix":"9158f47985798953","entry":"eval_acc","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/linear_eval.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/linear_eval.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":"9158f47985798953"}},{"code_sha256_prefix":"524d998681e42414","entry":"get_graph_drop_transform","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/transforms.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/transforms.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":"524d998681e42414"}},{"code_sha256_prefix":"bdd5f1d2fd48f642","entry":"load_mask","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/utils.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/utils.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":"bdd5f1d2fd48f642"}},{"code_sha256_prefix":"b72d3e0bae1e69b1","entry":"node_cls_downstream_task_eval","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/linear_eval.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/linear_eval.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":"b72d3e0bae1e69b1"}},{"code_sha256_prefix":"da462423b1a97a5b","entry":"subgraph_compute_representations","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/bgrl.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/bgrl.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":"da462423b1a97a5b"}},{"code_sha256_prefix":"3019fbc28dae6799","entry":"train_cls","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/linear_eval.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/linear_eval.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":"3019fbc28dae6799"}},{"code_sha256_prefix":"120dadc9ce36e49c","entry":"get_wiki_cs","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/data.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"120dadc9ce36e49c"}},{"code_sha256_prefix":"d0852bc7decfea66","entry":"load_trained_encoder","repo":"zszszs25/sgcl","repo_kind":"official","path":"bgrl/bgrl.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/bgrl/bgrl.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d0852bc7decfea66"}},{"code_sha256_prefix":"b6414af5c8cd06ec","entry":"main","repo":"zszszs25/sgcl","repo_kind":"official","path":"train_transductive_mag.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/train_transductive_mag.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b6414af5c8cd06ec"}},{"code_sha256_prefix":"3205accf4eb263b9","entry":"main","repo":"zszszs25/sgcl","repo_kind":"official","path":"train_transductive_products.py","file_url":"https://github.com/zszszs25/sgcl/blob/HEAD/train_transductive_products.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3205accf4eb263b9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}