{"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/robust-deep-reinforcement-learning-through","title":"Robust Deep Reinforcement Learning through Adversarial Loss","arxiv_id":"2008.01976","date":"2020-08-05","proceeding":"NeurIPS 2021 12","authors":["Tuomas Oikarinen","Wang Zhang","Alexandre Megretski","Luca Daniel","Tsui-Wei Weng"],"abstract":"Recent studies have shown that deep reinforcement learning agents are vulnerable to small adversarial perturbations on the agent's inputs, which raises concerns about deploying such agents in the real world. To address this issue, we propose RADIAL-RL, a principled framework to train reinforcement learning agents with improved robustness against $l_p$-norm bounded adversarial attacks. Our framework is compatible with popular deep reinforcement learning algorithms and we demonstrate its performance with deep Q-learning, A3C and PPO. We experiment on three deep RL benchmarks (Atari, MuJoCo and ProcGen) to show the effectiveness of our robust training algorithm. Our RADIAL-RL agents consistently outperform prior methods when tested against attacks of varying strength and are more computationally efficient to train. In addition, we propose a new evaluation method called Greedy Worst-Case Reward (GWC) to measure attack agnostic robustness of deep RL agents. We show that GWC can be evaluated efficiently and is a good estimate of the reward under the worst possible sequence of adversarial attacks. All code used for our experiments is available at https://github.com/tuomaso/radial_rl_v2.","url_abs":"https://arxiv.org/abs/2008.01976v2","url_pdf":"https://arxiv.org/pdf/2008.01976v2.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":"robust-deep-reinforcement-learning-through","repo_url":"https://github.com/tuomaso/radial_rl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"robust-deep-reinforcement-learning-through","repo_url":"https://github.com/tuomaso/radial_rl_v2","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"adversarial-attack","task_name":"Adversarial Attack"},{"task_slug":"atari-games","task_name":"Atari Games"},{"task_slug":"deep-reinforcement-learning","task_name":"Deep Reinforcement Learning"},{"task_slug":"mujoco","task_name":"MuJoCo"},{"task_slug":"q-learning","task_name":"Q-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":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2008.01976","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2008.01976"}},"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/tuomaso/radial_rl","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tuomaso/radial_rl_v2","reach":{"status":"ok"}}],"summary":{"ran_honours":1,"ran":4,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"official":{"samples":9,"ran":6,"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":2,"samples":[{"code_sha256_prefix":"9e4158212d676038","entry":"safe_mean","repo":"tuomaso/radial_rl_v2","repo_kind":"official","path":"Procgen/eval_procgen.py","file_url":"https://github.com/tuomaso/radial_rl_v2/blob/HEAD/Procgen/eval_procgen.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":2,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9e4158212d676038"}},{"code_sha256_prefix":"69017b3a991e0815","entry":"activation_bound","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/ibp.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/ibp.py","link_basis":"plan_row","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":"69017b3a991e0815"}},{"code_sha256_prefix":"cfb1c3dd218b92f0","entry":"initial_bounds","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/ibp.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/ibp.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cfb1c3dd218b92f0"}},{"code_sha256_prefix":"23ff92a17dc4fd23","entry":"process_frame","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/environment.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/environment.py","link_basis":"plan_row","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":"23ff92a17dc4fd23"}},{"code_sha256_prefix":"9e82818c554c73e8","entry":"rollout_one_step","repo":"tuomaso/radial_rl_v2","repo_kind":"official","path":"Procgen/train_procgen.py","file_url":"https://github.com/tuomaso/radial_rl_v2/blob/HEAD/Procgen/train_procgen.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9e82818c554c73e8"}},{"code_sha256_prefix":"eba320329ae9cb63","entry":"weighted_bound","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/ibp.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/ibp.py","link_basis":"plan_row","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":"eba320329ae9cb63"}},{"code_sha256_prefix":"a225ca9d1701067e","entry":"atari_env","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/environment.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/environment.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":"a225ca9d1701067e"}},{"code_sha256_prefix":"4000c95fa330f2ce","entry":"read_config","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/utils.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/utils.py","link_basis":"plan_row","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":"4000c95fa330f2ce"}},{"code_sha256_prefix":"081882af810c4967","entry":"record_game","repo":"tuomaso/radial_rl","repo_kind":"official","path":"A3C/evaluate.py","file_url":"https://github.com/tuomaso/radial_rl/blob/HEAD/A3C/evaluate.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":"081882af810c4967"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}