-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathdemgpot.m
29 lines (26 loc) · 1.01 KB
/
demgpot.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function g = demgpot(x, mix)
%DEMGPOT Computes the gradient of the negative log likelihood for a mixture model.
%
% Description
% This function computes the gradient of the negative log of the
% unconditional data density P(X) with respect to the coefficients of
% the data vector X for a Gaussian mixture model. The data structure
% MIX defines the mixture model, while the matrix X contains the data
% vector as a row vector. Note the unusual order of the arguments: this
% is so that the function can be used in DEMHMC1 directly for sampling
% from the distribution P(X).
%
% See also
% DEMHMC1, DEMMET1, DEMPOT
%
% Copyright (c) Ian T Nabney (1996-2001)
% Computes the potential gradient
temp = (ones(mix.ncentres,1)*x)-mix.centres;
temp = temp.*(gmmactiv(mix,x)'*ones(1, mix.nin));
% Assume spherical covariance structure
if ~strcmp(mix.covar_type, 'spherical')
error('Spherical covariance only.')
end
temp = temp./(mix.covars'*ones(1, mix.nin));
temp = temp.*(mix.priors'*ones(1, mix.nin));
g = sum(temp, 1)/gmmprob(mix, x);