So I'm currently training a stack of RBMs (Restricted Boltzmann Machines), eventually to be build into a DBN (Deep Belief Net), on a set of gray-scale images featuring objects placed in different locations on a complex background.

After training for a good long while, I tried generating from the RBMs and found that for a large percentage of the generated images were identical; they all looked like the background.

This makes sense: the background is static across the training set, so learning a high fidelity representation of that is a better idea (from the network's perspective) than learning a low fidelity representation of the objects, since they appear in different positions.

My question is this: I want to learn about the whole image, not just the background; what should I change in order get this to happen? I could always lower the learning rate/momentum and keep training, but I've love some opinions as to whether or not that is the best solution. Is there anyway to utilize this learned representation of the image background to learn a better representation of the foreground? I've thought of just subtracting it out, but that seems rather ad hoc.

P.S. I've had this problem in the past with traditional autoencoders (i.e. three-layer backpropagation net predicting the input pattern), so I know it isn't unique to deep learning approaches or the particular dataset, just any dataset that contains a static signal amongst more varied information.


1 Answer 1


I don't have a good intuition as to whether or not you'll be able to "force" them to use specific features by tweaking the learning rate. It might work, but it might also end up with a slow convergence on the same local minima.

Subtracting the background out isn't a terrible idea. Can you preprocess the input? If you take the 2D Fourier transform of the images and throw away the phase information, you might end up with a more position-invariant representation (depending on lighting, etc)

  • $\begingroup$ I agree with your intuition on the learning rate, and will definitely try some fourier based preprocessing, but my real concern lies with the background subtraction, since leveraging my existing representation of it seems like a plausible way to proceed. All I can think of with in this regard is to generate an image based on the current weights (i.e. the static background) and subtract that from the current input image. I think this would work, but is completely ad hoc, so if you know of people trying to do anything like this in the literature, that would be great. $\endgroup$
    – zergylord
    Apr 3, 2012 at 8:17
  • $\begingroup$ Sorry--nothing/no one specific comes to mind. That sounds like a good plan though; best of luck! $\endgroup$ Apr 6, 2012 at 17:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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