{"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/a-framework-for-contrastive-self-supervised","title":"A Framework For Contrastive Self-Supervised Learning And Designing A New Approach","arxiv_id":"2009.00104","date":"2020-08-31","proceeding":null,"authors":["William Falcon","Kyunghyun Cho"],"abstract":"Contrastive self-supervised learning (CSL) is an approach to learn useful representations by solving a pretext task that selects and compares anchor, negative and positive (APN) features from an unlabeled dataset. We present a conceptual framework that characterizes CSL approaches in five aspects (1) data augmentation pipeline, (2) encoder selection, (3) representation extraction, (4) similarity measure, and (5) loss function. We analyze three leading CSL approaches--AMDIM, CPC, and SimCLR--, and show that despite different motivations, they are special cases under this framework. We show the utility of our framework by designing Yet Another DIM (YADIM) which achieves competitive results on CIFAR-10, STL-10 and ImageNet, and is more robust to the choice of encoder and the representation extraction strategy. To support ongoing CSL research, we release the PyTorch implementation of this conceptual framework along with standardized implementations of AMDIM, CPC (V2), SimCLR, BYOL, Moco (V2) and YADIM.","url_abs":"https://arxiv.org/abs/2009.00104v1","url_pdf":"https://arxiv.org/pdf/2009.00104v1.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":"a-framework-for-contrastive-self-supervised","repo_url":"https://github.com/MindSpore-scientific-2/code-11/tree/main/S2Wrapper","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"a-framework-for-contrastive-self-supervised","repo_url":"https://github.com/PyTorchLightning/pytorch-lightning","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"image-classification","task_name":"Image Classification"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"csl","method_name":"CSL"},{"method_slug":"colorjitter","method_name":"ColorJitter"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"feedforward-network","method_name":"Feedforward Network"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"infonce","method_name":"InfoNCE"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"moco","method_name":"MoCo"},{"method_slug":"nt-xent","method_name":"NT-Xent"},{"method_slug":"random-gaussian-blur","method_name":"Random Gaussian Blur"},{"method_slug":"random-resized-crop","method_name":"Random Resized Crop"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"simclr","method_name":"SimCLR"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-classification-on-stl-10","task":"Image Classification","dataset":"STL-10","model":"AMDIM","rank_in_archive_order":25,"of":117,"metrics":{"Percentage correct":"93.80"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-stl-10","task":"Image Classification","dataset":"STL-10","model":"YADIM","rank_in_archive_order":29,"of":117,"metrics":{"Percentage correct":"92.15"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-stl-10","task":"Image Classification","dataset":"STL-10","model":"CPC†","rank_in_archive_order":67,"of":117,"metrics":{"Percentage correct":"78.36"},"uses_additional_data":false},{"leaderboard":"/sota/image-classification-on-stl-10","task":"Image Classification","dataset":"STL-10","model":"Simulated Fixations","rank_in_archive_order":103,"of":117,"metrics":{"Percentage correct":"61"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2009.00104","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2009.00104"}},"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/PyTorchLightning/pytorch-lightning","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-scientific-2/code-11/tree/main/S2Wrapper","reach":null}],"summary":{"unverified":2},"by_repo_kind":{"listed":{"samples":2,"ran":0,"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":"ee13e2c8a9c4eb60","entry":"compare_version","repo":"PyTorchLightning/pytorch-lightning","repo_kind":"listed","path":"src/lightning/pytorch/_graveyard/_torchmetrics.py","file_url":"https://github.com/PyTorchLightning/pytorch-lightning/blob/HEAD/src/lightning/pytorch/_graveyard/_torchmetrics.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":"ee13e2c8a9c4eb60"}},{"code_sha256_prefix":"7d93fdb5c7b5064d","entry":"get_nvidia_gpu_stats","repo":"PyTorchLightning/pytorch-lightning","repo_kind":"listed","path":"src/lightning/pytorch/accelerators/cuda.py","file_url":"https://github.com/PyTorchLightning/pytorch-lightning/blob/HEAD/src/lightning/pytorch/accelerators/cuda.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":"7d93fdb5c7b5064d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}