Perselisihan | milis | |
---|---|---|
Grup Google |
Situs web | Sumber | dokumen | Kertas |
---|---|---|---|
piribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
PyPI | Konda | CI/CD | Status Dokumen |
---|---|---|---|
Pustaka Python sederhana untuk pengoptimalan keragaman kualitas (QD). Pyribs mengimplementasikan kerangka kerja Rapid Illumination of Behavior Space (RIBS) yang sangat modular untuk optimasi QD. Pyribs juga merupakan implementasi resmi dari 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), dan varian yang dapat diskalakan dari CMA-MAE.
Bergabunglah dengan milis Pengumuman Pyribs untuk pembaruan yang jarang terjadi (kurang dari 1/bulan) mengenai status proyek dan rilis baru.
Butuh bantuan? Ingin bertanya apakah pyribs tepat untuk proyek Anda? Punya pertanyaan yang bukan bug dan bukan permintaan fitur?
Bergabunglah dengan komunitas Perselisihan!
Pengoptimalan keragaman kualitas (QD) adalah subbidang pengoptimalan di mana solusi yang dihasilkan mencakup setiap titik dalam ruang pengukuran sekaligus memaksimalkan (atau meminimalkan) satu tujuan . Algoritme QD dalam keluarga algoritma QD MAP-Elite menghasilkan peta panas (arsip) sebagai keluaran di mana setiap sel berisi perwakilan terbaik yang ditemukan dari suatu wilayah dalam ruang pengukuran.
Dalam literatur QD, keluaran fungsi pengukuran juga disebut sebagai "karakteristik perilaku", "deskriptor perilaku", atau "deskriptor fitur".
Beberapa tahun terakhir telah terlihat perkembangan sejumlah besar algoritma QD. Untuk mewakili algoritma ini dan masa depan, kami telah mengembangkan kerangka kerja RIBS yang sangat modular. RIBS membagi algoritma QD menjadi tiga komponen:
Dengan menukarkan komponen-komponen ini, pengguna dapat menyusun sejumlah besar algoritma QD.
Pyribs adalah implementasi kerangka RIBS yang dirancang untuk mendukung berbagai pengguna, mulai dari pemula hingga peneliti berpengalaman yang ingin mengembangkan algoritma baru. Pyribs mencapai tujuan ini dengan mewujudkan tiga prinsip:
Berbeda dengan perpustakaan QD lainnya, pyribs adalah "tulang-tulang". Misalnya, seperti pycma, pyribs hanya berfokus pada pengoptimalan domain kontinu berdimensi tetap. Berfokus pada satu masalah yang umum terjadi ini memungkinkan kami mengoptimalkan perpustakaan untuk kinerja serta kemudahan penggunaan. Lihat daftar pustaka QD tambahan di bawah jika Anda perlu menangani kasus penggunaan tambahan.
Mengikuti kerangka RIBS (ditunjukkan pada gambar di bawah), algoritma standar di pyribs beroperasi sebagai berikut:
ask()
pada penjadwal. Penjadwal meminta solusi dari masing-masing emitor dengan memanggil metode ask()
emitor.tell()
penjadwal. Penjadwal menambahkan solusi ke dalam arsip dan menerima umpan balik. Penjadwal meneruskan umpan balik ini bersama dengan solusi yang dievaluasi ke metode tell()
masing-masing emitor, dan setiap emitor kemudian memperbarui status internalnya. pyribs mendukung Python 3.8 dan yang lebih baru. Sebagian besar pengguna dapat menginstal pyribs dengan menjalankan:
# If you are on Mac, you may need to use quotations, e.g., pip install "ribs[visualize]"
pip install ribs[visualize]
Perintah di atas menyertakan visualize
ekstra. Jika Anda tidak akan menggunakan alat visualisasi pyribs, Anda dapat menginstal versi dasar pyribs dengan:
pip install ribs
Untuk perintah instalasi yang lebih spesifik (misalnya menginstal dari Conda atau menginstal dari sumber), kunjungi pemilih instalasi di situs web kami.
Untuk menguji instalasi Anda, impor pyribs dan cetak versinya dengan perintah ini:
python -c " import ribs; print(ribs.__version__) "
Anda akan melihat nomor versi di output.
Di sini kami menampilkan contoh penerapan CMA-ME di pyribs. Untuk menginisialisasi algoritma, pertama-tama kita buat:
Setelah menginisialisasi komponen, kami mengoptimalkan (pyribs memaksimalkan) fungsi 10-D Sphere negatif untuk 1000 iterasi. Pengguna pycma akan terbiasa dengan antarmuka tanya-tell (yang diadopsi oleh pyribs). Pertama, pengguna harus ask
penjadwal tentang kandidat solusi baru. Setelah mengevaluasi solusi, mereka tell
penjadwal mengenai tujuan dan ukuran masing-masing kandidat solusi. Algoritme kemudian mengisi arsip dan membuat keputusan tentang lokasi pengambilan sampel solusi selanjutnya. Contoh mainan kami menggunakan dua parameter pertama dari ruang pencarian sebagai ukuran.
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 )
Untuk memvisualisasikan arsip ini dengan Matplotlib, kami kemudian menggunakan fungsi grid_archive_heatmap
dari ribs.visualize
.
import matplotlib . pyplot as plt
from ribs . visualize import grid_archive_heatmap
grid_archive_heatmap ( archive )
plt . show ()
Dokumentasi tersedia online di sini. Kami menyarankan agar pengguna baru memulai dengan tutorial.
Dua tahun setelah rilis awal pyribs, kami merilis makalah yang menguraikan kerangka RIBS dan keputusan desain di balik pyribs. Untuk informasi lebih lanjut tentang makalah ini, lihat di sini. Jika Anda menggunakan pirib dalam penelitian Anda, mohon pertimbangkan untuk mengutip makalah ini sebagai berikut. Pertimbangkan juga untuk mengutip algoritme apa pun yang Anda gunakan seperti yang ditunjukkan di bawah ini.
@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 dikembangkan dan dikelola oleh ICAROS Lab di USC. Untuk informasi tentang berkontribusi pada repo, lihat KONTRIBUSI.
Kami berterima kasih kepada Amy K. Hoover dan Julian Togelius atas kontribusi mereka dalam menghasilkan algoritma CMA-ME.
pengguna pyribs meliputi:
Untuk daftar publikasi yang menggunakan pyribs, lihat entri Google Cendekia kami.
Lihat grafik ketergantungan GitHub untuk repositori GitHub publik yang bergantung pada pyribs.
Jika Anda menggunakan algoritme berikut, harap pertimbangkan untuk mengutip makalah mereka yang relevan:
@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 dirilis di bawah Lisensi MIT.
Paket pyribs awalnya dibuat dengan Cookiecutter dan template proyek audreyr/cookiecutter-pypackage.