From 730b35ee58cd616ea626bde7171144c326d7cfd8 Mon Sep 17 00:00:00 2001 From: Thibaut Horel Date: Sun, 15 Nov 2015 19:17:32 -0500 Subject: Variational inference [WIP] --- simulation/vi.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 simulation/vi.py (limited to 'simulation/vi.py') diff --git a/simulation/vi.py b/simulation/vi.py new file mode 100644 index 0000000..9f2ed40 --- /dev/null +++ b/simulation/vi.py @@ -0,0 +1,29 @@ +import autograd.numpy as np +from autograd import grad + + +def g(m): + return np.log(1 - np.exp(-m)) + + +def h(m): + return -m + + +def ll(cascades, theta): + res = 0 + for x, s in cascades: + for t in range(1, x.shape[1] + 1): + w = np.dot(x[t-1], theta) + res += g(w)[x[t]].sum() + h(w)[~x[t] & s[t]].sum() + + +def sample(params): + return np.random.normal(*params) + + +def ll_full(params, cascades): + nsamples = 50 + return np.mean([ll(cascades, sample(params)) for _ in xrange(nsamples)]) + +grad_ll_full = grad(ll_full) -- cgit v1.2.3-70-g09d2