{"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-episode-generation-for-graph","title":"Unsupervised Episode Generation for Graph Meta-learning","arxiv_id":"2306.15217","date":"2023-06-27","proceeding":null,"authors":["Jihyeong Jung","Sangwoo Seo","Sungwon Kim","Chanyoung Park"],"abstract":"We propose Unsupervised Episode Generation method called Neighbors as Queries (NaQ) to solve the Few-Shot Node-Classification (FSNC) task by unsupervised Graph Meta-learning. Doing so enables full utilization of the information of all nodes in a graph, which is not possible in current supervised meta-learning methods for FSNC due to the label-scarcity problem. In addition, unlike unsupervised Graph Contrastive Learning (GCL) methods that overlook the downstream task to be solved at the training phase resulting in vulnerability to class imbalance of a graph, we adopt the episodic learning framework that allows the model to be aware of the downstream task format, i.e., FSNC. The proposed NaQ is a simple but effective unsupervised episode generation method that randomly samples nodes from a graph to make a support set, followed by similarity-based sampling of nodes to make the corresponding query set. Since NaQ is model-agnostic, any existing supervised graph meta-learning methods can be trained in an unsupervised manner, while not sacrificing much of their performance or sometimes even improving them. Extensive experimental results demonstrate the effectiveness of our proposed unsupervised episode generation method for graph meta-learning towards the FSNC task. Our code is available at: https://github.com/JhngJng/NaQ-PyTorch.","url_abs":"https://arxiv.org/abs/2306.15217v3","url_pdf":"https://arxiv.org/pdf/2306.15217v3.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-episode-generation-for-graph","repo_url":"https://github.com/jhngjng/naq-pytorch","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"aware","method_name":"AWARE"},{"method_slug":"base","method_name":"BASE"},{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2306.15217","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2306.15217"}},"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/JhngJng/NaQ-PyTorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jhngjng/naq-pytorch","reach":{"status":"ok"}}],"summary":{"ran":3,"ran_draft_wrong":1,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":6,"ran":5,"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":6,"samples":[{"code_sha256_prefix":"0da66943aaff760b","entry":"GNNEncoder","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"meta.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/meta.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":"0da66943aaff760b"}},{"code_sha256_prefix":"13756f778f82c7e2","entry":"LinearClassifier","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"meta.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/meta.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"13756f778f82c7e2"}},{"code_sha256_prefix":"3d2ff6b2affe19ae","entry":"UnsupMAML","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"meta.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/meta.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":"3d2ff6b2affe19ae"}},{"code_sha256_prefix":"019eb32abbb7abff","entry":"meta_batch_generator","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"task_generator.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/task_generator.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"019eb32abbb7abff"}},{"code_sha256_prefix":"7c531eff87072492","entry":"proto_task_generator","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"task_generator.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/task_generator.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7c531eff87072492"}},{"code_sha256_prefix":"e66af917c3046fa5","entry":"downstream_task_generator","repo":"jhngjng/naq-pytorch","repo_kind":"official","path":"task_generator.py","file_url":"https://github.com/jhngjng/naq-pytorch/blob/HEAD/task_generator.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":"e66af917c3046fa5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}