neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗PyBADS is one of the open-source tools for fitting models to data from the Machine and Human Intelligence Group at the University of Helsinki. Check out our other tools, such as PyVBMC for the posterior and the model evidence and PyIBS for models that can only be simulated.
PyBADS [1] is a Python implementation of the Bayesian Adaptive Direct Search (BADS) algorithm for solving difficult and mildly expensive optimization problems, originally implemented in MATLAB. BADS has been intensively tested for fitting a variety of computational models, and is currently being used in many computational labs around the world (see Google Scholar for many example applications).
In a benchmark with real model-fitting problems from computational and cognitive neuroscience, BADS performed on par or better than many other common and state-of-the-art optimizers, as shown in the original NeurIPS paper [2].
PyBADS requires no specific tuning and runs off-the-shelf like other Python optimizers (e.g., scipy.optimize.minimize).
Watch a three-minute film that explains how PyBADS works.
Note: If you are interested in estimating posterior distributions (i.e., uncertainty and error bars) over model parameters, and not just point estimates, you might also want to check out Variational Bayesian Monte Carlo for Python (PyVBMC), a package for Bayesian posterior and model inference which can be used in synergy with PyBADS. Our model-fitting page explains when to use which.
periodic_vars lists the indices of the variables that are periodic, such as angles; set the hard bounds of each one period apart, and BADS wraps the variable around them (see Example 6 and the FAQ).BADS(..., precomputed_evaluations=(X, y)) gives a run the evaluations of the target that you already have, for instance from an earlier run: its Gaussian process uses them, and they do not count against max_fun_evals. The run still starts from x0 (see the BADS reference).options={"show_tips": False} turns them off); and the PyBADS skill points a coding agent to the documentation relevant to its task (see ).The changelog lists what changed since PyBADS 1.1.0. Results differ from 1.1.0, also with a fixed seed. BADS checks the values of many options when it is created and refuses some that 1.1.0 accepted, and some calls and returned fields change: the changelog's list "Upgrading from 1.1.0" says what to check in an existing script.
The full documentation is available at: https://acerbilab.github.io/pybads/
Its FAQ collects questions and answers on installing PyBADS, setting up the objective and the bounds, noisy objectives, reading the results, and runs that go wrong.
For coding agents, the PyBADS skill points to the
documentation relevant to each task. Give your agent that file, or copy the
skills/pybads folder into its skill directory. To update a copied skill,
copy the folder again from the PyBADS version you use.
We recommend PyBADS for problems in which:
D = 20.The FAQ says what to use for other problems.
PyBADS is available via pip and conda-forge.
Install or upgrade with pip:
python -m pip install --upgrade pybads
Or install with Conda:
conda install --channel=conda-forge pybads
PyBADS requires Python version 3.10 or newer.
PyBADS 1.5 requires NumPy 2.0 or newer, and its conda-forge package requires Python 3.11 or newer. In an environment that holds NumPy 1.x or Python 3.10, conda installs an older PyBADS instead, without a warning: ask it for "pybads>=1.5", or see the FAQ.
(Optional): Install Jupyter Notebook to run the examples. You can skip this step if your environment already has Jupyter Notebook, but be aware that if the wrong jupyter executable is found on your path then import errors may arise.
python -m pip install notebook
or, with Conda:
conda install --channel=conda-forge jupyter
The example notebooks can then be accessed by running
python -m pybads
If you wish to install directly from latest source code, please see the instructions for developers and contributors.
The typical workflow of PyBADS follows four steps:
Running the optimizer in step 3 only involves a couple of lines of code:
from pybads import BADS
# ...
bads = BADS(target, x0, lower_bounds, upper_bounds, plausible_lower_bounds, plausible_upper_bounds)
optimize_result = bads.optimize()
with input arguments:
target: the target function, it takes as input a vector and returns its function evaluation;x0: the starting point of the optimization problem. If it is not given, the starting point is drawn at random within the plausible bounds;lower_bounds and upper_bounds: hard lower and upper bounds for the optimization region (can be -inf and inf, or bounded);plausible_lower_bounds and plausible_upper_bounds: plausible lower and upper bounds, that represent our best guess at bounding the region where the solution might lie;non_box_cons (optional): a callable function that denotes non-box constraint violations.The outputs are:
optimize_result: an OptimizeResult object which presents relevant information about the solution and the optimization problem. In particular:
"x": the minimum point found by the optimizer;"fval": the value of the function at the given solution.For a full list and description of the entries of the optimize_result object, see the OptimizeResult class documentation.
For a reproducible run, pass an integer seed when creating the BADS object, e.g. BADS(..., options={"random_seed": 42}); for independent runs, use different seeds or leave random_seed unset. The seed controls only PyBADS's own random draws: if your target is noisy (e.g., simulation-based), seed its random number generator separately. The FAQ says how to make a run reproducible.
Once installed, example Jupyter notebooks can be found in the pybads/examples directory. They can also be viewed statically on the main documentation pages. These examples represent a full tutorial that will walk you through the basic usage of PyBADS as well as some of its more advanced features, such as noisy targets.
For practical recommendations, such as how to set lower_bounds, upper_bounds and the plausible bounds, how to handle a noisy objective, and what to do when a run goes wrong, check out the PyBADS FAQ.
Watch a three-minute film that explains how PyBADS works.
PyBADS/BADS follows a mesh adaptive direct search (MADS) procedure for function minimization that alternates poll steps and search steps (see Fig 1).
Fig 1: BADS procedure. The poll's steps along each variable scale with that variable's plausible range.
See here for a visualization of several optimizers at work, including BADS.
See the original BADS paper for more details (Acerbi and Ma, 2017).
PyBADS is under active development. The original BADS algorithm has been extensively tested in several benchmarks and published papers, and some of the benchmarks have been replicated with PyBADS. However, as with any optimization method, you should double-check your results.
Many questions are answered in the FAQ. Its Troubleshooting section says how to check that a run went well, and covers errors and warnings, results that differ from run to run, and runs that stop too early or converge slowly.
If the FAQ does not help, you spot bugs or strange behavior, or you simply have some questions, please feel free to:
Singh, G. S. & Acerbi, L. (2024). PyBADS: Fast and robust black-box optimization in Python. Journal of Open Source Software, 9(94), 5694, https://doi.org/10.21105/joss.05694
Acerbi, L. & Ma, W. J. (2017). Practical Bayesian Optimization for Model Fitting with Bayesian Adaptive Direct Search. In Advances in Neural Information Processing Systems 30: 1834-1844. (paper + supplement on arXiv, NeurIPS Proceedings)
Please cite both references if you use PyBADS in your work (the 2017 paper introduced the framework, and the latest one is its Python library). You can cite PyBADS in your work with something along the lines of
We optimized the log likelihoods of our models using Bayesian adaptive direct search (BADS; Acerbi and Ma, 2017), via the PyBADS software (Singh and Acerbi, 2024). PyBADS alternates between a series of fast, local Bayesian optimization steps and a systematic, slower exploration of a mesh grid.
Besides formal citations, you can demonstrate your appreciation for PyBADS in the following ways:
You may also want to check out PyVBMC, our companion method for posterior and model inference, and the lab's other methods.
@article{singh2024pybads,
title={{PyBADS}: {F}ast and robust black-box optimization in {P}ython},
author={Gurjeet Sangra Singh and Luigi Acerbi},
publisher = {The Open Journal},
journal = {Journal of Open Source Software},
year = {2024},
volume = {9},
number = {94},
pages = {5694},
url = {https://doi.org/10.21105/joss.05694},
doi = {10.21105/joss.05694},
}
@article{acerbi2017practical,
title={Practical {B}ayesian Optimization for Model Fitting with {B}ayesian Adaptive Direct Search},
author={Acerbi, Luigi and Ma, Wei Ji},
journal={Advances in Neural Information Processing Systems},
volume={30},
pages={1834--1844},
year={2017}
}
PyBADS is released under the terms of the BSD 3-Clause License.
PyBADS is developed by members (past and current) of the Machine and Human Intelligence Group at the University of Helsinki and ELLIS Institute Finland. Starting from version 1.1, development of PyBADS has been assisted by coding agents, including Anthropic's Claude Opus 5.5. Work on the PyBADS package is supported by the Research Council of Finland (grants 356498 and 358980 to Luigi Acerbi) and its Flagship programme: Finnish Center for Artificial Intelligence FCAI.