Welcome to the documentation of ControlledHiddenMarkovModels.jl, a package for Hidden Markov Models with exogenous control variables.

Why would you need it?

This package focuses on discrete-time HMMs with a finite state space, but it's not the only one! A few alternatives that I am aware of:

I started my own package because I needed specific features that were not simultaneously available elsewhere (to the best of my knowledge):

  • Control variables (obviously)
  • Compatibility with generic emissions (beyond Distributions.jl)
  • Numerical stability thanks to log-scale computations
  • Compatibility with automatic differentiation of parameters
    • in forward mode
    • in reverse mode (WIP)

Getting started

To install the package, open a Julia Pkg REPL and run

pkg> add

Mathematical background

To understand the algorithms implemented here, check out the following literature:

A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition, Lawrence R. Rabiner (1989)

An Input Output HMM Architecture, Yoshua Bengio and Paolo Frasconi (1994)