What is a class-specific module?

A class-specific module is a modularized software implementation of a stage (or layer) in a cascade or series of class-specific feature extraction calculations. A module is illustrated in Figure 1.1. The module must provide three things: (a) the feature extraction calculation, (b) the J-function calculation and (c) the data re-synthesis function. The J-function is analogous to the log-Jacobian in a 1:1 transformation. The J-function provides for the conversion of the feature distribution to the input data distribution, and is the generalization of the log-Jacobian to dimension-reducing transformations. A CSM chain is composed of a series of modules :
  j = 0;
  [w,j]=module_A(x,j);
  [y,j]=module_B(w,j);
  [z,j]=module_C(y,j);
In this example, the input data x is processed in turn by modules “A", “B", and “C". Each module adds its contribution to the J-function. If the log-likelihood of z is given by log p(z), then log p(x) = J + log p(z), where x is the accumulated J-function of the chain, is an estimate of the likelihood function of the input data x. To re-synthesize x from the chain output z, we would use:
  y=module_C_synth(z);
  w=module_B_synth(y);
  x=module_A_synth(w);
Furthermore, if ${\bf z}$ is first drawn randomly from $p({\bf z})$, then the reconstructed samples will be drawn from the data distribution $p({\bf x})=e^{J({\bf x})} p({\bf z})$. This provides a modular way to create generative models.