{"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/inverse-decision-making-using-neural","title":"Inverse decision-making using neural amortized Bayesian actors","arxiv_id":"2409.03710","date":"2024-09-04","proceeding":null,"authors":["Dominik Straub","Tobias F. Niehues","Jan Peters","Constantin A. Rothkopf"],"abstract":"Bayesian observer and actor models have provided normative explanations for many behavioral phenomena in perception, sensorimotor control, and other areas of cognitive science and neuroscience. They attribute behavioral variability and biases to interpretable entities such as perceptual and motor uncertainty, prior beliefs, and behavioral costs. However, when extending these models to more naturalistic tasks with continuous actions, solving the Bayesian decision-making problem is often analytically intractable. Inverse decision-making, i.e. performing inference over the parameters of such models given behavioral data, is computationally even more difficult. Therefore, researchers typically constrain their models to easily tractable components, such as Gaussian distributions or quadratic cost functions, or resort to numerical approximations. To overcome these limitations, we amortize the Bayesian actor using a neural network trained on a wide range of parameter settings in an unsupervised fashion. Using the pre-trained neural network enables performing efficient gradient-based Bayesian inference of the Bayesian actor model's parameters. We show on synthetic data that the inferred posterior distributions are in close alignment with those obtained using analytical solutions where they exist. Where no analytical solution is available, we recover posterior distributions close to the ground truth. We then show how our method allows for principled model comparison and how it can be used to disentangle factors that may lead to unidentifiabilities between priors and costs. Finally, we apply our method to empirical data from three sensorimotor tasks and compare model fits with different cost functions to show that it can explain individuals' behavioral patterns.","url_abs":"https://arxiv.org/abs/2409.03710v2","url_pdf":"https://arxiv.org/pdf/2409.03710v2.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":"inverse-decision-making-using-neural","repo_url":"https://github.com/rothkopflab/naba","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"jax","reach":{"status":"ok","spdx":"AGPL-3.0"}}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"bayesian-inference","task_name":"Bayesian Inference"},{"task_slug":"decision-making","task_name":"Decision Making"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2409.03710","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.03710"}},"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/rothkopflab/naba","reach":{"status":"ok","spdx":"AGPL-3.0"}}],"summary":{"ran":4},"by_repo_kind":{"official":{"samples":4,"ran":4,"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":4,"samples":[{"code_sha256_prefix":"a5b3fe3c9a714c39","entry":"lognormal_from_quantiles","repo":"rothkopflab/naba","repo_kind":"official","path":"naba/priors.py","file_url":"https://github.com/rothkopflab/naba/blob/HEAD/naba/priors.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"a5b3fe3c9a714c39"}},{"code_sha256_prefix":"38b0c4ee49e460d0","entry":"moment","repo":"rothkopflab/naba","repo_kind":"official","path":"naba/lognormal.py","file_url":"https://github.com/rothkopflab/naba/blob/HEAD/naba/lognormal.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"38b0c4ee49e460d0"}},{"code_sha256_prefix":"36f27035de5836ad","entry":"percentile_interval","repo":"rothkopflab/naba","repo_kind":"official","path":"naba/infer.py","file_url":"https://github.com/rothkopflab/naba/blob/HEAD/naba/infer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"36f27035de5836ad"}},{"code_sha256_prefix":"da407d53abdeb2dd","entry":"random_split_like_tree","repo":"rothkopflab/naba","repo_kind":"official","path":"naba/data.py","file_url":"https://github.com/rothkopflab/naba/blob/HEAD/naba/data.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"AGPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"da407d53abdeb2dd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}