zoukankan      html  css  js  c++  java
  • 基于受限玻尔兹曼机(RBM)的协同过滤

      受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文《受限玻尔兹曼机(RBM)简介》, 本文主要介绍RBM在协同过滤的应用。

    1. 受限玻尔兹曼机简单介绍

      传统的受限玻尔兹曼机是一种如下图所示, 其由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}。整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见单元之间以及隐藏单元之间都不会有边连接。

      

      将该模型应用到协同过滤需要解决以下两个问题:

    1. 鉴于RBM中的单元都是二元变量, 如果用这些二元变量来对整数值的评分建模?
    2. 用户的打分是非常稀疏的, 亦即用户只会对很少的物品(比如电影)打分, 如何处理这些缺失的评分?

    2. 基于RBM的协同过滤

      R. R. Salakhutdinov等人提出了一种使用RBM来进行协同过滤的方法:

      假设有m个电影, 则使用m个softmax单元来作为可见单元来构造RBM.  对于每个用户使用不同的RBM, 这些不同的RBM仅仅是可见单元不同, 因为不同的用户会对不同的电影打分, 所有的这些RBM的可见单元共用相同的偏置以及和隐藏单元的连接权重W. 该方法很好的解决了之前提到的问题:

    1. 使用softmax来对用户的评分进行建模, softmax是一种组合可见单元, 包含k个二元单元, 第i个二元单元当且只当用户对该电影打分为i时才会置为1.
    2. 如果一个用户没有对第j个电影评分, 则该用户的RBM中不存在第j个softmax单元.

      该模型如下图所示:

      

      可是单元V和隐藏单元h的条件概率为:

      

      模型参数的学习过程非常类似于RBM的DC算法:

      

      训练完模型后, 计算用户对未评价物品的预测评分的算法为:

      

    3. 条件RBM(Conditional Restricted Boltzmann Machine)

      以上的RBM只用到了用户对电影的评分, 忽视了另外一种非常重要的信息: 用户浏览过哪些电影(但是没打分, 或者打分未知), 条件RBM把这种信息也进行了建模:

      

      其中的r是一个m维的向量, ri为1代表用户对浏览过第i个电影, 加入r后的模型的条件概率为:

      

      权重D的学习过程为:

      

      参考文献:

      [1]. Ruslan Salakhutdinov, Andriy Mnih, Geoffrey Hinton. Restricted Boltzmann Machines for Collaborative Filtering. 2007, ICML.

      [2]. Gilles Louppe, Pierre Geurts. Collaborative filtering: Scalable approaches using restricted Boltzmann machines

      [3]. 受限玻尔兹曼机(RBM)简介

  • 相关阅读:
    Webservice或WebAPi Post类型传参,类对象格式转换
    WebService 客户端上传图片,服务器端接收图片并保存到本地
    WebAPI 本地调试
    Quartz 计时器使用之 给主线程窗体控件赋值方法
    微信APP支付
    微信H5支付
    微信JSAPI支付
    微信支付
    循环table 示例
    前台向后台传数组处理
  • 原文地址:https://www.cnblogs.com/kemaswill/p/3269138.html
Copyright © 2011-2022 走看看