pypomp.PanelPomp.train

PanelPomp.train(J: int, M: int, eta: LearningRate, chunk_size: int = 1, optimizer: Optimizer = Adam(clip_norm=None, scale=False, ls=False, c=0.1, max_ls_itn=10, beta1=0.9, beta2=0.999, epsilon=1e-08), alpha: float = 0.97, key: Array | None = None, theta: PanelParameters | None = None, alpha_cooling: float = 1.0)

Estimate parameters using MOP-based gradient-descent optimization.

Performs Maximum Likelihood Estimation using the Measurement Off-Parameter (MOP) particle filter (Tan et al. 2024 [1]), treating the particle filter as a differentiable computation graph and applies gradient-based optimizers (e.g. Adam, SGD, Newton) via JAX reverse-mode automatic differentiation.

Warning

MOP gradients are only well-defined for continuous-state models. For discrete-state models, use mif() or dpop_train() instead.

JAX vectorises the computation across all starting parameter sets in theta simultaneously. Results are appended to results_history.

Parameters:
  • J (int) – Number of particles per unit.

  • M (int) – Number of training iterations (gradient steps).

  • eta (LearningRate) – Learning rates per parameter.

  • chunk_size (int, optional) – Number of units to process in parallel per gradient step. Defaults to 1.

  • optimizer (Optimizer, optional) – Optimizer configuration object. Defaults to Adam().

  • alpha (float, optional) – MOP discount factor. Defaults to 0.97.

  • key (jax.Array or None, optional) – JAX random key. If None, uses the model’s fresh_key.

  • theta (PanelParameters or None, optional) – Initial parameter estimates. If None, defaults to self.theta.

  • alpha_cooling (float, optional) – Cooling factor for the MOP discount factor alpha using cosine decay. Defaults to 1.0.

Returns:

Updates self.theta with final estimates and appends a Result to the history.

Return type:

None

References