Q: RBM for collaborative filtering My algorithm RBM for collaborative filtering will not converge...
The idea of what I think RBM for collaborative filtering is 


*

*initial w , b , c and random at [0,1]

*For By User
clamp data -> visible (softmax)
Hidden = sigmoid(b+W*V)
Run Gibbs on Hidden -> Hidden_gibbs
Positive = Hidden*Visible
Hidden -> reconstruct -> reconstruct_visible
Run Gibbs on reconstruct_visible ->  reconstruct_visible_gibbs
negative = Hidden_gibbs*reconstruct_visible_gibbs
End for

*Update
w = w + (positive-negative)/Number_User
b = b + (visible - reconstruct_visible_gibbs)/Number_User
c = c + (Hidden - Hidden_gibbs)/Number_User
I have seen lots of paper or lecture, and have no idea where is wrong

A: This is not an easy problem! Your description of the learning procedure looks fine. But, there's a lot of room for mistakes from the description to the actual code. Also, for CF, "vanilla" RBM won't work.


*

*How did you implemented the visible "softmax" units? 

*Did you train your RBM with a "single-user" dataset, as recommended in the original work[1]?
There are 2 more details about weight updates and prediction procedure that are slightly different from vanilla's RBM
[1] Salakhutdinov http://www.machinelearning.org/proceedings/icml2007/papers/407.pdf
