Giter VIP home page Giter VIP logo

mistnet2's Introduction

mistnet2

Neural Networks with Latent Random Variables in R

Fit models with both complex nonlinearities (using neural networks) as well as structured outputs (using graphical models).

Travis-CI Build Status codecov.io

mistnet2's People

Contributors

davharris avatar

Stargazers

Eyad Sibai avatar  avatar TJ Mahr avatar  avatar

Watchers

 avatar

mistnet2's Issues

Add a predict function

Basically just sample from z's prior and then feedforward, I think.

Then, once MCMC sampling for z exists (#21), we could condition on partial observations too.

Monte Carlo EM

So the package can fit models like the original mistnet package or fine-tune model estimates that were based on point estimates from BFGS

Add speed tests

To keep this from being machine-dependent, I could say that the total computation for feedforward or for backprop shouldn't take more than x% longer than the underlying matrix multiplication.

This would help ensure that I'm aware of any situations where I'm adding a lot of overhead to the computation.

Improve object/class names

  • priors should probably be weight_priors or something, since priors can go elsewhere
  • error_distributions should probably just be distributions, since they can also refer to priors
  • networks should probably be mistnets, in case I want other kinds of networks (e.g. with other kinds of latent variables)
  • par_skeleton might be better as adjustable_parameters or just parameters, given the way it's used.
  • make_gamlss_distribution should probably just be make_distribution

...

tied Z values

e.g. these repeated observations should have the same Z values in this column

Semantics for sum of log distributions

It would be great to have semantics for adding log distributions to one another (i.e. setting two or more independent objective functions for the same parameters).

How to manage distributions with different structure?

Some families have a sigma or tau term for scale or shape. Others have special terms like bd for binomial denominators. Sometimes, these will be adjustable parameters and will need to be handed to optimx. Other times, they won't be. How to structure this so it always makes sense?

clean up optimx `control` list

Right now, passing a value to REPORT or kkt overwrites maximize and starttests.

Also, REPORT seems to get ignored (or maybe isn't even passed where it needs to go)

net = mistnet_fit(net, itnmax = 7000, 
                  control = list(maximize = TRUE, starttests = FALSE, 
                                 kkt = FALSE, REPORT = 1))

Implement a alternative to dropout that doesn't include sampling

Sampling interferes with second-order batch methods like L-BFGS-B, but dropout is probably important.

Sida Wang and Christoper Manning's "Fast Dropout Training" might be optimal. In the mean time, the variant of an L2 penalty they suggest in between Eqn 9 and Eqn 10 is easy: instead of just having the penalty for weight ij be proportional to its square, multiply that square by c, which is basically the variance of the input variable multiplied by that weight.

Also, batch normalization might solve some of the same problems?

How to structure penalties?

Penalties could arise in a number of different places:

  • Penalties on weights (and maybe even biases)
  • Penalties on the latent variables
  • Penalties on the outputs

How should I structure and manage them all?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.