Skip to content

Add NeuralNetOneKernel #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

Merged
merged 18 commits into from
Apr 30, 2020
Merged

Add NeuralNetOneKernel #70

merged 18 commits into from
Apr 30, 2020

Conversation

sharanry
Copy link
Contributor

Issue #44

Neural network kernel function with a single parameter for the distance measure. The kernel function is parameterized as:

$$k(x,z) = sf2 * asin(x'*P*z / sqrt[(1+x'*P*x)*(1+z'*P*z)])$$

References

@sharanry
Copy link
Contributor Author

I am not sure about the name. The "one" should imply that it is a single parameter kernel function.

@theogf
Copy link
Member

theogf commented Mar 29, 2020

I think the name is extremly confusing... It sounds like it's a deep kernel (neural net transform on the inputs) but it's not. Is it really a necessary kernel?

@sharanry
Copy link
Contributor Author

@theogf http://www.gaussianprocess.org/gpml/chapters/RW4.pdf pg 90 talks about how it came about.

@sharanry
Copy link
Contributor Author

@theogf I found the significance of this kernel in Andrew Gordon's thesis and the GPML book itself.

Accordingly, Neal (1996) pursued the limits of large models, and showed that a Bayesian neural network becomes a Gaussian process with a neural network kernel as the number of units approaches infinity. This observation inspired Williams and Rasmussen (1996) to further explore Gaussian process models.

We get such a kernel by assuming a single hidden layer neural network with infinite units.

@sharanry
Copy link
Contributor Author

@theogf @devmotion Do you suggest any other changes? Or, can this be merged?

@devmotion
Copy link
Member

IMO we should wait for (at least some of) the kernelmatrix changes. This PR seems to add many methods related to kernelmatrix, so I think by postponing it slightly we might be able to make it compatible with the kernelmatrix and kappa refactoring.

@sharanry
Copy link
Contributor Author

@devmotion @theogf @willtebbutt Can this be merged?

Copy link
Member

@willtebbutt willtebbutt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This broadly looks good, and is fine to be merged, but it's won't currently be efficient for kernelmatrix for multi-dimensional inputs. @sharanry if you could open an issue about this for multi-dimensional inputs, that would be very helpful, just so that we don't forget about it.

edit: looks like the tests for the Weiner kernel have appeared in this PR somehow. If you could remove before merging, that would be very helpful.

@willtebbutt willtebbutt merged commit c006d47 into JuliaGaussianProcesses:master Apr 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants