Design Principles#

GPJax is designed to be a Gaussian process package that provides an accurate representation of the underlying maths. Variable names are chosen to closely match the notation in [Rasmussen and Williams, 2006]. We here list the notation used in GPJax with its corresponding mathematical quantity.

See also

For the words rather than the symbols, see the glossary. For the model-building pipeline these names appear in — Prior times a likelihood giving a posterior — start with the introduction to Gaussian processes.

Gaussian process notation#

On paper

GPJax code

Description

\(n\)

n

Number of train inputs

\(\boldsymbol{x} = (x_1,\dotsc,x_{n})\)

x

Train inputs

\(\boldsymbol{y} = (y_1,\dotsc,y_{n})\)

y

Train labels

\(\boldsymbol{t}\)

t

Test inputs

\(f(\cdot)\)

f

Latent function modelled as a GP

\(f({\boldsymbol{x}})\)

fx

Latent function at inputs \(\boldsymbol{x}\)

\(\boldsymbol{\mu}_{\boldsymbol{x}}\)

mux

Prior mean at inputs \(\boldsymbol{x}\)

\(\mathbf{K}_{\boldsymbol{x}\boldsymbol{x}}\)

Kxx

Kernel Gram matrix at inputs \(\boldsymbol{x}\)

\(\mathbf{L}_{\boldsymbol{x}}\)

Lx

Lower Cholesky factor of \(\boldsymbol{K}_{\boldsymbol{x}\boldsymbol{x}}\)

\(\mathbf{K}_{\boldsymbol{t}\boldsymbol{x}}\)

Ktx

Cross-covariance between inputs \(\boldsymbol{t}\) and \(\boldsymbol{x}\)

Sparse Gaussian process notation#

On paper

GPJax code

Description

\(m\)

m

Number of inducing points

\(\boldsymbol{z} = (z_1,\dotsc,z_{m})\)

z

Inducing inputs

\(\boldsymbol{u} = (u_1,\dotsc,u_{m})\)

u

Inducing outputs

Package style#

Prior to building GPJax, the developers of GPJax have benefited greatly from the GPFlow and GPyTorch packages. As such, many of the design principles in GPJax are inspired by the excellent precursory packages. Documentation designs have been greatly inspired by the exceptional Equinox docs.