Skip to content
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 SVGD #98

Open
SamDuffield opened this issue Jun 6, 2024 · 2 comments
Open

Add SVGD #98

SamDuffield opened this issue Jun 6, 2024 · 2 comments
Labels
new method New algorithm

Comments

@SamDuffield
Copy link
Contributor

We should definitely add Stein variational gradient descent (paper, code)

SVGD requires a kernel specification. IMO we don't need to supply a suite of kernels ourselves (aside from maybe a default Gaussian kernel).

I think we should enforce a kernel signature like

eval = kernel(params1, params2, aux1, aux2, batch, **kernel_params)

where kernel_params are any kernel hyperparameters such as bandwidth.

To future-proof against more sophisticated kernels that e.g. could use info from the model call via aux1 and aux2.

Also we should think about how to support adaptive kernel_params updates like the median heuristic used in the SVGD [paper](https://proceedings.neurips.cc/paper/2016/file/b3ba8f1bee1238a2f37603d90b58898d-Paper.pdf.

@SamDuffield SamDuffield added the new method New algorithm label Jun 6, 2024
@EtayLivne
Copy link
Contributor

Hi Sam!

I recently got interested in this repo & Normal Computing in general. I wanted to contribute in some way so took a stab at this issue. I'm a bit uncertain about some of the math, so I thought I'd implement the 90% that I think I figured out, and ask about the remaining 10%.

Would you be interested in me opening a pull request with the code that I have? It has a unit test that shows it works in the sense that it adheres to the API, but I haven't tested the logic yet because of the parts I'm unsure of.

@SamDuffield
Copy link
Contributor Author

@EtayLivne yes absolutely open a PR and we can discuss directly in the code. Thanks for taking a stab!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new method New algorithm
Projects
None yet
Development

No branches or pull requests

2 participants