불화 | 메일링 리스트 | 지저귀다 |
---|---|---|
구글 그룹스 |
웹사이트 | 원천 | 문서 | 종이 |
---|---|---|---|
pyribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
PyPI | 콘다 | CI/CD | 문서 상태 |
---|---|---|---|
품질 다양성(QD) 최적화를 위한 기본 Python 라이브러리입니다. Pyribs는 QD 최적화를 위해 고도로 모듈화된 RIBS(Rapid Illumination of Behavior Space) 프레임워크를 구현합니다. Pyribs는 또한 CMA-ME(공분산 행렬 적응 MAP-Elites), CMA-MEGA(Gradient Arborescent)를 통한 공분산 행렬 적응 MAP-Elites, CMA-MAE(공분산 행렬 적응 MAP-Annealing) 및 확장 가능한 변형의 공식 구현이기도 합니다. CMA-MAE의.
프로젝트 및 새 릴리스 상태에 대한 간헐적인 업데이트(월 1회 미만)를 보려면 Pyribs 공지사항 메일링 리스트에 가입하세요 .
도움이 필요하신가요? pyribs가 귀하의 프로젝트에 적합한지 물어보고 싶으십니까? 버그도 아니고 기능 요청도 아닌 질문이 있으신가요?
커뮤니티 디스코드에 참여하세요!
품질 다양성(QD) 최적화는 생성된 솔루션이 측정 공간의 모든 지점을 포괄하는 동시에 단일 목표를 최대화(또는 최소화)하는 최적화의 하위 필드입니다. MAP-Elites QD 알고리즘 제품군 내의 QD 알고리즘은 히트맵(아카이브)을 출력으로 생성합니다. 여기서 각 셀에는 측정 공간에서 가장 잘 발견된 영역 대표가 포함됩니다.
QD 문헌에서는 측정 함수 출력을 "행동 특성", "행동 설명자" 또는 "기능 설명자"라고도 합니다.
최근 몇 년 동안 수많은 QD 알고리즘이 개발되었습니다. 이러한 알고리즘과 미래의 알고리즘을 표현하기 위해 우리는 고도로 모듈화된 RIBS 프레임워크를 개발했습니다. RIBS는 QD 알고리즘을 세 가지 구성 요소로 나눕니다.
이러한 구성요소를 교환함으로써 사용자는 수많은 QD 알고리즘을 구성할 수 있습니다.
Pyribs는 해당 분야에 입문하는 초보자부터 새로운 알고리즘을 개발하려는 숙련된 연구원까지 광범위한 사용자를 지원하도록 설계된 RIBS 프레임워크의 구현입니다. Pyribs는 세 가지 원칙을 구현하여 이러한 목표를 달성합니다.
다른 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__) "
출력에 버전 번호가 표시되어야 합니다.
여기에서는 pyribs에 CMA-ME를 적용한 예를 보여줍니다. 알고리즘을 초기화하려면 먼저 다음을 생성합니다.
구성 요소를 초기화한 후 1000회 반복에 대해 음의 10차원 구 함수를 최적화(pyribs 최대화)합니다. pycma 사용자는 (pyribs가 채택한) Ask-tell 인터페이스에 익숙할 것입니다. 먼저 사용자는 스케줄러에게 새로운 후보 솔루션을 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로 이 아카이브를 시각화하기 위해 ribs.visualize
의 grid_archive_heatmap
함수를 사용합니다.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
문서는 여기에서 온라인으로 볼 수 있습니다. 새로운 사용자는 튜토리얼부터 시작하는 것이 좋습니다.
pyribs가 처음 출시된 지 2년 후, 우리는 RIBS 프레임워크와 pyribs의 디자인 결정 사항을 자세히 설명하는 논문을 발표했습니다. 이 문서에 대한 자세한 내용은 여기를 참조하세요. 연구에 피립을 사용하는 경우 다음과 같이 이 논문을 인용하는 것을 고려해 보십시오. 또한 아래와 같이 사용하는 알고리즘을 인용하는 것도 고려해 보세요.
@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는 USC의 ICAROS 연구소에서 개발 및 유지 관리됩니다. 저장소에 기여하는 방법에 대한 자세한 내용은 CONTRIBUTING을 참조하세요.
CMA-ME 알고리즘을 도출하는 데 기여한 Amy K. Hoover와 Julian Togelius에게 감사드립니다.
pyribs 사용자는 다음과 같습니다:
pyribs를 사용하는 출판물 목록은 Google Scholar 항목을 참조하세요.
pyribs에 의존하는 공개 GitHub 리포지토리에 대한 GitHub 종속성 그래프를 참조하세요.
다음 알고리즘을 사용하는 경우 관련 논문 인용을 고려해 보세요.
@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 프로젝트 템플릿을 사용하여 생성되었습니다.