{"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/selfgnn-self-supervised-graph-neural-networks","title":"SelfGNN: Self-Supervised Graph Neural Networks for Sequential Recommendation","arxiv_id":"2405.20878","date":"2024-05-31","proceeding":null,"authors":["Yuxi Liu","Lianghao Xia","Chao Huang"],"abstract":"Sequential recommendation effectively addresses information overload by modeling users' temporal and sequential interaction patterns. To overcome the limitations of supervision signals, recent approaches have adopted self-supervised learning techniques in recommender systems. However, there are still two critical challenges that remain unsolved. Firstly, existing sequential models primarily focus on long-term modeling of individual interaction sequences, overlooking the valuable short-term collaborative relationships among the behaviors of different users. Secondly, real-world data often contain noise, particularly in users' short-term behaviors, which can arise from temporary intents or misclicks. Such noise negatively impacts the accuracy of both graph and sequence models, further complicating the modeling process. To address these challenges, we propose a novel framework called Self-Supervised Graph Neural Network (SelfGNN) for sequential recommendation. The SelfGNN framework encodes short-term graphs based on time intervals and utilizes Graph Neural Networks (GNNs) to learn short-term collaborative relationships. It captures long-term user and item representations at multiple granularity levels through interval fusion and dynamic behavior modeling. Importantly, our personalized self-augmented learning structure enhances model robustness by mitigating noise in short-term graphs based on long-term user interests and personal stability. Extensive experiments conducted on four real-world datasets demonstrate that SelfGNN outperforms various state-of-the-art baselines. Our model implementation codes are available at https://github.com/HKUDS/SelfGNN.","url_abs":"https://arxiv.org/abs/2405.20878v1","url_pdf":"https://arxiv.org/pdf/2405.20878v1.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":"selfgnn-self-supervised-graph-neural-networks","repo_url":"https://github.com/hkuds/selfgnn","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"},{"task_slug":"sequential-recommendation","task_name":"Sequential Recommendation"}],"methods":[{"method_slug":"focus","method_name":"Focus"},{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.20878","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.20878"}},"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/hkuds/selfgnn","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":3,"unverified":3},"by_repo_kind":{"official":{"samples":6,"ran":3,"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":"2c59f5c5303f1dcf","entry":"negSamp","repo":"hkuds/selfgnn","repo_kind":"official","path":"DataHandler.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/DataHandler.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":"2c59f5c5303f1dcf"}},{"code_sha256_prefix":"26a6bca2431c33ee","entry":"negSamp_fre","repo":"hkuds/selfgnn","repo_kind":"official","path":"DataHandler.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/DataHandler.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":"26a6bca2431c33ee"}},{"code_sha256_prefix":"1720c87bb3c19836","entry":"transpose","repo":"hkuds/selfgnn","repo_kind":"official","path":"DataHandler.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/DataHandler.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":"1720c87bb3c19836"}},{"code_sha256_prefix":"43a9c38f5238b37e","entry":"SpentTime","repo":"hkuds/selfgnn","repo_kind":"official","path":"Utils/TimeLogger.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/Utils/TimeLogger.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":"43a9c38f5238b37e"}},{"code_sha256_prefix":"b120bac4f27370e0","entry":"SpentTooLong","repo":"hkuds/selfgnn","repo_kind":"official","path":"Utils/TimeLogger.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/Utils/TimeLogger.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":"b120bac4f27370e0"}},{"code_sha256_prefix":"aa92af09147be134","entry":"getParam","repo":"hkuds/selfgnn","repo_kind":"official","path":"Utils/NNLayers.py","file_url":"https://github.com/hkuds/selfgnn/blob/HEAD/Utils/NNLayers.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":"aa92af09147be134"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}