{"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/curl-contrastive-unsupervised-representations","title":"CURL: Contrastive Unsupervised Representations for Reinforcement Learning","arxiv_id":"2004.04136","date":"2020-04-08","proceeding":null,"authors":["Aravind Srinivas","Michael Laskin","Pieter Abbeel"],"abstract":"We present CURL: Contrastive Unsupervised Representations for Reinforcement Learning. CURL extracts high-level features from raw pixels using contrastive learning and performs off-policy control on top of the extracted features. CURL outperforms prior pixel-based methods, both model-based and model-free, on complex tasks in the DeepMind Control Suite and Atari Games showing 1.9x and 1.2x performance gains at the 100K environment and interaction steps benchmarks respectively. On the DeepMind Control Suite, CURL is the first image-based algorithm to nearly match the sample-efficiency of methods that use state-based features. Our code is open-sourced and available at https://github.com/MishaLaskin/curl.","url_abs":"https://arxiv.org/abs/2004.04136v4","url_pdf":"https://arxiv.org/pdf/2004.04136v4.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":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/MishaLaskin/curl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/KarlXing/RL-Visual-Continuous-Control","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/aravindsrinivas/curl_rainbow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/asparius/barlowrl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/gijskoning/ReproducingCURL","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/microsoft/Mask-based-Latent-Reconstruction","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"curl-contrastive-unsupervised-representations","repo_url":"https://github.com/opendilab/DI-engine","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"atari-games","task_name":"Atari Games"},{"task_slug":"atari-games-100k","task_name":"Atari Games 100k"},{"task_slug":"continuous-control","task_name":"Continuous Control"},{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/atari-games-on-atari-2600-alien","task":"Atari Games","dataset":"Atari 2600 Alien","model":"CURL","rank_in_archive_order":37,"of":49,"metrics":{"Score":"1148.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-amidar","task":"Atari Games","dataset":"Atari 2600 Amidar","model":"CURL","rank_in_archive_order":36,"of":48,"metrics":{"Score":"232.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-assault","task":"Atari Games","dataset":"Atari 2600 Assault","model":"CURL","rank_in_archive_order":43,"of":45,"metrics":{"Score":"543.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-asterix","task":"Atari Games","dataset":"Atari 2600 Asterix","model":"CURL","rank_in_archive_order":48,"of":49,"metrics":{"Score":"524.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-bank-heist","task":"Atari Games","dataset":"Atari 2600 Bank Heist","model":"CURL","rank_in_archive_order":41,"of":45,"metrics":{"Score":"193.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-battle-zone","task":"Atari Games","dataset":"Atari 2600 Battle Zone","model":"CURL","rank_in_archive_order":44,"of":47,"metrics":{"Score":"11208"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-boxing","task":"Atari Games","dataset":"Atari 2600 Boxing","model":"CURL","rank_in_archive_order":45,"of":45,"metrics":{"Score":"4.8"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-breakout","task":"Atari Games","dataset":"Atari 2600 Breakout","model":"CURL","rank_in_archive_order":52,"of":58,"metrics":{"Score":"18.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-chopper-command","task":"Atari Games","dataset":"Atari 2600 Chopper Command","model":"CURL","rank_in_archive_order":43,"of":45,"metrics":{"Score":"1198"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-crazy-climber","task":"Atari Games","dataset":"Atari 2600 Crazy Climber","model":"CURL","rank_in_archive_order":44,"of":49,"metrics":{"Score":"27805.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-demon-attack","task":"Atari Games","dataset":"Atari 2600 Demon Attack","model":"CURL","rank_in_archive_order":43,"of":46,"metrics":{"Score":"834"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-freeway","task":"Atari Games","dataset":"Atari 2600 Freeway","model":"CURL","rank_in_archive_order":41,"of":59,"metrics":{"Score":"27.9"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-frostbite","task":"Atari Games","dataset":"Atari 2600 Frostbite","model":"CURL","rank_in_archive_order":35,"of":53,"metrics":{"Score":"924"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-gopher","task":"Atari Games","dataset":"Atari 2600 Gopher","model":"CURL","rank_in_archive_order":42,"of":43,"metrics":{"Score":"801.4"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-hero","task":"Atari Games","dataset":"Atari 2600 HERO","model":"CURL","rank_in_archive_order":43,"of":44,"metrics":{"Score":"6235.1"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-james-bond","task":"Atari Games","dataset":"Atari 2600 James Bond","model":"CURL","rank_in_archive_order":45,"of":45,"metrics":{"Medium Human-Normalized Score":"400.1"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-kangaroo","task":"Atari Games","dataset":"Atari 2600 Kangaroo","model":"CURL","rank_in_archive_order":42,"of":47,"metrics":{"Score":"345.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-krull","task":"Atari Games","dataset":"Atari 2600 Krull","model":"CURL","rank_in_archive_order":41,"of":45,"metrics":{"Score":"3833.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-kung-fu-master","task":"Atari Games","dataset":"Atari 2600 Kung-Fu Master","model":"CURL","rank_in_archive_order":42,"of":43,"metrics":{"Score":"14280"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-ms-pacman","task":"Atari Games","dataset":"Atari 2600 Ms. Pacman","model":"CURL","rank_in_archive_order":38,"of":47,"metrics":{"Score":"1492.8"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-pong","task":"Atari Games","dataset":"Atari 2600 Pong","model":"CURL","rank_in_archive_order":49,"of":52,"metrics":{"Score":"2.1"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-private-eye","task":"Atari Games","dataset":"Atari 2600 Private Eye","model":"CURL","rank_in_archive_order":41,"of":52,"metrics":{"Score":"105.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-qbert","task":"Atari Games","dataset":"Atari 2600 Q*Bert","model":"CURL","rank_in_archive_order":49,"of":57,"metrics":{"Score":"1225.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-road-runner","task":"Atari Games","dataset":"Atari 2600 Road Runner","model":"CURL","rank_in_archive_order":41,"of":44,"metrics":{"Score":"6786.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-seaquest","task":"Atari Games","dataset":"Atari 2600 Seaquest","model":"CURL","rank_in_archive_order":53,"of":57,"metrics":{"Score":"408"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-up-and-down","task":"Atari Games","dataset":"Atari 2600 Up and Down","model":"CURL","rank_in_archive_order":42,"of":44,"metrics":{"Score":"2735.2"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-ball-in-cup-catch-1","task":"Continuous Control","dataset":"Ball in cup, catch (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"769"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-ball-in-cup-catch","task":"Continuous Control","dataset":"Ball in cup, catch (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"959"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-cartpole-swingup-1","task":"Continuous Control","dataset":"Cartpole, swingup (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"582"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-cartpole-swingup","task":"Continuous Control","dataset":"Cartpole, swingup (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"841"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-cheetah-run-1","task":"Continuous Control","dataset":"Cheetah, run (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"299"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-cheetah-run","task":"Continuous Control","dataset":"Cheetah, run (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"518"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-finger-spin-1","task":"Continuous Control","dataset":"Finger, spin (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"767"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-finger-spin","task":"Continuous Control","dataset":"Finger, spin (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"926"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-reacher-easy-1","task":"Continuous Control","dataset":"Reacher, easy (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"538"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-reacher-easy","task":"Continuous Control","dataset":"Reacher, easy (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"929"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-walker-walk-1","task":"Continuous Control","dataset":"Walker, walk (DMControl100k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"403"},"uses_additional_data":false},{"leaderboard":"/sota/continuous-control-on-walker-walk","task":"Continuous Control","dataset":"Walker, walk (DMControl500k)","model":"CURL","rank_in_archive_order":1,"of":1,"metrics":{"Score":"902"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2004.04136","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2004.04136"}},"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/microsoft/Mask-based-Latent-Reconstruction","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/KarlXing/RL-Visual-Continuous-Control","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/MishaLaskin/curl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gijskoning/ReproducingCURL","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/aravindsrinivas/curl_rainbow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/asparius/barlowrl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/opendilab/DI-engine","reach":null}],"summary":{"ran_draft_wrong":3,"ran":1,"ran_fixture":2,"unverified":2},"by_repo_kind":{"official":{"samples":6,"ran":5,"repositories":1},"listed":{"samples":2,"ran":1,"repositories":2}},"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":"daa7b3a0355eb7c3","entry":"gaussian_logprob","repo":"MishaLaskin/curl","repo_kind":"official","path":"curl_sac.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/curl_sac.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"daa7b3a0355eb7c3"}},{"code_sha256_prefix":"42958997018c3581","entry":"make_dir","repo":"MishaLaskin/curl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"42958997018c3581"}},{"code_sha256_prefix":"63cc0b17d508c362","entry":"module_hash","repo":"MishaLaskin/curl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63cc0b17d508c362"}},{"code_sha256_prefix":"3e30d88eaef01190","entry":"off_diagonal","repo":"asparius/barlowrl","repo_kind":"listed","path":"agent.py","file_url":"https://github.com/asparius/barlowrl/blob/HEAD/agent.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3e30d88eaef01190"}},{"code_sha256_prefix":"975f23eeea267e55","entry":"preprocess_obs","repo":"MishaLaskin/curl","repo_kind":"official","path":"utils.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"975f23eeea267e55"}},{"code_sha256_prefix":"e4f442d1770eacd1","entry":"squash","repo":"MishaLaskin/curl","repo_kind":"official","path":"curl_sac.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/curl_sac.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e4f442d1770eacd1"}},{"code_sha256_prefix":"b87a008932a30bc3","entry":"CURL","repo":"KarlXing/RL-Visual-Continuous-Control","repo_kind":"listed","path":"src/agent/curl.py","file_url":"https://github.com/KarlXing/RL-Visual-Continuous-Control/blob/HEAD/src/agent/curl.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b87a008932a30bc3"}},{"code_sha256_prefix":"cd7d4d2ebf4b04c8","entry":"make_encoder","repo":"MishaLaskin/curl","repo_kind":"official","path":"encoder.py","file_url":"https://github.com/MishaLaskin/curl/blob/HEAD/encoder.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cd7d4d2ebf4b04c8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}