基于受限玻尔兹曼机(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)简介

目录
相关文章
|
存储 网络协议 安全
使用 NetCat 工具实现远程文件传输
NetCat(NC)是一个通过 TCP/UDP 在网络中进行读写数据工具,主要用于调式领域,传输领域甚至黑客攻击领域。利用 NetCat 工具,可以将网络中的完整数据发送至另一台主机终端显示或存储,常见的应用为文件传输、与好友即时通信、传输流媒体等功能。
1054 0
使用 NetCat 工具实现远程文件传输
|
安全 Java
Jprofile解析dump文件使用详解(一)
Jprofile解析dump文件使用详解(一)
1276 1
Jprofile解析dump文件使用详解(一)
|
5月前
|
存储 人工智能 安全
AI智能体开发的工程化落地
AI Agent正从Demo走向企业级落地,但面临六大工程化挑战:任务路径坍塌、RAG深度不足、成本失控、工具调用风险、合规硬约束及记忆容量危机。2026年决胜关键在于工程确定性——宁停勿错。(239字)
|
机器学习/深度学习 存储 编解码
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
606 16
RT-DETR改进策略【Neck】| ArXiv 2023,基于U - Net v2中的的高效特征融合模块:SDI(Semantics and Detail Infusion)
|
前端开发 JavaScript 数据库
在 React 项目中 Editable Table 的实现
由于我们是把 state 存放在父组件的,每次请求会造成 table 进行 render 一遍,如果再加入 loading 等状态,render 次数会更多。Table 组件默认情况下没有对 rerender 行为做优化,父组件更新,如果 columns 中的提供了自定义 render 方法, 对应的每个 Cell 都会重新 render 。 针对这种情况我们就需要进行优化,根据 shouldCellUpdate 来自定义渲染时机。 那么每个 Cell 的渲染时机应该是: 1. FormItem 增删位置变动时 2. 该 Cell 消费的对应 tableOptions 变动时 第一种情况很好判
641 1
|
测试技术 C++
c++优先队列priority_queue(自定义比较函数)
c++优先队列priority_queue(自定义比较函数)
2649 0
|
JavaScript 索引
js【详解】arr.splice() 数组拼接
js【详解】arr.splice() 数组拼接
1246 0
|
运维 监控 Java
Spring Boot应用的性能监控与优化指南
Spring Boot应用的性能监控与优化指南
|
云计算
阿里云的认证有什么含金量?通过后有什么作用?
因此考证已经成为了很多打工人的首选方法,而对于从事云计算行业的人来说,阿里云的认证绝对是首选。
阿里云的认证有什么含金量?通过后有什么作用?
|
JavaScript API
Vue | Vue.js 全家桶 Pinia状态管理
Vue | Vue.js 全家桶 Pinia状态管理
729 1