Zwietracht | Mailingliste | |
---|---|---|
Google Groups |
Webseite | Quelle | Dokumente | Papier |
---|---|---|---|
pyribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
PyPI | Conda | CI/CD | Dokumentenstatus |
---|---|---|---|
Eine einfache Python-Bibliothek zur Optimierung der Qualitätsvielfalt (Quality Diversity, QD). Pyribs implementiert das hochmodulare Rapid Illumination of Behavior Space (RIBS) -Framework zur QD-Optimierung. Pyribs ist auch die offizielle Implementierung von Covariance Matrix Adaptation MAP-Elites (CMA-ME), Covariance Matrix Adaptation MAP-Elites via a Gradient Arboreszenz (CMA-MEGA), Covariance Matrix Adaptation MAP-Annealing (CMA-MAE) und skalierbaren Varianten von CMA-MAE.
Treten Sie der Mailingliste Pyribs Announcements bei, um seltene Updates (weniger als 1/Monat) zum Status des Projekts und zu neuen Veröffentlichungen zu erhalten.
Brauchen Sie Hilfe? Möchten Sie fragen, ob Pyribs für Ihr Projekt geeignet ist? Haben Sie eine Frage, bei der es sich weder um einen Fehler noch um eine Funktionsanfrage handelt?
Treten Sie der Discord-Community bei!
Die Optimierung der Qualitätsdiversität (Quality Diversity, QD) ist ein Teilgebiet der Optimierung, bei dem generierte Lösungen jeden Punkt in einem Messraum abdecken und gleichzeitig ein einzelnes Ziel maximieren (oder minimieren). QD-Algorithmen innerhalb der MAP-Elites-Familie von QD-Algorithmen erzeugen Heatmaps (Archive) als Ausgabe, wobei jede Zelle den am besten entdeckten Vertreter einer Region im Messraum enthält.
In der QD-Literatur werden Messfunktionsausgaben auch als „Verhaltensmerkmale“, „Verhaltensdeskriptoren“ oder „Merkmalsdeskriptoren“ bezeichnet.
In den letzten Jahren wurde eine Vielzahl von QD-Algorithmen entwickelt. Um diese und zukünftige Algorithmen abzubilden, haben wir das hochmodulare RIBS-Framework entwickelt. RIBS unterteilt einen QD-Algorithmus in drei Komponenten:
Durch den Austausch dieser Komponenten kann ein Benutzer eine große Anzahl von QD-Algorithmen erstellen.
Pyribs ist eine Implementierung des RIBS-Frameworks, die eine breite Palette von Benutzern unterstützen soll, von Einsteigern auf diesem Gebiet bis hin zu erfahrenen Forschern, die neue Algorithmen entwickeln möchten. Pyribs erreicht diese Ziele durch die Verkörperung von drei Prinzipien:
Im Gegensatz zu anderen QD-Bibliotheken handelt es sich bei pyribs um „einfache Bibliotheken“. Beispielsweise konzentriert sich Pyribs wie Pycma ausschließlich auf die Optimierung festdimensionaler kontinuierlicher Domänen. Indem wir uns auf dieses häufig auftretende Problem konzentrieren, können wir die Bibliothek hinsichtlich Leistung und Benutzerfreundlichkeit optimieren. Sehen Sie sich die Liste der zusätzlichen QD-Bibliotheken unten an, wenn Sie zusätzliche Anwendungsfälle bearbeiten müssen.
Gemäß dem RIBS-Framework (siehe Abbildung unten) funktioniert ein Standardalgorithmus in pyribs wie folgt:
ask()
im Scheduler auf. Der Scheduler fordert von jedem Emitter Lösungen an, indem er die ask()
Methode des Emitters aufruft.tell()
-Methode des Schedulers. Der Planer fügt die Lösungen dem Archiv hinzu und erhält Feedback. Der Scheduler leitet dieses Feedback zusammen mit den ausgewerteten Lösungen an die tell()
Methode jedes Emitters weiter, und jeder Emitter aktualisiert dann seinen internen Status. pyribs unterstützt Python 3.8 und höher. Die überwiegende Mehrheit der Benutzer kann pyribs installieren, indem sie Folgendes ausführen:
# If you are on Mac, you may need to use quotations, e.g., pip install "ribs[visualize]"
pip install ribs[visualize]
Der obige Befehl enthält das visualize
Extra. Wenn Sie die Visualisierungstools von pyribs nicht verwenden, können Sie die Basisversion von pyribs installieren mit:
pip install ribs
Für spezifischere Installationsbefehle (z. B. Installation von Conda oder Installation von der Quelle) besuchen Sie die Installationsauswahl auf unserer Website.
Um Ihre Installation zu testen, importieren Sie pyribs und drucken Sie die Version mit diesem Befehl aus:
python -c " import ribs; print(ribs.__version__) "
In der Ausgabe sollte eine Versionsnummer angezeigt werden.
Hier zeigen wir eine Beispielanwendung von CMA-ME in Pyriben. Um den Algorithmus zu initialisieren, erstellen wir zunächst:
Nach der Initialisierung der Komponenten optimieren wir (pyribs maximiert) die negative 10-D-Kugelfunktion für 1000 Iterationen. Benutzer von Pycma werden mit der Ask-Tell-Schnittstelle vertraut sein (die von Pyribs übernommen wurde). Zunächst muss der Benutzer den Planer nach neuen Kandidatenlösungen ask
. Nach der Bewertung der Lösung tell
sie dem Planer die Ziele und Maßnahmen jeder in Frage kommenden Lösung mit. Der Algorithmus füllt dann das Archiv und trifft Entscheidungen darüber, wo als nächstes Lösungen getestet werden sollen. Unser Spielzeugbeispiel verwendet die ersten beiden Parameter des Suchraums als Maße.
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 )
Um dieses Archiv mit Matplotlib zu visualisieren, verwenden wir dann die Funktion grid_archive_heatmap
von ribs.visualize
.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
Die Dokumentation ist hier online verfügbar. Wir empfehlen neuen Benutzern, mit den Tutorials zu beginnen.
Zwei Jahre nach der ersten Veröffentlichung von pyribs haben wir ein Papier veröffentlicht, das das RIBS-Framework und die Designentscheidungen hinter pyribs näher erläutert. Weitere Informationen zu diesem Papier finden Sie hier. Wenn Sie Pyribs in Ihrer Forschung verwenden, denken Sie bitte darüber nach, dieses Papier wie folgt zu zitieren. Erwägen Sie auch, alle von Ihnen verwendeten Algorithmen wie unten gezeigt zu zitieren.
@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 wird vom ICAROS Lab am USC entwickelt und gepflegt. Informationen zum Mitwirken am Repo finden Sie unter BEITRAGEN.
Wir danken Amy K. Hoover und Julian Togelius für ihre Beiträge zur Ableitung des CMA-ME-Algorithmus.
Zu den pyribs-Benutzern gehören:
Die Liste der Veröffentlichungen, die Pyribs verwenden, finden Sie in unserem Google Scholar-Eintrag.
Sehen Sie sich das GitHub-Abhängigkeitsdiagramm für die öffentlichen GitHub-Repositorys an, die von pyribs abhängen.
Wenn Sie die folgenden Algorithmen verwenden, denken Sie bitte darüber nach, die entsprechenden Veröffentlichungen zu zitieren:
@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 wird unter der MIT-Lizenz veröffentlicht.
Das pyribs-Paket wurde ursprünglich mit Cookiecutter und der Projektvorlage audreyr/cookiecutter-pypackage erstellt.