diff --git a/tutorials/scalable_cma_mae.ipynb b/tutorials/scalable_cma_mae.ipynb index 5c55e5475..14757558b 100644 --- a/tutorials/scalable_cma_mae.ipynb +++ b/tutorials/scalable_cma_mae.ipynb @@ -9,7 +9,7 @@ "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", @@ -17,9 +17,9 @@ "- 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._" ] }, { @@ -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", @@ -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)." ] }, { @@ -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." ] }, { @@ -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." ] }, {