-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE REQUEST] Adjustments to use negative objectives (cost)? #283
Comments
Hi @LemonPi, this is a great idea. I'm actually not sure how to handle negative objectives when one does not know the limits; this is something we (the pyribs maintainers) have not had to deal with. Figuring this out would require some experimentation and may be a small paper in itself. Unfortunately, I don't think we have bandwidth to handle this issue right now, but we'll keep it as a TODO, and we're open to PRs if you come up with anything. Also, note that |
I will note that we recently merged a PR (#297) that adds a
|
I see, thanks will check that out! It's theoretically unbounded, but I think empirically I can set a bound. In this case unexplored bins will receive the score offset instead of 0 right? (This way the unnormalized QD score should be monotonically increasing as long as I don't encounter any solutions with a score below the offset). |
Unexplored cells are simply not counted in the score. The normal QD score looks like:
where
So cells without an elite are still not counted at all. |
And yes, the result is still that the QD score will be monotonically increasing as long as you don't encounter any solutions with a score below the offset. |
Hard to say, but here's a couple of things to consider:
|
Without more information about the domain its hard to tell if the issue is setup for the DQD algorithm or a domain where derivative-free QD works better than DQD. Keep in mind there are domains where an optimizer like CMA-ES outperforms gradient descent, even for convex objectives. Some things to keep in mind:
We're still working on making DQD algorithms more robust. The approach is relatively new so it's valuable to know problems where the current algorithms struggle. Did you want to chat offline about your setup? We may be able to help you tune DQD algorithms to get good results or catch a bug in your current setup. |
I do still gain some benefits from CMA-MEGA over CMA-ME on the metrics I care about, just not dramatically so. The QD score is still weirdly worse for CMA-MEGA but for my application I don't necessarily care about illuminating the entire space, just enough to find a set of good solutions. (and the "mu" selection rule that was in some example emitter code turned out to be quite a bit worse than "filter" for my problem since the solutions we're initializing the archive with are known to be pretty good). I recently submitted my work to a double blind review conference so I'm not sure how much I can talk about it during the review process - but definitely after it would be good to have a chat! |
Description
It would be nice to have an example where it's a minimization (of a cost) problem instead of the usual maximization (of a reward). The most straight forward approach is to use the negative cost as the objective, but that poses an issue with the usual QD score metric where 0 is given to unexplored cells. Presumably the normalized QD score should address this here:
but I had to look into the code to confirm whether it would make sense with negative objectives or not, and there may be other cases that implicitly depend on a non-negative objective. Even then, the metric would start with 0, jump to a high negative, and slowly get closer to 0 from the negatives. This is less compelling than a monotonically increasing metric.
The examples seem to use
best - worst
performance, which would work if the worst possible performance was known ahead of time and was bounded. But this is not the case in my problem. Switching it tobest - worst as of now
would not be valuable since it could be inflated by just finding a terrible solution.You could also use
1/cost
as the objective, but this would stretch the optimizing landscape and would lead to very different behavior.It would be nice to have a tutorial or example with best practices for minimization problems, and things to watch out for.
The text was updated successfully, but these errors were encountered: