我的算法RBM用于协作过滤不会收敛...我认为协作过滤的RBM的想法是
-
初始w,b,c和[0,1]
的随机 用户夹具数据 ->可见(SoftMax)
hidden = sigmoid(b w*v)
在隐藏 -> hidden_gibbs上运行吉布斯
阳性=隐藏*可见
隐藏 ->重建 -> reconstruct_visible
在reconstruct_visible-> reconstruct_visible_gibbs上运行gibbs
负= hidden_gibbs*reconstruct_visible_gibbs
结束
更新
w = w (阳性阴性)/number_user
b = b (可见 - reconstruct_visible_gibbs)/number_user
c = c (hidden -hidden_gibbs)/number_user
我看过很多纸或演讲,不知道在哪里错误
这不是一个容易的问题!您对学习过程的描述看起来不错。但是,从描述到实际代码有很多错误的空间。另外,对于CF,"香草" RBM无法正常工作。
-
您是如何实现可见的" SoftMax"单元的?
-
您是否正在使用"单用户"数据集训练RBM,如原始工作[1]?
中的建议
还有2个有关重量更新和预测过程的详细信息,与Vanilla的RBM略有不同
[1] salakhutdinov http://www.machinelearning.org/proceedings/icml2007/papers/407.pdf