综述
受限玻尔兹曼机(RBM)在推荐系统中有广泛的应用。在介绍RBM之前需要介绍一下玻尔兹曼机
玻尔兹曼机
玻尔兹曼机可以看作是一个有$N+M$个节点的全连通图,其中有$N$个节点作为显示状态$v$,而有$M$个节点作为隐藏状态$h$。玻尔兹曼机可以对特定的$v$和$h$定义一个能量函数,能量函数可以反映$v$和$h$的联合概率$P(v,h)$。玻尔兹曼机的学习问题是在已知$v$的情况下求最大似然$P(v|W,a,b)$或在已知$v$和$h$的情况下求最大似然$P(v,h|W,a,b)$;玻尔兹曼机的编码问题是在已知$v$和模型参数的情况下求$P(h|v,W,a,b)$的最大值点$h$;玻尔兹曼机的解码问题是在已知$h$和模型参数的情况下求$P(v|h,W,a,b)$的最大值点$v$。
受限玻尔兹曼机
受限玻尔兹曼机和玻尔兹曼机不同的地方是受限玻尔兹曼机将$v$和$h$看作是二分图,$v$在二分图的一侧,而$h$在二分图的另一侧。无论是$v$还是$h$,内部都不再有连接,即内部是相互独立的。定义能量函数
则可以定义$P(v,h)$由下式决定:
对于编码问题,即求$P(h|v)$,我们有:
已知$v$,则$h_i=1$的概率为:
所以在已知$v$的情况下,每一位$h_i$的输出都可以通过$sigmoid$函数的值决定,大于0.5则$h_i$取1,小于0.5则$h_i$取0。同理可以得到解码问题的求解步骤,即求出$P(v_i=1|h)$。对于学习问题,可以列出最大似然损失函数:
我们利用这个似然损失函数对参数$W$,$a$和$b$求梯度,可以得到:
上面三个式子,$V$是训练样本的显示状态,可以看到三个梯度式子都有关于分布$P(v)$求某个期望,所以可以使用基于吉布斯采样的对比散度方法近似求得关于$P(v)$的某个期望,从而得到梯度的近似结果。不断迭代更新直到收敛,最终得到参数的解。
受限玻尔兹曼机可以用于推荐系统。大多数情况,我们都能得到一些用户对物品的评价数据,这些数据是稀疏的,即存在很多物品用户没有对其评价,现在我们希望通过利用稀疏的已有的数据建模,预测用户对没有评价的物品的评价。可以将用户对物品的评价看作$V$训练RBM的参数,训练时只对有评价的部分求最大似然,训练完后再利用解码还原出$V$中缺失的部分。
深度受限玻尔兹曼机
深度受限玻尔兹曼机就是有多层的RBM,原先的RBM是二分图,只有两层,而深度RBM则有多层,每两层之间构成二分图。如果把奇数层和偶数层拆开看会发现,深度RBM依然可以转换成一个RBM,即奇数层与偶数层可以构成一个二分图。