https://github.com/blackhc/pbt
Jupyter notebooks to play around with population based training, as described in https://arxiv.org/abs/1711.09846
https://github.com/blackhc/pbt
jupyter-notebook population-based-training visulization
Last synced: 3 months ago
JSON representation
Jupyter notebooks to play around with population based training, as described in https://arxiv.org/abs/1711.09846
- Host: GitHub
- URL: https://github.com/blackhc/pbt
- Owner: BlackHC
- License: gpl-3.0
- Created: 2018-01-31T14:16:03.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-31T15:23:18.000Z (over 8 years ago)
- Last Synced: 2025-04-28T15:50:16.160Z (about 1 year ago)
- Topics: jupyter-notebook, population-based-training, visulization
- Language: Jupyter Notebook
- Homepage:
- Size: 43 KB
- Stars: 7
- Watchers: 5
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Population-based training
Based on the DeepMind paper: https://arxiv.org/abs/1711.09846
Blog post: https://deepmind.com/blog/population-based-training-neural-networks/
# Contribution
Look at two different ways to implement PBT as a reusable algorithm.
The second version that implements it as a pure advisor function seems to be
the more flexible one.
The first iteration contains code to recreate Figure 2 from the paper.
I had to change the initial hyperparameters a bit to break symmetries and I had
to modify the proxy function to not allow negative hyperparameters (otherwise,
it runs off into infinity if it perturbs the hyperparameters to be negative by
accident).
# Critique of the paper
General feel after playing around with the idea is that it describes a nice
heuristic. However, you are also replacing a set of more tangible hyperparameters
by meta-hyperparameters that control this heuristic:
* how to determine whether a worker is ready;
* how to perturb hyperparameters during exploration; and,
* how to determine whether a worker is underperforming or not.
Moreover, one could use different strategies during exploitation, like selecting
one of the top5 workers instead of the top1 worker during exploration, all the
way to simulated annealing.
The main contribution of PBT (as mentioned on reddit) seems to be that
exploration means copying of the weights and continuing training from then on.
This saves time but this also means that it will be even harder to ensure
reproducibility. Now, one also almost has to save a history of the exploration
steps to be able to explain how to get to a certain result.