{"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/bootstrap-latents-of-nodes-and-neighbors-for","title":"Bootstrap Latents of Nodes and Neighbors for Graph Self-Supervised Learning","arxiv_id":"2408.05087","date":"2024-08-09","proceeding":null,"authors":["Yunhui Liu","Huaisong Zhang","Tieke He","Tao Zheng","Jianhua Zhao"],"abstract":"Contrastive learning is a significant paradigm in graph self-supervised learning. However, it requires negative samples to prevent model collapse and learn discriminative representations. These negative samples inevitably lead to heavy computation, memory overhead and class collision, compromising the representation learning. Recent studies present that methods obviating negative samples can attain competitive performance and scalability enhancements, exemplified by bootstrapped graph latents (BGRL). However, BGRL neglects the inherent graph homophily, which provides valuable insights into underlying positive pairs. Our motivation arises from the observation that subtly introducing a few ground-truth positive pairs significantly improves BGRL. Although we can't obtain ground-truth positive pairs without labels under the self-supervised setting, edges in the graph can reflect noisy positive pairs, i.e., neighboring nodes often share the same label. Therefore, we propose to expand the positive pair set with node-neighbor pairs. Subsequently, we introduce a cross-attention module to predict the supportiveness score of a neighbor with respect to the anchor node. This score quantifies the positive support from each neighboring node, and is encoded into the training objective. Consequently, our method mitigates class collision from negative and noisy positive samples, concurrently enhancing intra-class compactness. Extensive experiments are conducted on five benchmark datasets and three downstream task node classification, node clustering, and node similarity search. The results demonstrate that our method generates node representations with enhanced intra-class compactness and achieves state-of-the-art performance.","url_abs":"https://arxiv.org/abs/2408.05087v1","url_pdf":"https://arxiv.org/pdf/2408.05087v1.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":"bootstrap-latents-of-nodes-and-neighbors-for","repo_url":"https://github.com/cloudy1225/blnn","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"node-clustering","task_name":"Node Clustering"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"concatenated-skip-connection","method_name":"Concatenated Skip Connection"},{"method_slug":"set","method_name":"SET"},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2408.05087","atlas_url":"https://app.syntology.ai/?focus=2408.05087","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.05087"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/cloudy1225/blnn","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":6,"unverified":5},"by_repo_kind":{"official":{"samples":11,"ran":6,"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":"88c2733c063d14d3","entry":"compute_representations","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/bgrl.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/bgrl.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"88c2733c063d14d3"}},{"code_sha256_prefix":"e6696b223b33ae73","entry":"fit_logistic_regression","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/logistic_regression_eval.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/logistic_regression_eval.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e6696b223b33ae73"}},{"code_sha256_prefix":"9cc1ab4d7141443c","entry":"fit_logistic_regression_preset_splits","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/logistic_regression_eval.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/logistic_regression_eval.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9cc1ab4d7141443c"}},{"code_sha256_prefix":"6eb314269b842f3d","entry":"get_graph_drop_transform","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/transforms.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/transforms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6eb314269b842f3d"}},{"code_sha256_prefix":"436013cac49fa475","entry":"get_wiki_cs","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/data.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/data.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"436013cac49fa475"}},{"code_sha256_prefix":"c7bf9bd5dc9a2b1b","entry":"node_clustering","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/utils.py","file_url":"https://github.com/cloudy1225/blnn/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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c7bf9bd5dc9a2b1b"}},{"code_sha256_prefix":"8021d44d3b828d80","entry":"get_dataset","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/data.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/data.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8021d44d3b828d80"}},{"code_sha256_prefix":"d15ddbe73962ac64","entry":"get_logger","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/utils.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d15ddbe73962ac64"}},{"code_sha256_prefix":"d0852bc7decfea66","entry":"load_trained_encoder","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/bgrl.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/bgrl.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d0852bc7decfea66"}},{"code_sha256_prefix":"a071438db1f34e7b","entry":"ppi_train_linear_layer","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/linear_eval_ppi.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/linear_eval_ppi.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a071438db1f34e7b"}},{"code_sha256_prefix":"b61442760562ddc6","entry":"similarity_search","repo":"cloudy1225/blnn","repo_kind":"official","path":"bgrl/utils.py","file_url":"https://github.com/cloudy1225/blnn/blob/HEAD/bgrl/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b61442760562ddc6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}