goal-graphical-0.20: Optimization of latent variable and dynamical models with Goal
Safe HaskellNone
LanguageHaskell2010

Goal.Graphical.Models.Harmonium

Description

An Exponential Family Harmonium is a product exponential family with a particular bilinear structure (Welling, et al., 2005). A Mixture model is a special case of harmonium.

Synopsis

Harmoniums

newtype AffineHarmonium f y x z w Source #

A 2-layer harmonium.

Constructors

AffineHarmonium (Affine f y z x, w) 

Instances

Instances details
(KnownNat k, DuallyFlatExponentialFamily z) => Transition Mean Natural (Mixture z k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Mean # Mixture z k) -> Natural # Mixture z k

(KnownNat k, LegendreExponentialFamily z, Transition Natural Source z) => Transition Natural Source (Mixture z k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Natural # Mixture z k) -> Source # Mixture z k

(KnownNat k, LegendreExponentialFamily z, Transition Source Natural z) => Transition Source Natural (Mixture z k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Source # Mixture z k) -> Natural # Mixture z k

(KnownNat k, Manifold y, Manifold z, LegendreExponentialFamily z, Translation z y) => Transition Natural Mean (AffineMixture y z k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Natural # AffineMixture y z k) -> Mean # AffineMixture y z k

(KnownNat n, KnownNat k) => Transition Mean Natural (AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Mean # AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)) -> Natural # AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)

Transition Mean Natural (AffineHarmonium Tensor NormalMean NormalMean Normal Normal) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Mean # AffineHarmonium Tensor NormalMean NormalMean Normal Normal) -> Natural # AffineHarmonium Tensor NormalMean NormalMean Normal Normal

(KnownNat n, KnownNat k) => Transition Natural Mean (AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Natural # AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)) -> Mean # AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k)

Transition Natural Mean (AffineHarmonium Tensor NormalMean NormalMean Normal Normal) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

transition :: (Natural # AffineHarmonium Tensor NormalMean NormalMean Normal Normal) -> Mean # AffineHarmonium Tensor NormalMean NormalMean Normal Normal

(KnownNat k, Manifold y, Manifold z, LegendreExponentialFamily z, Generative Natural z, Translation z y) => Generative Natural (AffineMixture y z k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

samplePoint :: Point Natural (AffineMixture y z k) -> Random (SamplePoint (AffineMixture y z k))

sample :: Int -> Point Natural (AffineMixture y z k) -> Random (Sample (AffineMixture y z k))

(ConjugatedLikelihood f y x z w, LegendreExponentialFamily z, ExponentialFamily y, LegendreExponentialFamily w, Map Natural f x y, Bilinear f x y) => ObservablyContinuous Natural (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

logObservableDensities :: (Natural # AffineHarmonium f y x z w) -> Observations (AffineHarmonium f y x z w) -> [Double] Source #

observableDensities :: (Natural # AffineHarmonium f y x z w) -> Observations (AffineHarmonium f y x z w) -> [Double] Source #

(Bilinear f y x, ExponentialFamily y, ExponentialFamily x, LegendreExponentialFamily w, ConjugatedLikelihood f y x z w) => AbsolutelyContinuous Natural (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

logDensities :: Point Natural (AffineHarmonium f y x z w) -> Sample (AffineHarmonium f y x z w) -> [Double]

densities :: Point Natural (AffineHarmonium f y x z w) -> Sample (AffineHarmonium f y x z w) -> [Double]

(LegendreExponentialFamily z, LegendreExponentialFamily w, ConjugatedLikelihood f y x z w, Map Natural f x y, Bilinear f x y, LegendreExponentialFamily (AffineHarmonium f y x z w), Manifold (f y x), SamplePoint z ~ t, ExponentialFamily y) => LogLikelihood Natural (AffineHarmonium f y x z w) t Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

logLikelihood :: [t] -> (Natural # AffineHarmonium f y x z w) -> Double

logLikelihoodDifferential :: [t] -> (Natural # AffineHarmonium f y x z w) -> Natural #* AffineHarmonium f y x z w

(Manifold (f y x), LegendreExponentialFamily w, Transition Mean Natural (AffineHarmonium f y x z w), ConjugatedLikelihood f y x z w) => DuallyFlat (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

dualPotential :: (PotentialCoordinates (AffineHarmonium f y x z w) #* AffineHarmonium f y x z w) -> Double

(Manifold (f y x), LegendreExponentialFamily w, ConjugatedLikelihood f y x z w) => Legendre (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

potential :: (PotentialCoordinates (AffineHarmonium f y x z w) # AffineHarmonium f y x z w) -> Double

(Manifold z, Manifold (f y x), Manifold w) => Manifold (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Associated Types

type Dimension (AffineHarmonium f y x z w) :: Nat

(Manifold z, Manifold (f y x), Manifold w) => Product (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Associated Types

type First (AffineHarmonium f y x z w)

type Second (AffineHarmonium f y x z w)

Methods

join :: (c # First (AffineHarmonium f y x z w)) -> (c # Second (AffineHarmonium f y x z w)) -> c # AffineHarmonium f y x z w

split :: (c # AffineHarmonium f y x z w) -> (c # First (AffineHarmonium f y x z w), c # Second (AffineHarmonium f y x z w))

(ExponentialFamily z, ExponentialFamily x, Translation z y, Translation w x, ExponentialFamily w, ExponentialFamily y, Bilinear f y x) => ExponentialFamily (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

sufficientStatistic :: SamplePoint (AffineHarmonium f y x z w) -> Mean # AffineHarmonium f y x z w

averageSufficientStatistic :: Sample (AffineHarmonium f y x z w) -> Mean # AffineHarmonium f y x z w

logBaseMeasure :: Proxy (AffineHarmonium f y x z w) -> SamplePoint (AffineHarmonium f y x z w) -> Double

Manifold (AffineHarmonium f y x z w) => Statistical (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Associated Types

type SamplePoint (AffineHarmonium f y x z w)

(Translation z y, Manifold w, Manifold (f y x)) => Translation (AffineHarmonium f y x z w) y Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

(>+>) :: (c # AffineHarmonium f y x z w) -> (c # y) -> c # AffineHarmonium f y x z w

anchor :: (c # AffineHarmonium f y x z w) -> c # y

type PotentialCoordinates (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type PotentialCoordinates (AffineHarmonium f y x z w) = Natural
type Dimension (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type Dimension (AffineHarmonium f y x z w) = Dimension (Affine f y z x, w)
type First (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type First (AffineHarmonium f y x z w) = First (Affine f y z x, w)
type Second (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type Second (AffineHarmonium f y x z w) = Second (Affine f y z x, w)
type Observation (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type Observation (AffineHarmonium f y x z w) = SamplePoint z
type SamplePoint (AffineHarmonium f y x z w) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

type SamplePoint (AffineHarmonium f y x z w) = SamplePoint (z, w)

type Harmonium f z w = AffineHarmonium f z w z w Source #

Constuction

splitHarmonium Source #

Arguments

:: (Manifold z, Manifold (f y x), Manifold w) 
=> (c # AffineHarmonium f y x z w)

Harmonium

-> (c # z, c # f y x, c # w)

Biases and interaction parameters

Splits a Harmonium into component parameters.

joinHarmonium Source #

Arguments

:: (Manifold w, Manifold z, Manifold (f y x)) 
=> (c # z)

Visible layer biases

-> (c # f y x)

^ Interaction parameters

-> (c # w)

Hidden layer Biases

-> c # AffineHarmonium f y x z w

Harmonium

Creates a Harmonium from component parameters.

Manipulation

transposeHarmonium :: (Bilinear f y x, Manifold z, Manifold w) => (c # AffineHarmonium f y x z w) -> c # AffineHarmonium f x y w z Source #

Swap the biases and transpose the interaction parameters of the given Harmonium.

Evaluation

expectationStep Source #

Arguments

:: (ExponentialFamily z, Map Natural f x y, Bilinear f y x, Translation z y, Translation w x, LegendreExponentialFamily w) 
=> Sample z

Model Samples

-> (Natural # AffineHarmonium f y x z w)

Harmonium

-> Mean # AffineHarmonium f y x z w

Harmonium expected sufficient statistics

Computes the joint expectations of a harmonium based on a sample from the observable layer.

Sampling

initialPass Source #

Arguments

:: forall f x y z w. (ExponentialFamily z, Map Natural f x y, Manifold w, SamplePoint y ~ SamplePoint z, Translation w x, Generative Natural w, ExponentialFamily y, Bilinear f y x, LegendreExponentialFamily w) 
=> (Natural # AffineHarmonium f y x z w)

Harmonium

-> Sample z

Model Samples

-> Random (Sample (z, w)) 

Initialize a Gibbs chain from a set of observations.

gibbsPass Source #

Arguments

:: (ExponentialFamily z, Map Natural f x y, Translation z y, Translation w x, SamplePoint z ~ SamplePoint y, Generative Natural w, ExponentialFamily y, SamplePoint x ~ SamplePoint w, Bilinear f y x, Map Natural f y x, ExponentialFamily x, Generative Natural z) 
=> (Natural # AffineHarmonium f y x z w)

Harmonium

-> Sample (z, w) 
-> Random (Sample (z, w)) 

Update a Sample with Gibbs sampling.

Mixture Models

type Mixture z k = Harmonium Tensor z (Categorical k) Source #

A Mixture model is simply a AffineHarmonium where the latent variable is Categorical.

type AffineMixture y z k = AffineHarmonium Tensor y (Categorical k) z (Categorical k) Source #

A Mixture where only a subset of the component parameters are mixed.

joinNaturalMixture Source #

Arguments

:: forall k z. (KnownNat k, LegendreExponentialFamily z) 
=> Vector (k + 1) (Natural # z)

Mixture components

-> (Natural # Categorical k)

Weights

-> Natural # Mixture z k

Mixture Model

A convenience function for building a categorical harmonium/mixture model.

splitNaturalMixture Source #

Arguments

:: forall k z. (KnownNat k, LegendreExponentialFamily z) 
=> (Natural # Mixture z k)

Categorical harmonium

-> (Vector (k + 1) (Natural # z), Natural # Categorical k)

(components, weights)

A convenience function for deconstructing a categorical harmonium/mixture model.

joinMeanMixture Source #

Arguments

:: (KnownNat k, Manifold z) 
=> Vector (k + 1) (Mean # z)

Mixture components

-> (Mean # Categorical k)

Weights

-> Mean # Mixture z k 

Build a mixture model in mean coordinates.

splitMeanMixture :: (KnownNat k, DuallyFlatExponentialFamily z) => (Mean # Mixture z k) -> (Vector (k + 1) (Mean # z), Mean # Categorical k) Source #

Split a mixture model in mean coordinates.

joinSourceMixture Source #

Arguments

:: (KnownNat k, Manifold z) 
=> Vector (k + 1) (Source # z)

Mixture components

-> (Source # Categorical k)

Weights

-> Source # Mixture z k 

Build a mixture model in source coordinates.

splitSourceMixture :: (KnownNat k, Manifold z) => (Source # Mixture z k) -> (Vector (k + 1) (Source # z), Source # Categorical k) Source #

Build a mixture model in source coordinates.

Linear Gaussian Harmoniums

type LinearGaussianHarmonium n k = AffineHarmonium Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k) Source #

Conjugated Harmoniums

class (ExponentialFamily z, ExponentialFamily w, Map Natural f y x, Translation z y, Translation w x, SamplePoint y ~ SamplePoint z, SamplePoint x ~ SamplePoint w) => ConjugatedLikelihood f y x z w where Source #

The conjugation parameters of a conjugated likelihood.

Methods

conjugationParameters Source #

Arguments

:: (Natural # Affine f y z x)

Categorical likelihood

-> (Double, Natural # w)

Conjugation parameters

Instances

Instances details
ConjugatedLikelihood Tensor NormalMean NormalMean Normal Normal Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

conjugationParameters :: (Natural # Affine Tensor NormalMean Normal NormalMean) -> (Double, Natural # Normal) Source #

(KnownNat k, LegendreExponentialFamily z, Translation y z, LegendreExponentialFamily y, SamplePoint z ~ SamplePoint y) => ConjugatedLikelihood Tensor z (Categorical k) y (Categorical k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

conjugationParameters :: (Natural # Affine Tensor z y (Categorical k)) -> (Double, Natural # Categorical k) Source #

(KnownNat n, KnownNat k) => ConjugatedLikelihood Tensor (MVNMean n) (MVNMean k) (MultivariateNormal n) (MultivariateNormal k) Source # 
Instance details

Defined in Goal.Graphical.Models.Harmonium

Methods

conjugationParameters :: (Natural # Affine Tensor (MVNMean n) (MultivariateNormal n) (MVNMean k)) -> (Double, Natural # MultivariateNormal k) Source #

joinConjugatedHarmonium Source #

Arguments

:: ConjugatedLikelihood f y x z w 
=> (Natural # Affine f y z x)

Conjugation parameters

-> (Natural # w) 
-> Natural # AffineHarmonium f y x z w

Categorical likelihood

The conjugation parameters of a conjugated Harmonium.

splitConjugatedHarmonium Source #

Arguments

:: ConjugatedLikelihood f y x z w 
=> (Natural # AffineHarmonium f y x z w) 
-> (Natural # Affine f y z x, Natural # w)

Conjugation parameters

The conjugation parameters of a conjugated Harmonium.