When using the persistent CD learning algorithm for Restricted Bolzmann Machines, we start our Gibbs sampling chain in the first iteration at a data point, but contrary to normal CD, in following iterations we don't start over our chain. Instead we start where the Gibbs sampling chain in the previous iteration ended.

In the normal CD algorithm each iteration evaluates a mini batch of data points and computes the Gibbs sampling chains starting from those data points themselves.

In persistent CD, should we keep Gibbs sampling chains for each data point? Or should we keep also a mini batch of Gibbs sampling chains, which started at data points which aren't currently evaluated in the current iteration?

It seems to me that keeping Gibbs sampling chains for each data point will be too cumbersome, but on the other hand it seems inadequate to compare the signals of the current sample with the signals after a long Gibbs chain which didn't start at the current sample.

  • $\begingroup$ @subha It does seem counter-intuitive, but it is actually quite clear it should be a single chain which is used for different input data. Also take a look at deeplearning.net/tutorial/rbm.html . There it is stated that what is done is "not restarting a chain for each observed example". deeplearning.net has a lot of great examples and simple explanation. $\endgroup$
    – Angelorf
    Commented Aug 13, 2014 at 8:49
  • $\begingroup$ @Angelorf could you please review these instructions? i am using batch version. so for the 1st batch i find v0-h0-v1-h1.now we find +ve and -ve samples and update gradient. Then for next batch, gibbs chain starts at h1 of first batch inplace of h0 of second batch. Am i right? $\endgroup$
    – subha
    Commented Aug 18, 2014 at 1:01
  • $\begingroup$ @subha I think that is right, but that is exactly what I am asking in the original post. $\endgroup$
    – Angelorf
    Commented Aug 21, 2014 at 13:29
  • $\begingroup$ When i do like that,how will it reconstruct the input data proper? I have tried, it is not reconstructing data proper. $\endgroup$
    – subha
    Commented Aug 22, 2014 at 4:00

1 Answer 1


The original paper describing this can be found here

In section 4.4, they discuss the ways in which the algorithm can be implemented. The best implementation that they discovered initially was to not reset any Markov Chains, to do one full Gibbs update on each Markov Chain for each gradient estimate, and to use a number of Markov Chains equal to the number of training data points in a mini-batch.

Section 3 might give you some intuition about the key idea behind PCD.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.