不和 | メーリングリスト | ツイッター |
---|---|---|
Google グループ |
Webサイト | ソース | ドキュメント | 紙 |
---|---|---|---|
pyribs.org | GitHub | docs.pyribs.org | pyribs.org/paper |
PyPI | コンダ | CI/CD | ドキュメントのステータス |
---|---|---|---|
品質多様性 (QD) 最適化のための最低限のPython ライブラリ。 Pyribs は、QD 最適化のための高度にモジュール化された動作空間の Rapid Illumination (RIBS)フレームワークを実装します。 Pyribs は、共分散行列適応 MAP-Elites (CMA-ME)、勾配樹木による共分散行列適応 MAP-Elites (CMA-MEGA)、共分散行列適応 MAP-アニーリング (CMA-MAE)、およびスケーラブルなバリアントの公式実装でもあります。 CMA-MAEの。
Pyribs のお知らせメーリング リストに参加して、プロジェクトのステータスや新しいリリースに関する更新情報を不定期 (月に 1 回未満) で入手してください。
助けが必要ですか? pyribs があなたのプロジェクトに適しているかどうかを知りたいですか?バグや機能リクエストではない質問がありますか?
Discordのコミュニティに参加しましょう!
品質ダイバーシティ (QD) 最適化は、生成されたソリューションが測定空間内のすべての点をカバーしながら、同時に 1 つの目的を最大化 (または最小化) する最適化のサブフィールドです。 QD アルゴリズムの MAP-Elites ファミリ内の QD アルゴリズムは、出力としてヒートマップ (アーカイブ) を生成します。各セルには、測定空間内の領域の最もよく発見された代表値が含まれています。
QD の文献では、測定関数の出力は、「動作特性」、「動作記述子」、または「特徴記述子」とも呼ばれています。
近年、多数の QD アルゴリズムが開発されています。これらおよび将来のアルゴリズムを表すために、高度にモジュール化された RIBS フレームワークを開発しました。 RIBS は、QD アルゴリズムを 3 つのコンポーネントに分割します。
これらのコンポーネントを交換することで、ユーザーは多数の 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 からのインストール、ソースからのインストールなど) については、Web サイトのインストール セレクターにアクセスしてください。
インストールをテストするには、pyribs をインポートし、次のコマンドでバージョンを出力します。
python -c " import ribs; print(ribs.__version__) "
出力にバージョン番号が表示されるはずです。
ここでは、pyribs での CMA-ME のアプリケーション例を示します。アルゴリズムを初期化するには、まず以下を作成します。
コンポーネントを初期化した後、負の 10 次元球関数を 1000 回の反復で最適化します (pyribs は最大化します)。 pycma のユーザーは、ask-tell インターフェース (pyribs が採用したもの) に精通しているでしょう。まず、ユーザーはスケジューラに新しい候補ソリューションをask
必要があります。ソリューションを評価した後、各候補ソリューションの目的と手段をスケジューラにtell
。次に、アルゴリズムはアーカイブにデータを入力し、次にソリューションをサンプリングする場所を決定します。私たちのおもちゃの例では、検索空間の最初の 2 つのパラメーターを測定値として使用します。
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 の背後にある設計上の決定について詳しく説明した論文をリリースしました。この論文の詳細については、ここを参照してください。研究で pyrib を使用する場合は、次のようにこの論文を引用することを検討してください。以下に示すように、使用するアルゴリズムを引用することも検討してください。
@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 Lab によって開発および保守されています。リポジトリへの貢献については、「貢献」を参照してください。
CMA-ME アルゴリズムの導出に貢献した Amy K. Hoover と Julian Togelius に感謝します。
pyribs ユーザーには次のものが含まれます。
pyrib を使用する出版物のリストについては、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 プロジェクト テンプレートを使用して作成されました。