{"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/fully-parameterized-quantile-function-for","title":"Fully Parameterized Quantile Function for Distributional Reinforcement Learning","arxiv_id":"1911.02140","date":"2019-11-05","proceeding":"NeurIPS 2019 12","authors":["Derek Yang","Li Zhao","Zichuan Lin","Tao Qin","Jiang Bian","Tie-Yan Liu"],"abstract":"Distributional Reinforcement Learning (RL) differs from traditional RL in that, rather than the expectation of total returns, it estimates distributions and has achieved state-of-the-art performance on Atari Games. The key challenge in practical distributional RL algorithms lies in how to parameterize estimated distributions so as to better approximate the true continuous distribution. Existing distributional RL algorithms parameterize either the probability side or the return value side of the distribution function, leaving the other side uniformly fixed as in C51, QR-DQN or randomly sampled as in IQN. In this paper, we propose fully parameterized quantile function that parameterizes both the quantile fraction axis (i.e., the x-axis) and the value axis (i.e., y-axis) for distributional RL. Our algorithm contains a fraction proposal network that generates a discrete set of quantile fractions and a quantile value network that gives corresponding quantile values. The two networks are jointly trained to find the best approximation of the true distribution. Experiments on 55 Atari Games show that our algorithm significantly outperforms existing distributional RL algorithms and creates a new record for the Atari Learning Environment for non-distributed agents.","url_abs":"https://arxiv.org/abs/1911.02140v3","url_pdf":"https://arxiv.org/pdf/1911.02140v3.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":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/BY571/FQF-and-Extensions","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/ku2482/rljax","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/microsoft/FQF","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/opendilab/DI-engine","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"fully-parameterized-quantile-function-for","repo_url":"https://github.com/robinzixuan/IQN_Agent","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"atari-games","task_name":"Atari Games"},{"task_slug":"distributional-reinforcement-learning","task_name":"Distributional Reinforcement 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":"FQF","rank_in_archive_order":9,"of":49,"metrics":{"Score":"16754.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-amidar","task":"Atari Games","dataset":"Atari 2600 Amidar","model":"FQF","rank_in_archive_order":6,"of":48,"metrics":{"Score":"3165.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-asterix","task":"Atari Games","dataset":"Atari 2600 Asterix","model":"FQF","rank_in_archive_order":7,"of":49,"metrics":{"Score":"578388.5"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-asteroids","task":"Atari Games","dataset":"Atari 2600 Asteroids","model":"FQF","rank_in_archive_order":15,"of":43,"metrics":{"Score":"4553.0"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-battle-zone","task":"Atari Games","dataset":"Atari 2600 Battle Zone","model":"FQF","rank_in_archive_order":8,"of":47,"metrics":{"Score":"87928.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-berzerk","task":"Atari Games","dataset":"Atari 2600 Berzerk","model":"FQF","rank_in_archive_order":8,"of":39,"metrics":{"Score":"12422.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-bowling","task":"Atari Games","dataset":"Atari 2600 Bowling","model":"FQF","rank_in_archive_order":11,"of":44,"metrics":{"Score":"102.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-breakout","task":"Atari Games","dataset":"Atari 2600 Breakout","model":"FQF","rank_in_archive_order":6,"of":58,"metrics":{"Score":"854.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-chopper-command","task":"Atari Games","dataset":"Atari 2600 Chopper Command","model":"FQF","rank_in_archive_order":7,"of":45,"metrics":{"Score":"876460.0"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-crazy-climber","task":"Atari Games","dataset":"Atari 2600 Crazy Climber","model":"FQF","rank_in_archive_order":7,"of":49,"metrics":{"Score":"223470.6"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-fishing-derby","task":"Atari Games","dataset":"Atari 2600 Fishing Derby","model":"FQF","rank_in_archive_order":12,"of":44,"metrics":{"Score":"52.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-frostbite","task":"Atari Games","dataset":"Atari 2600 Frostbite","model":"Fearlessmrx","rank_in_archive_order":5,"of":53,"metrics":{"Score":"214060"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-gravitar","task":"Atari Games","dataset":"Atari 2600 Gravitar","model":"FQF","rank_in_archive_order":20,"of":53,"metrics":{"Score":"1406.0"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-hero","task":"Atari Games","dataset":"Atari 2600 HERO","model":"FQF","rank_in_archive_order":14,"of":44,"metrics":{"Score":"30926.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-ice-hockey","task":"Atari Games","dataset":"Atari 2600 Ice Hockey","model":"FQF","rank_in_archive_order":11,"of":43,"metrics":{"Score":"17.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-james-bond","task":"Atari Games","dataset":"Atari 2600 James Bond","model":"FQF","rank_in_archive_order":5,"of":45,"metrics":{"Score":"87291.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-kung-fu-master","task":"Atari Games","dataset":"Atari 2600 Kung-Fu Master","model":"FQF","rank_in_archive_order":8,"of":43,"metrics":{"Score":"111138.5"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-ms-pacman","task":"Atari Games","dataset":"Atari 2600 Ms. Pacman","model":"FQF","rank_in_archive_order":11,"of":47,"metrics":{"Score":"7631.9"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-phoenix","task":"Atari Games","dataset":"Atari 2600 Phoenix","model":"FQF","rank_in_archive_order":11,"of":21,"metrics":{"Score":"174077.5"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-river-raid","task":"Atari Games","dataset":"Atari 2600 River Raid","model":"FQF","rank_in_archive_order":10,"of":41,"metrics":{"Score":"23560.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-robotank","task":"Atari Games","dataset":"Atari 2600 Robotank","model":"FQF","rank_in_archive_order":9,"of":42,"metrics":{"Score":"75.7"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-skiing","task":"Atari Games","dataset":"Atari 2600 Skiing","model":"FQF","rank_in_archive_order":7,"of":23,"metrics":{"Score":"-9085.3"},"uses_additional_data":true},{"leaderboard":"/sota/atari-games-on-atari-2600-space-invaders","task":"Atari Games","dataset":"Atari 2600 Space Invaders","model":"FQF","rank_in_archive_order":8,"of":55,"metrics":{"Score":"46498.3"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-star-gunner","task":"Atari Games","dataset":"Atari 2600 Star Gunner","model":"FQF","rank_in_archive_order":12,"of":43,"metrics":{"Score":"131981.2"},"uses_additional_data":false},{"leaderboard":"/sota/atari-games-on-atari-2600-wizard-of-wor","task":"Atari Games","dataset":"Atari 2600 Wizard of Wor","model":"FQF","rank_in_archive_order":9,"of":41,"metrics":{"Score":"44782.6"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1911.02140","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1911.02140"}},"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/ku2482/rljax","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/BY571/FQF-and-Extensions","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/opendilab/DI-engine","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/robinzixuan/IQN_Agent","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/FQF","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_draft_wrong":1,"unverified":9},"by_repo_kind":{"listed":{"samples":10,"ran":1,"repositories":3}},"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":"d9d455622c2dcd61","entry":"calculate_huber_loss","repo":"BY571/FQF-and-Extensions","repo_kind":"listed","path":"agent.py","file_url":"https://github.com/BY571/FQF-and-Extensions/blob/HEAD/agent.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d9d455622c2dcd61"}},{"code_sha256_prefix":"14e1926aa3c869bb","entry":"calc_fraction_loss","repo":"BY571/FQF-and-Extensions","repo_kind":"listed","path":"agent.py","file_url":"https://github.com/BY571/FQF-and-Extensions/blob/HEAD/agent.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":"14e1926aa3c869bb"}},{"code_sha256_prefix":"8467036da5b81c2f","entry":"calculate_huber_loss","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/utils.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/utils.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":"8467036da5b81c2f"}},{"code_sha256_prefix":"6e8ed4390d6cac69","entry":"calculate_quantile_huber_loss","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/utils.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/utils.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":"6e8ed4390d6cac69"}},{"code_sha256_prefix":"ee9ee61faefc4729","entry":"calculate_quantile_huber_loss","repo":"robinzixuan/IQN_Agent","repo_kind":"listed","path":"fqf_iqn_qrdqn/utils.py","file_url":"https://github.com/robinzixuan/IQN_Agent/blob/HEAD/fqf_iqn_qrdqn/utils.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":"ee9ee61faefc4729"}},{"code_sha256_prefix":"77f81f55ded2bb12","entry":"evaluate_quantile_at_action","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/utils.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/utils.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":"77f81f55ded2bb12"}},{"code_sha256_prefix":"4bc698f17fe89d85","entry":"make_atari","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/env.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/env.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":"4bc698f17fe89d85"}},{"code_sha256_prefix":"06fc02646fefa30a","entry":"make_env","repo":"BY571/FQF-and-Extensions","repo_kind":"listed","path":"wrapper.py","file_url":"https://github.com/BY571/FQF-and-Extensions/blob/HEAD/wrapper.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":"06fc02646fefa30a"}},{"code_sha256_prefix":"b89e7274f78fdda2","entry":"make_pytorch_env","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/env.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/env.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":"b89e7274f78fdda2"}},{"code_sha256_prefix":"75ec4650e3554f24","entry":"wrap_deepmind_pytorch","repo":"ku2482/fqf-iqn-qrdqn.pytorch","repo_kind":"listed","path":"fqf_iqn_qrdqn/env.py","file_url":"https://github.com/ku2482/fqf-iqn-qrdqn.pytorch/blob/HEAD/fqf_iqn_qrdqn/env.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":"75ec4650e3554f24"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}