[WIP] Implementation of low-rank ADVI #2751
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Submission Checklist
stan::variational::normal_lowrank
: implemententropy
,calc_grad
, etc.src/test/unit/variational/families/normal_lowrank.cpp
(e.g. for factor)src/stan/services/experimental/advi/lowrank.hpp
src/test/unit/variational
?./runTests.py src/test/unit
make cpplint
Summary
Address the feature request in issue #2750. Implement the approach described in the original issue. A first pass at the math has already been completed. Although
d
seems to be used directly in the original paper, it might make more sense to reparameterize in terms ofomega = log(d)
(the gradient being equally easy to compute) as in the meanfield implementation.How to Verify
Run new unit tests. Run new model tests.
Documentation
To do.
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company):
Walter Nelson
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses: