-
-
Notifications
You must be signed in to change notification settings - Fork 70
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
Add Hyperparam Optimization for GEKPLS Theta #366
Comments
I have a quick question about which optimizer package to choose for hyperparameter optimization for theta: What is needed is a relatively light-weight (i.e. very few package dependencies) and stable (i.e. will not suddenly break) tool to simply find the theta values that minimizes our reduced_likelihood_function_value. Some things to note about our specific requirements are:
Hence, would it be okay to write our own super-simple optimizer which simply permutes (i.e. tries out various combinations) between various theta value combinations until the highest Or would it be better to go with an existing, ready-made package? If this is the case, are there any recommended packages to first try? |
To get to here, can the GEKPLS be made differentiable? If so, differentiable hyperparmeter optimization will be much faster than having it non-differentiable, and that would completely change the algorithms one would use. |
I will research this option. |
The outputs of the reduced_likelihood_function_value - both, in the Julia version of GEKPLS and in the SMT code from which GEKPLS.jl is adapted - does not appear to have any clear correlation with the root mean squared error. For example, in the SMT code, we see the following outputs:
The gist of the code that produced these results is available here. This means that weaving in hyperparameter optimization into the GEKPLS code will result in sub-optimal performance often. Other disadvantages of including hyperparameter optimization into GEKPLS are:
Hence, it may be better to allow users to supply theta as a hyperparameter when they construct the GEKPLS model and users can choose to optimize hyperparams on their own outside of the system. |
Agreed.
That's part of the issue. COBYLA is a derivative-free optimizer, and so it will generally have a bit of trouble accurately converging beyond a certain accuracy. Derivative-based methods are a lot more stable in how they converge, so I wouldn't be surprised if that improved the hyperparameter optimization here. I still think users should have the option to provide the hyperparameter, and then we should just have a hyperparameter optimization mode if it's not provided or something. BTW, this issue seems very parallel to #368, just on GEKPLS instead of Kriging. |
Closing this issue as a decision and a minor fix to facilitate that direction has been made. |
At present, in GEKPLS , initial theta is supplied as a real number by the user. This theta value is repeated in an array for the number of components which is also supplied by the user. For example, if the number of components is 2 and the initial theta value is 0.01, then an array is constructed like so: [0.01, 0.01].
The theta values need to be optimized (similar to what is done in the Python version) using an appropriate optimizer with the objective being to maximize the reduced_likelihood_function_value.
The text was updated successfully, but these errors were encountered: