Skip to content

Commit

Permalink
Update refs
Browse files Browse the repository at this point in the history
  • Loading branch information
gdalle committed Apr 5, 2024
1 parent 9c8d312 commit e433cc6
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ In this industrial use case, the observations were marked temporal point process

Unfortunately, nearly all implementations of HMMs we surveyed (in Julia and Python) expect the observations to be generated by a _predefined set of distributions_, with _no temporal heterogeneity_.
In Julia, the previous reference package `HMMBase.jl` [@mouchetHMMBaseJlHidden2023] requires compliance with the `Distributions.jl` [@besanconDistributionsJlDefinition2021] interface, which precludes anything not scalar- or array-valued, let alone point processes.
In Python, the `numpy`-based `hmmlearn` [@hmmlearndevelopersHmmlearnHiddenMarkov2023] and the `PyTorch`-based `pomegranate` [@schreiberPomegranateFastFlexible2018] each offer a catalogue of discrete and continuous distributions, but do not allow for easy extension by the user.
The more recent `JAX`-based `dynamax` [@changDynamaxStateSpace2024] is the only package adopting an extensible interface with optional controls, similar to ours.
In Python, the `numpy`-based `hmmlearn` [@hmmlearndevelopersHmmlearnHiddenMarkov2023] and the `PyTorch`-based `pomegranate` [@schreiberPomegranateFastFlexible2018,@schreiberJmschreiPomegranate2024] each offer a catalogue of discrete and continuous distributions, but do not allow for easy extension by the user.
The more recent `JAX`-based `dynamax` [@changDynamaxStateSpace2024,@murphyProbabilisticMachineLearning2023,@sarkkaBayesianFilteringSmoothing2023] is the only package adopting an extensible interface with optional controls, similar to ours.

Focusing on Julia specifically, other downsides of `HMMBase.jl` include the lack of support for _multiple observation sequences_, _automatic differentiation_, _sparse transition matrices_ or _number types beyond 64-bit floating point_.
Two other Julia packages each provide a subset of functionalities that `HMMBase.jl` lacks, namely `HMMGradients.jl` [@antonelloHMMGradientsJlEnables2021] and `MarkovModels.jl` [@ondelGPUAcceleratedForwardBackwardAlgorithm2022], but they are less developed and ill-suited to uninformed users.
Expand All @@ -60,7 +60,7 @@ Two other Julia packages each provide a subset of functionalities that `HMMBase.

Our package is _generic_.
Observations can be arbitrary objects, and the associated distributions only need to implement two methods: a loglikelihood `logdensityof(dist, x)` and a sampler `rand(rng, x)`.
Number types are not restricted, and automatic differentiation of the sequence loglikelihood [@qinDirectOptimizationApproach2000] is supported both in forward and reverse mode, partly thanks to `ChainRulesCore.jl` [@whiteJuliaDiffChainRulesJl2022].
Number types are not restricted, and automatic differentiation of the sequence loglikelihood [@qinDirectOptimizationApproach2000] is supported both in forward and reverse mode, partly thanks to `ChainRulesCore.jl` [@whiteJuliaDiffChainRulesJl2022a].
The extendable `AbstractHMM` interface allows incorporating features such as priors or structured transitions, as well as temporal or control dependency, simply by redefining three methods:

```julia
Expand Down

0 comments on commit e433cc6

Please sign in to comment.