Раздор | Список рассылки | Твиттер |
---|---|---|
Группы Google |
Веб-сайт | Источник | Документы | Бумага |
---|---|---|---|
Pyribs.org | GitHub | docs.pyribs.org | Pyribs.org/paper |
ПиПИ | Конда | CI/CD | Статус документов |
---|---|---|---|
Простая библиотека Python для оптимизации качественного разнообразия (QD). Pyribs реализует модульную структуру Rapid Illumination of Behavior Space (RIBS) для оптимизации QD. Pyribs также является официальной реализацией MAP-элит адаптации ковариационной матрицы (CMA-ME), MAP-элиты адаптации ковариационной матрицы посредством градиентного древовидения (CMA-MEGA), MAP-отжига адаптации ковариационной матрицы (CMA-MAE) и масштабируемых вариантов. СМА-МАЭ.
Присоединяйтесь к списку рассылки Pyribs Announcements, чтобы получать нечастые обновления (менее 1 раза в месяц) о состоянии проекта и новых выпусках.
Нужна помощь? Хотите спросить, подходит ли пирибс для вашего проекта? У вас есть вопрос, который не является ошибкой и не совсем запросом функции?
Присоединяйтесь к сообществу Discord!
Оптимизация качественного разнообразия (QD) — это подобласть оптимизации, в которой сгенерированные решения охватывают каждую точку в пространстве измерений , одновременно максимизируя (или минимизируя) одну цель . Алгоритмы QD в семействе алгоритмов QD MAP-Elites создают на выходе тепловые карты (архивы), где каждая ячейка содержит наиболее обнаруженного представителя области в пространстве мер.
В литературе по QD выходные данные функции измерения также называются «поведенческими характеристиками», «дескрипторами поведения» или «дескрипторами функций».
В последние годы было разработано большое количество алгоритмов QD. Для представления этих и будущих алгоритмов мы разработали высокомодульную структуру RIBS. RIBS делит алгоритм QD на три компонента:
Меняя местами эти компоненты, пользователь может составить большое количество алгоритмов КТ.
Pyribs — это реализация платформы RIBS, предназначенная для поддержки широкого круга пользователей: от новичков, начинающих эту область, до опытных исследователей, стремящихся разрабатывать новые алгоритмы. Пирибс достигает этих целей, воплощая три принципа:
В отличие от других библиотек QD, Pyribs представляет собой «голый скелет». Например, как и pycma, Pyribs фокусируется исключительно на оптимизации непрерывных доменов фиксированных размеров. Сосредоточение внимания на этой часто встречающейся проблеме позволяет нам оптимизировать библиотеку для повышения производительности и простоты использования. Если вам нужно обработать дополнительные варианты использования, обратитесь к списку дополнительных библиотек QD ниже.
Следуя структуре RIBS (показанной на рисунке ниже), стандартный алгоритм в Pyribs работает следующим образом:
ask()
в планировщике. Планировщик запрашивает решения у каждого отправителя, вызывая метод ask()
отправителя.tell()
планировщика. Планировщик добавляет решения в архив и получает обратную связь. Планировщик передает эту обратную связь вместе с оцененными решениями в метод tell()
каждого эмиттера, а затем каждый эмиттер обновляет свое внутреннее состояние. Pyribs поддерживает Python 3.8 и выше. Подавляющее большинство пользователей могут установить Pyribs, запустив:
# If you are on Mac, you may need to use quotations, e.g., pip install "ribs[visualize]"
pip install ribs[visualize]
Приведенная выше команда включает в себя дополнительную visualize
. Если вы не будете использовать инструменты визуализации Pyribs, вы можете установить базовую версию Pyribs с помощью:
pip install ribs
Для получения более конкретных команд установки (например, установки из Conda или установки из исходного кода) посетите селектор установки на нашем веб-сайте.
Чтобы протестировать установку, импортируйте Pyribs и распечатайте версию с помощью этой команды:
python -c " import ribs; print(ribs.__version__) "
В выводе вы должны увидеть номер версии.
Здесь мы показываем пример применения CMA-ME в пирибах. Чтобы инициализировать алгоритм, мы сначала создаем:
После инициализации компонентов мы оптимизируем (pyribs максимизирует) отрицательную функцию 10-D Sphere для 1000 итераций. Пользователи pycma знакомы с интерфейсом «спроси-скажи» (который принят в Pyribs). Во-первых, пользователь должен ask
у планировщика новые возможные решения. После оценки решения они tell
планировщику цели и меры каждого возможного решения. Затем алгоритм заполняет архив и принимает решение о том, где в следующий раз брать образцы решений. В нашем игрушечном примере в качестве мер используются первые два параметра пространства поиска.
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 )
Чтобы визуализировать этот архив с помощью Matplotlib, мы затем используем grid_archive_heatmap
из ribs.visualize
.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
Документация доступна онлайн здесь. Мы предлагаем новым пользователям начать с учебных пособий.
Через два года после первого выпуска пирибов мы выпустили документ, в котором подробно описывается структура RIBS и проектные решения, лежащие в основе пирибов. Дополнительную информацию об этой статье см. здесь. Если вы используете пирибы в своих исследованиях, пожалуйста, рассмотрите возможность цитирования этой статьи следующим образом. Также рассмотрите возможность указать любые используемые вами алгоритмы, как показано ниже.
@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 разрабатывается и поддерживается лабораторией ICAROS в Университете Южной Калифорнии. Информацию о внесении вклада в репо см. в разделе ВКЛАД.
Мы благодарим Эми К. Гувер и Джулиана Тогелиуса за их вклад в создание алгоритма CMA-ME.
Среди пользователей пирибса:
Список публикаций, в которых используются пирибы, можно найти в нашей записи в Академии Google.
См. график зависимостей GitHub для общедоступных репозиториев GitHub, которые зависят от Pyribs.
Если вы используете следующие алгоритмы, пожалуйста, рассмотрите возможность цитирования соответствующих статей:
@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 выпускается под лицензией MIT.
Пакет Pyribs изначально был создан с помощью Cookiecutter и шаблона проекта audreyr/cookiecutter-pypackage.