(Differentiable) Particle Filter
(Differentiable) particle filter inference for continuous-discrete nonlinear Gaussian SSMs.
inference_dpf
¶
DPFHyperParams
¶
Bases: NamedTuple
Lightweight container for DPF hyperparameters.
diff_particle_filter(key, params: ParamsCDNLSSM, ys: Array, us: Array | None = None, ts: Array | None = None, hyperparams: DPFHyperParams = DPFHyperParams()) -> Union[Tuple[Array, Array, Array, float], Tuple[Array, Array, Array, Array, float]]
¶
Differentiable particle filter with configurable resampling.
A differentiable particle filter (DPF) is a particle filter with the (discrete, non-differentiable) resampling step replaced in some way to allow for gradient-based optimization. This implementation supports three different resampling methods: - Multinomial resampling (biased) - Soft resampling [1] (biased; interpolates between multinomial and uniform resampling) - Stop-gradient resampling [2] (unbiased for score estimates)
Currently, only bootstrap proposals are supported.
References
[1] Karkus P, Hsu D, Lee WS (2018). “Particle filter networks with application to visual localization.” In Proc. Conf. Robot Learn., pp. 169–178. PMLR, Zurich, CH. [2] Scibior A, Wood F (2021). “Differentiable particle filtering without modifying the forward pass.” arXiv:2106.10314
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
Random key. |
required | |
params
|
ParamsCDNLSSM
|
Parameters of the CDNLSSM. |
required |
ys
|
Array
|
Emissions. |
required |
us
|
Array | None
|
Inputs. |
None
|
ts
|
Array | None
|
Times. |
None
|
hyperparams
|
DPFHyperParams
|
Hyperparameters of the filter. |
DPFHyperParams()
|
Returns:
| Name | Type | Description |
|---|---|---|
particles |
Union[Tuple[Array, Array, Array, float], Tuple[Array, Array, Array, Array, float]]
|
Particles. |
log_weights |
Union[Tuple[Array, Array, Array, float], Tuple[Array, Array, Array, Array, float]]
|
Log weights. |
ess_history |
Union[Tuple[Array, Array, Array, float], Tuple[Array, Array, Array, Array, float]]
|
(if return_ess_history is True) Effective sample size history. |
log_evidence |
Union[Tuple[Array, Array, Array, float], Tuple[Array, Array, Array, Array, float]]
|
Log evidence. |