ความไม่ลงรอยกัน | รายชื่อผู้รับจดหมาย | ทวิตเตอร์ |
---|---|---|
Google Groups |
เว็บไซต์ | แหล่งที่มา | เอกสาร | กระดาษ |
---|---|---|---|
pyribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
พีพีไอ | คอนดา | ซีไอ/ซีดี | สถานะเอกสาร |
---|---|---|---|
ไลบรารี Python แบบเปลือย สำหรับการเพิ่มประสิทธิภาพความหลากหลายด้านคุณภาพ (QD) Pyribs ใช้เฟรมเวิร์ก Rapid Illumination of Behavior Space (RIBS) แบบโมดูลาร์สูงสำหรับการเพิ่มประสิทธิภาพ QD นอกจากนี้ Pyribs ยังเป็นการใช้งานอย่างเป็นทางการของ Covariance Matrix Adaptation MAP-Elites (CMA-ME), Covariance Matrix Adaptation MAP-Elites ผ่านการไล่ระดับสี Arborescence (CMA-MEGA), Covariance Matrix Adaptation MAP-Annealing (CMA-MAE) และตัวแปรที่ปรับขนาดได้ ของซีเอ็มเอ-แม่
เข้าร่วมรายชื่ออีเมลประกาศของ Pyribs เพื่อรับการอัปเดตไม่บ่อยนัก (น้อยกว่า 1 ครั้งต่อเดือน) เกี่ยวกับสถานะของโปรเจ็กต์และข่าวออกใหม่
ต้องการความช่วยเหลือบ้างไหม? ต้องการถามว่า pyribs เหมาะกับโครงการของคุณหรือไม่? มีคำถามที่ไม่ใช่ข้อบกพร่องและคำขอคุณสมบัติไม่มากนักใช่หรือไม่
เข้าร่วม Discord ของชุมชน!
การเพิ่มประสิทธิภาพความหลากหลายด้านคุณภาพ (QD) เป็นสาขาย่อยของการเพิ่มประสิทธิภาพ โดยที่โซลูชันที่สร้างขึ้นครอบคลุมทุกจุดในพื้นที่ การวัด ในขณะเดียวกันก็เพิ่ม (หรือลด) วัตถุประสงค์ เดียวให้สูงสุดไปพร้อมๆ กัน อัลกอริธึม QD ภายในกลุ่มอัลกอริธึม QD ตระกูล MAP-Elites จะสร้างแผนที่ความร้อน (เอกสารสำคัญ) เป็นเอาต์พุต โดยที่แต่ละเซลล์มีตัวแทนที่ค้นพบที่ดีที่สุดของขอบเขตในพื้นที่การวัด
ในเอกสาร QD ผลลัพธ์ของฟังก์ชันการวัดยังถูกเรียกว่า "ลักษณะพฤติกรรม" "ตัวอธิบายพฤติกรรม" หรือ "ตัวอธิบายคุณลักษณะ"
ในช่วงไม่กี่ปีมานี้ เราได้เห็นการพัฒนาอัลกอริธึม QD จำนวนมาก เพื่อเป็นตัวแทนของอัลกอริธึมเหล่านี้และในอนาคต เราได้พัฒนาเฟรมเวิร์ก RIBS แบบโมดูลาร์สูง RIBS แบ่งอัลกอริทึม QD ออกเป็นสามส่วน:
ด้วยการแลกเปลี่ยนส่วนประกอบเหล่านี้ ผู้ใช้สามารถเขียนอัลกอริธึม QD จำนวนมากได้
Pyribs คือการนำเฟรมเวิร์ก RIBS ไปใช้ที่ออกแบบมาเพื่อรองรับผู้ใช้ที่หลากหลาย ตั้งแต่ผู้เริ่มต้นที่เข้าสู่วงการไปจนถึงนักวิจัยที่มีประสบการณ์ที่ต้องการพัฒนาอัลกอริธึมใหม่ Pyribs บรรลุเป้าหมายเหล่านี้โดยรวบรวมหลักการ 3 ประการ:
ตรงกันข้ามกับไลบรารี 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 ในการเริ่มต้นอัลกอริธึม ขั้นแรกเราสร้าง:
หลังจากเตรียมใช้งานส่วนประกอบต่างๆ เราจะปรับให้เหมาะสม (pyribs ขยายใหญ่สุด) ฟังก์ชัน 10-D Sphere เชิงลบสำหรับการวนซ้ำ 1,000 ครั้ง ผู้ใช้ pycma จะคุ้นเคยกับอินเทอร์เฟซแบบถาม-บอก (ซึ่ง pyrib นำมาใช้) ขั้นแรก ผู้ใช้จะต้อง 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 ()
เอกสารมีให้ออนไลน์ที่นี่ เราขอแนะนำให้ผู้ใช้ใหม่เริ่มต้นด้วยบทช่วยสอน
สองปีหลังจากการเปิดตัว pyribs ครั้งแรก เราได้เผยแพร่รายงานที่อธิบายรายละเอียดเกี่ยวกับกรอบงาน 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 ได้รับการพัฒนาและดูแลรักษาโดย ICAROS Lab ที่ USC สำหรับข้อมูลเกี่ยวกับการมีส่วนร่วมใน repo โปรดดูที่การมีส่วนสนับสนุน
เราขอขอบคุณ Amy K. Hoover และ Julian Togelius สำหรับการสนับสนุนอัลกอริทึม CMA-ME
ผู้ใช้ pyribs รวมถึง:
สำหรับรายชื่อสิ่งพิมพ์ที่ใช้ pyribs โปรดดูรายการ Google Scholar ของเรา
ดูกราฟการพึ่งพา GitHub สำหรับที่เก็บ GitHub สาธารณะซึ่งขึ้นอยู่กับ pyrib
หากคุณใช้อัลกอริทึมต่อไปนี้ โปรดพิจารณาอ้างอิงเอกสารที่เกี่ยวข้อง:
@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