Discorde | Liste de diffusion | Gazouillement |
---|---|---|
Groupes Google |
Site web | Source | Documents | Papier |
---|---|---|---|
pyribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
PyPI | Conda | CI/CD | Statut des documents |
---|---|---|---|
Une bibliothèque Python simple pour l'optimisation de la diversité de la qualité (QD). Pyribs implémente le cadre hautement modulaire Rapid Illumination of Behaviour Space (RIBS) pour l'optimisation QD. Pyribs est également l'implémentation officielle de Covariance Matrix Adaptation MAP-Elites (CMA-ME), Covariance Matrix Adaptation MAP-Elites via a Gradient Arborescence (CMA-MEGA), Covariance Matrix Adaptation MAP-Annealing (CMA-MAE) et des variantes évolutives. du CMA-MAE.
Rejoignez la liste de diffusion Pyribs Announcements pour des mises à jour peu fréquentes (moins d'une fois par mois) sur l'état du projet et les nouvelles versions.
Besoin d'aide ? Vous voulez savoir si pyribs convient à votre projet ? Vous avez une question qui n'est pas vraiment un bug ni une demande de fonctionnalité ?
Rejoignez la communauté Discord !
L'optimisation de la diversité de qualité (QD) est un sous-domaine d'optimisation dans lequel les solutions générées couvrent chaque point d'un espace de mesure tout en maximisant (ou minimisant) simultanément un seul objectif . Les algorithmes QD de la famille d'algorithmes QD MAP-Elites produisent des cartes thermiques (archives) en sortie où chaque cellule contient le meilleur représentant découvert d'une région dans l'espace de mesure.
Dans la littérature QD, les résultats des fonctions de mesure sont également appelés « caractéristiques comportementales », « descripteurs de comportement » ou « descripteurs de caractéristiques ».
Ces dernières années ont vu le développement d’un grand nombre d’algorithmes QD. Pour représenter ces algorithmes et ceux à venir, nous avons développé le cadre hautement modulaire RIBS. RIBS divise un algorithme QD en trois composants :
En échangeant ces composants, un utilisateur peut composer un grand nombre d'algorithmes QD.
Pyribs est une implémentation du framework RIBS conçue pour prendre en charge un large éventail d'utilisateurs, des débutants entrant dans le domaine aux chercheurs expérimentés cherchant à développer de nouveaux algorithmes. Pyribs atteint ces objectifs en incarnant trois principes :
Contrairement aux autres bibliothèques QD, pyribs est « simple ». Par exemple, comme pycma, pyribs se concentre uniquement sur l'optimisation de domaines continus de dimension fixe. Se concentrer sur ce problème courant nous permet d'optimiser la bibliothèque en termes de performances et de facilité d'utilisation. Reportez-vous à la liste des bibliothèques QD supplémentaires ci-dessous si vous devez gérer des cas d'utilisation supplémentaires.
Suivant le framework RIBS (illustré dans la figure ci-dessous), un algorithme standard en pyribs fonctionne comme suit :
ask()
sur le planificateur. Le planificateur demande des solutions à chaque émetteur en appelant la méthode ask()
de l'émetteur.tell()
du planificateur. Le planificateur ajoute les solutions dans l'archive et reçoit des commentaires. Le planificateur transmet ces commentaires ainsi que les solutions évaluées à la méthode tell()
de chaque émetteur, et chaque émetteur met ensuite à jour son état interne. pyribs prend en charge Python 3.8 et supérieur. La grande majorité des utilisateurs peuvent installer pyribs en exécutant :
# If you are on Mac, you may need to use quotations, e.g., pip install "ribs[visualize]"
pip install ribs[visualize]
La commande ci-dessus inclut le supplément visualize
. Si vous n'utilisez pas les outils de visualisation de pyribs, vous pouvez installer la version de base de pyribs avec :
pip install ribs
Pour des commandes d'installation plus spécifiques (par exemple, installation à partir de Conda ou installation à partir des sources), visitez le sélecteur d'installation sur notre site Web.
Pour tester votre installation, importez pyribs et imprimez la version avec cette commande :
python -c " import ribs; print(ribs.__version__) "
Vous devriez voir un numéro de version dans la sortie.
Nous montrons ici un exemple d’application de CMA-ME dans les pyribs. Pour initialiser l'algorithme, nous créons d'abord :
Après avoir initialisé les composants, nous optimisons (pyribs maximise) la fonction sphère 10-D négative pour 1000 itérations. Les utilisateurs de pycma seront familiers avec l'interface demander-dire (que pyribs a adoptée). Tout d’abord, l’utilisateur doit ask
au planificateur de nouvelles solutions candidates. Après avoir évalué la solution, ils tell
au planificateur les objectifs et les mesures de chaque solution candidate. L’algorithme remplit ensuite l’archive et décide où échantillonner ensuite les solutions. Notre exemple de jouet utilise les deux premiers paramètres de l'espace de recherche comme mesures.
import numpy as np
from ribs . archives import GridArchive
from ribs . emitters import EvolutionStrategyEmitter
from ribs . schedulers import Scheduler
archive = GridArchive (
solution_dim = 10 ,
dims = [ 20 , 20 ],
ranges = [( - 1 , 1 ), ( - 1 , 1 )],
)
emitters = [
EvolutionStrategyEmitter (
archive ,
x0 = [ 0.0 ] * 10 ,
sigma0 = 0.1 ,
) for _ in range ( 3 )
]
scheduler = Scheduler ( archive , emitters )
for itr in range ( 1000 ):
solutions = scheduler . ask ()
# Optimize the 10D negative Sphere function.
objective_batch = - np . sum ( np . square ( solutions ), axis = 1 )
# Measures: first 2 coordinates of each 10D solution.
measures_batch = solutions [:, : 2 ]
scheduler . tell ( objective_batch , measures_batch )
Pour visualiser cette archive avec Matplotlib, nous utilisons ensuite la fonction grid_archive_heatmap
de ribs.visualize
.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
La documentation est disponible en ligne ici. Nous suggérons aux nouveaux utilisateurs de commencer par les didacticiels.
Deux ans après la sortie initiale de pyribs, nous avons publié un article qui détaille le cadre RIBS et les décisions de conception derrière pyribs. Pour plus d’informations sur ce document, voir ici. Si vous utilisez des pyribs dans vos recherches, pensez à citer cet article comme suit. Pensez également à citer tous les algorithmes que vous utilisez, comme indiqué ci-dessous.
@inproceedings{10.1145/3583131.3590374,
author = {Tjanaka, Bryon and Fontaine, Matthew C and Lee, David H and Zhang, Yulun and Balam, Nivedit Reddy and Dennler, Nathaniel and Garlanka, Sujay S and Klapsis, Nikitas Dimitri and Nikolaidis, Stefanos},
title = {Pyribs: A Bare-Bones Python Library for Quality Diversity Optimization},
year = {2023},
isbn = {9798400701191},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3583131.3590374},
doi = {10.1145/3583131.3590374},
abstract = {Recent years have seen a rise in the popularity of quality diversity (QD) optimization, a branch of optimization that seeks to find a collection of diverse, high-performing solutions to a given problem. To grow further, we believe the QD community faces two challenges: developing a framework to represent the field's growing array of algorithms, and implementing that framework in software that supports a range of researchers and practitioners. To address these challenges, we have developed pyribs, a library built on a highly modular conceptual QD framework. By replacing components in the conceptual framework, and hence in pyribs, users can compose algorithms from across the QD literature; equally important, they can identify unexplored algorithm variations. Furthermore, pyribs makes this framework simple, flexible, and accessible, with a user-friendly API supported by extensive documentation and tutorials. This paper overviews the creation of pyribs, focusing on the conceptual framework that it implements and the design principles that have guided the library's development. Pyribs is available at https://pyribs.org},
booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference},
pages = {220–229},
numpages = {10},
keywords = {framework, quality diversity, software library},
location = {Lisbon, Portugal},
series = {GECCO '23}
}
pyribs est développé et maintenu par le laboratoire ICAROS de l'USC. Pour plus d’informations sur la contribution au dépôt, voir CONTRIBUTION.
Nous remercions Amy K. Hoover et Julian Togelius pour leurs contributions à l'élaboration de l'algorithme CMA-ME.
Les utilisateurs de pyribs incluent :
Pour la liste des publications qui utilisent les pyribs, reportez-vous à notre entrée Google Scholar.
Consultez le graphique de dépendance GitHub pour les référentiels publics GitHub qui dépendent de pyribs.
Si vous utilisez les algorithmes suivants, pensez à citer leurs articles pertinents :
@inproceedings{10.1145/3377930.3390232,
author = {Fontaine, Matthew C. and Togelius, Julian and Nikolaidis, Stefanos and Hoover, Amy K.},
title = {Covariance Matrix Adaptation for the Rapid Illumination of Behavior Space},
year = {2020},
isbn = {9781450371285},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3377930.3390232},
doi = {10.1145/3377930.3390232},
booktitle = {Proceedings of the 2020 Genetic and Evolutionary Computation Conference},
pages = {94–102},
numpages = {9},
location = {Canc'{u}n, Mexico},
series = {GECCO '20}
}
@inproceedings{NEURIPS2021_532923f1,
author = {Fontaine, Matthew and Nikolaidis, Stefanos},
booktitle = {Advances in Neural Information Processing Systems},
editor = {M. Ranzato and A. Beygelzimer and Y. Dauphin and P.S. Liang and J. Wortman Vaughan},
pages = {10040--10052},
publisher = {Curran Associates, Inc.},
title = {Differentiable Quality Diversity},
url = {https://proceedings.neurips.cc/paper/2021/file/532923f11ac97d3e7cb0130315b067dc-Paper.pdf},
volume = {34},
year = {2021}
}
@misc{cmamae,
doi = {10.48550/ARXIV.2205.10752},
url = {https://arxiv.org/abs/2205.10752},
author = {Fontaine, Matthew C. and Nikolaidis, Stefanos},
keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {Covariance Matrix Adaptation MAP-Annealing},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}
@ARTICLE{10243102,
author={Tjanaka, Bryon and Fontaine, Matthew C. and Lee, David H. and Kalkar, Aniruddha and Nikolaidis, Stefanos},
journal={IEEE Robotics and Automation Letters},
title={Training Diverse High-Dimensional Controllers by Scaling Covariance Matrix Adaptation MAP-Annealing},
year={2023},
volume={8},
number={10},
pages={6771-6778},
keywords={Covariance matrices;Training;Neural networks;Legged locomotion;Reinforcement learning;Evolutionary robotics;Evolutionary robotics;reinforcement learning},
doi={10.1109/LRA.2023.3313012}
}
pyribs est publié sous la licence MIT.
Le package pyribs a été initialement créé avec Cookiecutter et le modèle de projet audreyr/cookiecutter-pypackage.