Comments (6)
Hi Sebastian,
Syne Tune does not support conditional hyperparameters natively yet.
I see several several options:
-
you can write your own
TrialSheduler
(see this example). There you can write your own suggestion function and apply whatever logic you want (you could then useConfigSpace
for instance which supports hierarchical spaces). -
You can override a scheduler and change
_postprocess_config
to set to None some hyperparameters conditioned on the sampled value. -
Add support for those type of sampling in
config_space
as you suggested.
The downside of 1. is that you will have to rewrite your optimizer however, this is something you likely would have to do as our BO does not support such spaces for instance. The upside is that you have all flexibility to add your method.
-
Is a bit in-between, you may be able to reuse some of the schedulers with this approach.
-
Is the cleanest but also an investment to be made to add clean support for conditional space.
Hope this helps, thanks for the issue!
In any case, let us know your thoughts and if you implement one of the approach we would be glad to receive your contribution as an example (easier) or an update to config-space (nice but probably longer and harder).
from syne-tune.
Hello, the reason why Syne Tune does not (yet) support conditional spaces, is because this is hard to support generically with Bayesian optimization.
from syne-tune.
If you only have a small conditional part, I recommend the "union" approach. Just add all parameters, even if the function does not depend on some of them, given values of others. This probably still works better than just doing random search. Your example is a bit incomplete, but you could add a uniform([-1, 1]) and a binary choice, with different names.
from syne-tune.
What I mean:
'depth': uniform(-1, 1),
'depth_active': choice(["true", "false"]),
And if depth_active == "false"
, you just do not use the value of depth
.
from syne-tune.
For random search you get the same as if you encoded some complex conditional sampler for yourself (I'd not do that), and for BO, you may still outperform methods based on random search, even though the GP surrogate model does not model the conditional dependence of 'depth' on 'depth_active'.
from syne-tune.
Of course, if you have a good idea how to support conditional relationships in a BO surrogate model, let us talk! There is some work, but this has no good general solution so far.
from syne-tune.
Related Issues (20)
- RemoteLauncher corrupts requirements.txt when not ending with newline HOT 5
- Troubles with maximising using MORandomScalarizationBayesOpt HOT 4
- Run BOHB/SyncBOHB using lcbench HOT 2
- Open `MultiObjectiveMultiSurrogateSearcher` to additional arguments HOT 2
- Simple example for learning curve plotting HOT 7
- Surprising results of trial values over time HOT 3
- Conditional sampling in configuration space HOT 4
- Using sigterm / catching sigterm to enable checkpointing HOT 10
- Convenience transformation for config spaces HOT 8
- Docs for continuing aborted runs HOT 12
- Hard to find default configurations for schedulers HOT 3
- Difficulties setting rungs / stopping HOT 20
- GP not robust to NaN metric HOT 2
- Direct support for time as a resource? HOT 7
- Acquisition functions in Bayesian optimization HOT 1
- Update Ray dependencies, as dependabot flags them as security vulnerabilities
- Set custom GPU Ids for LocalBackend HOT 2
- [Question] Multiple runs for same parameter values HOT 5
- ModuleNotFoundError: No module named 'sagemaker.interactive_apps' HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from syne-tune.