本文主要是介绍RBM的学习算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
RBM定义的能量函数和概率函数为:
E(v,h)=−∑iaivi−∑jbjhj−∑i,jwijvihj
p(v,h)=exp(−E(v,h))∑v,hexp(−E(v,h))
观察数据v的log概率函数为
logp(v)=log∑hexp(−E(v,h))∑u,hexp(−E(u,h))
∂logp(v)∂wij=∑h(exp(−E(v,h)∗vi∗hj))∑hexp(−E(v,h))−∑u,h(exp(−E(u,h)∗ui∗hj))∑u,hexp(−E(u,h))=∑hp(h|v)vihj−∑u,hp(u,h)uihj
可以看出,第一项为在观察数据V条件概率下i节点和j节点状态乘积的期望值,该项为正值(positive);第二项为自由状态下i节点与j节点状态乘积的期望值,该项为负值(negative)。
计算期望值采用的是MCMC采样算法。
然而在自由状态下,第二项MCMC收敛到平衡状态的速度不快(inefficient),因为当前的平衡状态是当前w等参数决定的平衡状态,并不是最优参数对应的平衡状态。后来PCD、CD-k等高效算法被提了出来。
对比散度博文
这篇关于RBM的学习算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!