{"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/pac-bayes-control-synthesizing-controllers","title":"PAC-Bayes Control: Learning Policies that Provably Generalize to Novel Environments","arxiv_id":"1806.04225","date":"2018-06-11","proceeding":null,"authors":["Anirudha Majumdar","Alec Farid","Anoopkumar Sonar"],"abstract":"Our goal is to learn control policies for robots that provably generalize well to novel environments given a dataset of example environments. The key technical idea behind our approach is to leverage tools from generalization theory in machine learning by exploiting a precise analogy (which we present in the form of a reduction) between generalization of control policies to novel environments and generalization of hypotheses in the supervised learning setting. In particular, we utilize the Probably Approximately Correct (PAC)-Bayes framework, which allows us to obtain upper bounds that hold with high probability on the expected cost of (stochastic) control policies across novel environments. We propose policy learning algorithms that explicitly seek to minimize this upper bound. The corresponding optimization problem can be solved using convex optimization (Relative Entropy Programming in particular) in the setting where we are optimizing over a finite policy space. In the more general setting of continuously parameterized policies (e.g., neural network policies), we minimize this upper bound using stochastic gradient descent. We present simulated results of our approach applied to learning (1) reactive obstacle avoidance policies and (2) neural network-based grasping policies. We also present hardware results for the Parrot Swing drone navigating through different obstacle environments. Our examples demonstrate the potential of our approach to provide strong generalization guarantees for robotic systems with continuous state and action spaces, complicated (e.g., nonlinear) dynamics, rich sensory inputs (e.g., depth images), and neural network-based policies.","url_abs":"https://arxiv.org/abs/1806.04225v5","url_pdf":"https://arxiv.org/pdf/1806.04225v5.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":"pac-bayes-control-synthesizing-controllers","repo_url":"https://github.com/irom-lab/PAC-Bayes-Control","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1806.04225","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1806.04225"}},"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/irom-lab/PAC-Bayes-Control","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"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":"2fb362e87fc95efa","entry":"expected_cost","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"Extension-Domain_Shifts/utils.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/Extension-Domain_Shifts/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"2fb362e87fc95efa"}},{"code_sha256_prefix":"bcfb58b7ccbd0875","entry":"generate_obstacles","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"utils_simulation.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/utils_simulation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"bcfb58b7ccbd0875"}},{"code_sha256_prefix":"18f46646194cedc3","entry":"getDistances","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"utils_simulation.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/utils_simulation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"18f46646194cedc3"}},{"code_sha256_prefix":"cbbc4f939b2eef2f","entry":"kl_divergence","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"Extension-Domain_Shifts/utils.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/Extension-Domain_Shifts/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"cbbc4f939b2eef2f"}},{"code_sha256_prefix":"792b054090d3d04d","entry":"kl_inverse","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"optimize_PAC_bound.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/optimize_PAC_bound.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"792b054090d3d04d"}},{"code_sha256_prefix":"4f716bb619cd86fa","entry":"kl_inverse_l","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"Extension-Domain_Shifts/utils.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/Extension-Domain_Shifts/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"4f716bb619cd86fa"}},{"code_sha256_prefix":"b784191da03032db","entry":"optimize_PAC_bound","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"optimize_PAC_bound.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/optimize_PAC_bound.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"b784191da03032db"}},{"code_sha256_prefix":"aa0698dcefebb731","entry":"optimize_PAC_bound_MPB","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"Extension-Domain_Shifts/optimize_PAC_bound.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/Extension-Domain_Shifts/optimize_PAC_bound.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"aa0698dcefebb731"}},{"code_sha256_prefix":"7c22ea7dcb0a20d8","entry":"optimize_PAC_bound_NPB","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"Extension-Domain_Shifts/optimize_PAC_bound.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/Extension-Domain_Shifts/optimize_PAC_bound.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7c22ea7dcb0a20d8"}},{"code_sha256_prefix":"1367ffaf9c43fa2c","entry":"robot_update_state","repo":"irom-lab/PAC-Bayes-Control","repo_kind":"official","path":"utils_simulation.py","file_url":"https://github.com/irom-lab/PAC-Bayes-Control/blob/HEAD/utils_simulation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"1367ffaf9c43fa2c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}