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

TODOs #18

Open
9 of 19 tasks
mmider opened this issue Jul 19, 2019 · 3 comments
Open
9 of 19 tasks

TODOs #18

mmider opened this issue Jul 19, 2019 · 3 comments

Comments

@mmider
Copy link
Owner

mmider commented Jul 19, 2019

  • Allow for re-sampling of the starting point
  • Make conjugate updates work with the FPT setting
  • Allow for different memory parameters rho of the preconditioned Crank-Nicolson scheme in each block (when sampling under blocking scheme)
  • Implement adaptive Metropolis-Hastings proposals updating parameter theta that target acceptance rate 0.234.
  • If point above implemented, then should also adapt memory parameter for the imputation step
  • Parallelise the for loops iterating over block updates
  • Write a battery of unit tests
  • Remove dependence on creating separate containers P, XX, WW etc. for blocking object and use general ones instead. This needs some care to prevent losing performance.
  • Collect objects P, XX, WW etc. that are passed around and group them together intelligently to reduce the number of arguments passed to functions.
  • Collect solve!() and log-likelihood evaluation into a single call
  • Implement automatic differentiation with respect to parameters and a starting point
  • Implement MALA for parameter updates and starting point update
  • Adaptive choice of auxiliary law is 2-3x slower than it needs to be. The mean path is re-computed over and over again using Interpolations.jl, but it could be done only once, by revealing it at a time-grid needed by the ODE solvers and then retrieving the values via indexed time (t,i) (for that, indexed time instead of time would have needed to be passed to functions evaluating auxiliary drift). Fix that.
  • Abstract away the definitions of diffusions/stochastic processes, clean up current definitions
  • Clean up the guid_prop_bridge.jl and adjust the solver appropriately (mainly by gathering together the objects that are passed around)
  • Cut some branches
  • Think about integration with DifferentialEquations.jl and maybe modularising the package a little (considering the mcmc-related functions can be gathered together without having to relate to diffusions at all)

Edit by @mschauer:

  • Register
  • Add some keywords to the repository
@mmider
Copy link
Owner Author

mmider commented Jul 19, 2019

I will start with the updates of the starting point

@mmider
Copy link
Owner Author

mmider commented Jul 19, 2019

Re-sampling of the starting point is done. Now, I will try to take on parallelisation of for loops. I just had a quick glance through the documentation of the Julia's multi-threading modules. There are way too many experimental qualifiers for my liking and considering that for partially observed setting it is only possible to parallelise the imputation step via blocking and the parameter update step is unchanged, best case scenario we can cut down computational time in half. Consequently, I am downgrading the importance of parallelisation and instead I will now take care of making conjugate updates work with the FPT setting.

Edit: I realised that parameter update step can be changed so that it is parallelisable for blocking, which means that in theory parallelisation of for loops can bring down the run time of the algorithm at a rate proportional to the number of threads. In that case it is worth pursuing even in spite of experimental qualifiers.

@mmider
Copy link
Owner Author

mmider commented Aug 3, 2019

I read through Frank's implementation of the MALA step in the Bridge.jl repository for adjusting the starting point. It's very nice, I am a big fan of this idea. I will try my best to replicate this for parameter updates.

@mmider mmider pinned this issue Aug 3, 2019
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

No branches or pull requests

1 participant