Skip to content

Conversation

@ordabayevy
Copy link
Member

@ordabayevy ordabayevy commented May 5, 2022

(Separating this from #593 PR)

This proposes the following logic for the Delta Integrate pattern:

  • If reduced_var is in integrand.inputs then apply substitution to delta and integrand:
delta = Delta("x",  point, log_density)
integrand = Variable("x")
Integrate(delta, integrand, reduced_vars="x")
  => delta(x=point).exp() * integrand(x=point)
  => log_density.exp() * point

where log_density can be a Dice factor or an importance weight in general.

  • If reduced_var is not in integrand.inputs then just reduce delta:
delta = Delta("x",  point, log_density)
integrand = Number(3.0)
Integrate(delta, integrand, reduced_vars="x")
  => delta.reduce(logaddexp, "x").exp() * integrand
  => 1 * 3.0
  => 3.0

where delta is normalized.

@ordabayevy ordabayevy marked this pull request as draft June 2, 2022 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants