{"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/never-give-up-learning-directed-exploration-1","title":"Never Give Up: Learning Directed Exploration Strategies","arxiv_id":"2002.06038","date":"2020-02-14","proceeding":"ICLR 2020 1","authors":["Adrià Puigdomènech Badia","Pablo Sprechmann","Alex Vitvitskyi","Daniel Guo","Bilal Piot","Steven Kapturowski","Olivier Tieleman","Martín Arjovsky","Alexander Pritzel","Andew Bolt","Charles Blundell"],"abstract":"We propose a reinforcement learning agent to solve hard exploration games by learning a range of directed exploratory policies. We construct an episodic memory-based intrinsic reward using k-nearest neighbors over the agent's recent experience to train the directed exploratory policies, thereby encouraging the agent to repeatedly revisit all states in its environment. A self-supervised inverse dynamics model is used to train the embeddings of the nearest neighbour lookup, biasing the novelty signal towards what the agent can control. We employ the framework of Universal Value Function Approximators (UVFA) to simultaneously learn many directed exploration policies with the same neural network, with different trade-offs between exploration and exploitation. By using the same neural network for different degrees of exploration/exploitation, transfer is demonstrated from predominantly exploratory policies yielding effective exploitative policies. The proposed method can be incorporated to run with modern distributed RL agents that collect large amounts of experience from many actors running in parallel on separate environment instances. Our method doubles the performance of the base agent in all hard exploration in the Atari-57 suite while maintaining a very high score across the remaining games, obtaining a median human normalised score of 1344.0%. Notably, the proposed method is the first algorithm to achieve non-zero rewards (with a mean score of 8,400) in the game of Pitfall! without using demonstrations or hand-crafted features.","url_abs":"https://arxiv.org/abs/2002.06038v1","url_pdf":"https://arxiv.org/pdf/2002.06038v1.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":"never-give-up-learning-directed-exploration-1","repo_url":"https://github.com/Coac/never-give-up","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"never-give-up-learning-directed-exploration-1","repo_url":"https://github.com/YHL04/agent57","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"never-give-up-learning-directed-exploration-1","repo_url":"https://github.com/balloch/rl-exploration-transfer","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"never-give-up-learning-directed-exploration-1","repo_url":"https://github.com/michaelnny/deep_rl_zoo","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"never-give-up-learning-directed-exploration-1","repo_url":"https://github.com/rle-foundation/rlexplore","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"never-give-up-learning-directed-exploration-1","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":"reinforcement-learning","task_name":"Reinforcement Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/atari-games-on-atari-games","task":"Atari Games","dataset":"Atari games","model":"NGU","rank_in_archive_order":7,"of":12,"metrics":{"Mean Human Normalized Score":"3169.90%"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-game","task":"Atari Games","dataset":"atari game","model":"NGU","rank_in_archive_order":7,"of":9,"metrics":{"Human World Record Breakthrough":"8"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2002.06038","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2002.06038"}},"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/rle-foundation/rlexplore","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/balloch/rl-exploration-transfer","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Coac/never-give-up","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/michaelnny/deep_rl_zoo","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YHL04/agent57","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/opendilab/DI-engine","reach":null}],"summary":{"ran":6,"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"listed":{"samples":14,"ran":7,"repositories":4}},"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":"c31a9de8654051ec","entry":"ConvNet","repo":"YHL04/agent57","repo_kind":"listed","path":"curiosity/episodicnovelty.py","file_url":"https://github.com/YHL04/agent57/blob/HEAD/curiosity/episodicnovelty.py","link_basis":"first_harvest_node","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":"c31a9de8654051ec"}},{"code_sha256_prefix":"3466861d599c43fe","entry":"EmbeddingNet","repo":"YHL04/agent57","repo_kind":"listed","path":"curiosity/episodicnovelty.py","file_url":"https://github.com/YHL04/agent57/blob/HEAD/curiosity/episodicnovelty.py","link_basis":"first_harvest_node","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":"3466861d599c43fe"}},{"code_sha256_prefix":"90a7ebd6feb166b8","entry":"NGU","repo":"balloch/rl-exploration-transfer","repo_kind":"listed","path":"rlexplore/ngu/ngu.py","file_url":"https://github.com/balloch/rl-exploration-transfer/blob/HEAD/rlexplore/ngu/ngu.py","link_basis":"first_harvest_node","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":"90a7ebd6feb166b8"}},{"code_sha256_prefix":"a78127c40ebe35aa","entry":"RunningMeanStd","repo":"YHL04/agent57","repo_kind":"listed","path":"curiosity/episodicnovelty.py","file_url":"https://github.com/YHL04/agent57/blob/HEAD/curiosity/episodicnovelty.py","link_basis":"first_harvest_node","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":"a78127c40ebe35aa"}},{"code_sha256_prefix":"57613320785ab71b","entry":"TorchRunningMeanStd","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"57613320785ab71b"}},{"code_sha256_prefix":"78ccc2c5216933ad","entry":"compute_intrinsic_reward","repo":"Coac/never-give-up","repo_kind":"listed","path":"embedding_model.py","file_url":"https://github.com/Coac/never-give-up/blob/HEAD/embedding_model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"78ccc2c5216933ad"}},{"code_sha256_prefix":"bf252aa85c786a31","entry":"knn_query","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"bf252aa85c786a31"}},{"code_sha256_prefix":"e669d2aa8364df64","entry":"EpisodicBonusModule","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"e669d2aa8364df64"}},{"code_sha256_prefix":"f9bb89cb56813152","entry":"EpisodicNovelty","repo":"YHL04/agent57","repo_kind":"listed","path":"curiosity/episodicnovelty.py","file_url":"https://github.com/YHL04/agent57/blob/HEAD/curiosity/episodicnovelty.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":"f9bb89cb56813152"}},{"code_sha256_prefix":"d4cc04ba549ba4bb","entry":"KNNQueryResult","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"d4cc04ba549ba4bb"}},{"code_sha256_prefix":"6f7df6e9000b00d1","entry":"assert_batch_dimension","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"6f7df6e9000b00d1"}},{"code_sha256_prefix":"3ab420e23d71c69e","entry":"assert_dtype","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"3ab420e23d71c69e"}},{"code_sha256_prefix":"6f88a27da51a4a5d","entry":"assert_rank","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"6f88a27da51a4a5d"}},{"code_sha256_prefix":"f19e3a2b6b73f0ef","entry":"assert_rank_and_dtype","repo":"michaelnny/deep_rl_zoo","repo_kind":"listed","path":"deep_rl_zoo/curiosity.py","file_url":"https://github.com/michaelnny/deep_rl_zoo/blob/HEAD/deep_rl_zoo/curiosity.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":"f19e3a2b6b73f0ef"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}