Generating from a product of experts
Here is a correct but inefficient way to generate an
unbiased sample from a product of experts:
Let each expert produce a datavector independently.
If all the experts agree, output the datavector.
If they do not all agree, start again.
The experts generate independently, but because of the
rejections, their hidden states are not independent in the
ensemble of accepted cases.
The proportion of rejected attempts implements the
normalization term.