Skip to content

Commit

Permalink
Tutorial links
Browse files Browse the repository at this point in the history
  • Loading branch information
btjanaka committed Dec 17, 2023
1 parent 2a20b36 commit 7a282ef
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions tutorials/scalable_cma_mae.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@
"source": [
"# Scaling CMA-MAE on the Sphere Benchmark\n",
"\n",
"_This tutorial is part of the series of pyribs tutorials! See [here](https://docs.pyribs.org/en/latest/tutorials.html) for the list of all tutorials and the order in which they should be read._\n",
"_This tutorial is part of the series of pyribs tutorials! See [here](https://docs.pyribs.org/en/stable/tutorials.html) for the list of all tutorials and the order in which they should be read._\n",
"\n",
"One challenge in applying CMA-MAE is its quadratic time complexity. Internally, CMA-MAE relies on CMA-ES, which has $\\Theta(n^2)$ time and space complexity due to operations on an $n \\times n$ covariance matrix. Thus, CMA-ES and hence CMA-MAE can be computationally intractable when a problem involves millions or even just thousands of parameters. To address this issue, [Tjanaka 2022](https://scalingcmamae.github.io) proposes to replace CMA-ES with more efficient evolution strategies (ESs), resulting in several variants of CMA-MAE. The CMA-MAE variants proposed in the paper and supported in pyribs are as follows:\n",
"\n",
"- LM-MA-MAE: Replaces CMA-ES with [Limited Memory Matrix Adaptation ES (LM-MA-ES)](https://ieeexplore.ieee.org/document/8410043), which has $\\Theta(kn)$ runtime.\n",
"- sep-CMA-MAE: Replaces CMA-ES with [separable CMA-ES (sep-CMA-ES)](https://inria.hal.science/inria-00270901v1/document), which constrains the covariance matrix to be diagonal and has $\\Theta(n)$ runtime.\n",
"- OpenAI-MAE: Replaces CMA-ES with [OpenAI-ES](https://arxiv.org/abs/1703.03864), which performs search by sampling from an isotropic Gaussian and has $\\Theta(n)$ runtime.\n",
"\n",
"This tutorial shows how these different variants of CMA-MAE can be accessed by changing the `es` parameter in the [`EvolutionStrategyEmitter`](https://docs.pyribs.org/en/latest/api/ribs.emitters.EvolutionStrategyEmitter.html).\n",
"This tutorial shows how these different variants of CMA-MAE can be accessed by changing the `es` parameter in the [`EvolutionStrategyEmitter`](https://docs.pyribs.org/en/stable/api/ribs.emitters.EvolutionStrategyEmitter.html).\n",
"\n",
"_Note: This tutorial is based on the [CMA-MAE tutorial](https://docs.pyribs.org/en/latest/tutorials/cma_mae.html). As such, we skim over details like how to set up the archives. For more details on these steps, please refer to that tutorial._"
"_Note: This tutorial is based on the [CMA-MAE tutorial](https://docs.pyribs.org/en/stable/tutorials/cma_mae.html). As such, we skim over details like how to set up the archives. For more details on these steps, please refer to that tutorial._"
]
},
{
Expand Down Expand Up @@ -154,7 +154,7 @@
"source": [
"## Emitter Setup with the `es` Parameter\n",
"\n",
"Exactly like in the regular CMA-MAE, scalable variants of CMA-MAE are built with the [`EvolutionStrategyEmitter`](https://docs.pyribs.org/en/latest/api/ribs.emitters.EvolutionStrategyEmitter.html). The key difference is the choice of ES, which is indicated with the `es` parameter. `es` has the following options:\n",
"Exactly like in the regular CMA-MAE, scalable variants of CMA-MAE are built with the [`EvolutionStrategyEmitter`](https://docs.pyribs.org/en/stable/api/ribs.emitters.EvolutionStrategyEmitter.html). The key difference is the choice of ES, which is indicated with the `es` parameter. `es` has the following options:\n",
"\n",
"- `lm_ma_es`: Indicates LM-MA-ES\n",
"- `sep_cma_es`: Indicates sep-CMA-ES\n",
Expand Down Expand Up @@ -193,7 +193,7 @@
"id": "9df5e6fc-1840-4365-8f71-9b22f54731b0",
"metadata": {},
"source": [
"It is also possible to pass in `es` as a class, as the string options to `es` are simply translated to a corresponding ES class (the documentation for all ES classes is [here](https://docs.pyribs.org/en/latest/api/ribs.emitters.opt.html)). All ES classes are subclasses of [`EvolutionStrategyBase`](https://docs.pyribs.org/en/latest/api/ribs.emitters.opt.EvolutionStrategyBase.html)."
"It is also possible to pass in `es` as a class, as the string options to `es` are simply translated to a corresponding ES class (the documentation for all ES classes is [here](https://docs.pyribs.org/en/stable/api/ribs.emitters.opt.html)). All ES classes are subclasses of [`EvolutionStrategyBase`](https://docs.pyribs.org/en/stable/api/ribs.emitters.opt.EvolutionStrategyBase.html)."
]
},
{
Expand Down Expand Up @@ -224,7 +224,7 @@
"id": "80c2f899-2d38-468b-a42d-c3a162855a67",
"metadata": {},
"source": [
"Some ESs also accept kwargs. For instance, in [LMMAEvolutionStrategy](https://docs.pyribs.org/en/latest/api/ribs.emitters.opt.LMMAEvolutionStrategy.html), the size of the approximation can be adjusted with the `n_vectors` parameter. kwargs can be passed to the ESs with the `es_kwargs` parameter in `EvolutionStrategyEmitter`, as shown below."
"Some ESs also accept kwargs. For instance, in [LMMAEvolutionStrategy](https://docs.pyribs.org/en/stable/api/ribs.emitters.opt.LMMAEvolutionStrategy.html), the size of the approximation can be adjusted with the `n_vectors` parameter. kwargs can be passed to the ESs with the `es_kwargs` parameter in `EvolutionStrategyEmitter`, as shown below."
]
},
{
Expand Down Expand Up @@ -269,7 +269,7 @@
"id": "cb8ef8be-945e-475e-a7c0-7ea2c0039e51",
"metadata": {},
"source": [
"Finally, [`GradientArborescenceEmitter`](https://docs.pyribs.org/en/latest/api/ribs.emitters.GradientArborescenceEmitter.html) also has as `es` parameter. However, it is less common to use a scalable ES in `GradientArborescenceEmitter` since the ES only operates in objective-measure coefficient space, and that space usually has only a few dimensions."
"Finally, [`GradientArborescenceEmitter`](https://docs.pyribs.org/en/stable/api/ribs.emitters.GradientArborescenceEmitter.html) also has as `es` parameter. However, it is less common to use a scalable ES in `GradientArborescenceEmitter` since the ES only operates in objective-measure coefficient space, and that space usually has only a few dimensions."
]
},
{
Expand Down

0 comments on commit 7a282ef

Please sign in to comment.