基于深度学习的推荐系统研究

论文信息:北京邮电大学   陈达  14年硕毕论

目的:深度网络学习算法应用到推荐系统 。

为此工作:

1)研究分析基于内容的推荐系统和基于协同过滤的推荐系统,包括基于相似度的最近邻方法,朴素贝叶斯方法,潜在因素的矩阵分解方法,分析了各自的优缺点。

2)研究一个典型的深度网络模型——多层受限波兹曼机(DBN)。

3)将深度网络与传统协同过滤方法相结合,建立一个新的深度网络混合模型,采用有限步吉布斯采样的最小化散度差算法对深度模型的似然函数求解,可以训练一个深度网络系统。

4)在多个数据集上,将此方法和传统方法进行对比,证明深度网络学习方法在特征提取上具有不错能力,用在推荐系统上比协同过滤方法有更好的抗噪性和有效性。

内容一(传统算法优缺点) :

1,基于内容的推荐算法:TF-IDF,朴素贝叶斯。

2,基于协同过滤的推荐算法:根据相似用户的最近邻,潜在因素的矩阵分解。

内容二(深度网络结构):

背景知识1:神经网络的神经元,sigmoid神经元

对于一个单层的推断结构利用梯度下降的方式学习权值:

上述公式中,字母依次分别代表学习速率,0,1二值,推断的概率。

背景知识2:波兹曼机

波兹曼机是由随机神经元函数(sigmoid)组成的随机机器,每个节点的状态只能是“开”和“关”两种状态,用0和1来表示,这里的0和1状态的意义是代表了模型会选取哪些节点来使用,处于激活状态的节点被使用,未处于激活状态的节点未被使用。节点的激活概率由可见层和隐藏层节点的分布函数计算。其神经元分成两部分功能组一一下面一层的可见层神经元和上面一层的隐含层祌经元。在网络的训练阶段所有的可见神经元都被钳制在环境所决定的特定状态,而隐藏神经元总是自由运行的。

背景知识3:波兹曼机统计力学与吉布斯分布

有许多自由度的物理系统,它可以驻留在大量可能状态中的任何一个。P表示状态概率,E表示状态的能量(P和E一一对应),当系统和周围环境处于热平衡状态时一个基本的状态的发生概率为:

其中T为幵尔文绝对摄氏度,K为波兹曼常数,再根据概率之和为1可以得到在某个状态E下联合概率分布函数:

上述分布即符合吉布斯分布。吉布斯分布一个重要的性质:能量低的状态比能量高的状态发生概率较高。

背景知识4:受限波兹曼机

普通波兹曼机简化成了受限波兹曼机,受限波兹曼机隐含层与隐含层之间无连接,可见层与可见层之间无连接,如下:

在可见层和隐含层加入了偏好之后的受限波兹曼机的联合能量函数为:

其中i,j分别为可见层和隐含层神经元的个数,a可见层偏好,b为隐含层偏好,w为可见层和隐含层的连接权值。而可见层单元根据不同的应用情景有不同的取值范围和不同的神经元函数。

整个网络在状态X下的概率用能量函数表示:

这里注意v和h为可见层向量和隐含层状态向量,状态X下的联合概率分布为:

由于隐含层与隐含层之间无连接,可见层与可见层之间无连接,更重要的性质是:当给定了可见层的数据之后隐含层之间是条件独立的,给定了隐含层的数据之后可见层之间是条件独立的。

当给定可见层状态时,隐含层的某一个单元处于“激活”态概率为:

当给定隐含层状态时,可见层某一单元处于“激活”态概率为:

背景知识5:多层波兹曼机

该图的最下层为可见层V,可见层之上的均为隐含层H,在多层情况下以三层为例,整个网络的联合能量函数为:

网络在状态X下的联合概率:

在深度置信网络中利用最顶两个隐含层作为无向的关键记忆层(如图的双向箭头),将关联记忆表征的信息可以通过网络的重构反应到整个网络的参数上去,这样就可以进行“重复”学习的过程。

令J表示可见层的输入数据,通常来说波兹曼机的运行状态分为两个阶段:

1,正向推断,这时整个网络在钳制环境下即在输入数据的直接影响下运行;

2,负向阶段,这个阶段中网络自由运行,隐含层不断自行推断进行状态转移,并且没有环境输入。那么深度结构波兹曼机的整个网络快速学习权值过程大致如图所示:

上图显示了一个快速的学习过程,向上的箭头表示利用该层钳制的数据和权值正向推断的过程,向下的箭头表示作为生成模型,模型重构出来的数据,而且网络的参数是一层一层地向上学习,也就是说当底层参数学习完毕后,将底层向上正向推断的数据作为可见层数据,再向上正向推断学习。

理解参考:https://www.cnblogs.com/jhding/p/5687696.html

内容三(深度结构模型的推荐算法):

一:深度模型

将深度波兹曼机的模型和传统最近邻的方法相结合,利用深度波兹曼机对高维数据的特征抽象表达能力和最近邻直观的而快速的打分预测能力,组成一个新的模型,对己存在的方法进行改进和提升,使其能够充分利用两个模型中出色特点避免两者中的缺点,扬长避短。

绿色框部分代表深度学习结构,用模型对训练数据进行输入,并利用无监督学习的方法训练深度网络,该深度模型一共有四层,包括可见层v1,隐含层h1、隐含层h2和隐含层h3,而顶层与隐含层h3形成无向的关联记忆层。

当数据通过深度结构进行深层映射后,从原来的M维(M为输入数据的维度)变成了最顶层的K维数(K为深度模型最顶层神经元的维度),这样我们认为原来高维数据通过特征探测群进行映射后,将数据内部隐含的特征映射到K维空间中。

比如,对于电影打分数据,我们将映射后的K维空间可以理解成该用户对M部电影的偏好特征,1-K个维度分别代表用户喜爱某个演员的程度、喜欢某个类型影片的程度、喜欢某个导员的程度等等,在这K个维度上我们对每个用户的数据进行聚类或者相似度比较,则相似度比较的结果往往比用原始数据进行比较的准确度要高。

二:多层模型的训练方法

要确定这个模型要知道模型的三个参数,下面就围绕着参数的求解进行分析。

参数求解用到了似然函数的对数对参数求导。由于从可知,能量E和概率P是成反比的关系,所以通过最大化P,才能使能量值E最小。最大化似然函数常用的方法是梯度上升法,梯度上升法是指对参数进行修改按照以下公式:

通过求关于的导数,即,然后对原值进行修改。如此迭代使似然函数P最大,从而使能量E最小。

对数似然函数对参数求导分析:

首先是对数似然函数的格式:, 表示模型的输入数据。然后对里的参数分别进行求导,详细的推导过程就不写了:

由于上面三式的第二项中都含有中仍然含有参数,所以它是式中求不出来的。所以,有很多人就提出了一些通过采样逼近的方法来求每一个式子中的第二项。

求解的算法:

1, Gibbs采样算法

因为在上一章节末尾讲对参数的求导中仍然存在不可求项表示可见层节点的联合概率。所以,要想得到 的值,就得要逼近它,求它的近似值。

Gibbs采样的思想是虽然不知道一个样本数据的联合概率P(x),但是知道样本中每一个数据的条件概率 (假设每一个变量都服从一种概率分布),则我可以先求出每一个数据的条件概率值,得到x的任一状态 。然后,我用条件概率公式迭代对每一个数据求条件概率。最终,迭代k次的时候,x的某一状态将收敛于x的联合概率分布P(x)。

对于RBM来讲,则执行过程如图3所示:

图3 Gibbs采样过程

求解过程是:假设给我一个训练样本v0,根据公式 求 h0中每个节点的条件概率,再根据公式 求v1 中每个节点的条件概率,然后依次迭代,直到执行K步(K足够大),此时的概率将收敛于P(v)的概率。如下所示:

 2,CD-k算法

CD算法是需要k次(k=1)Gibbs采样对可见层节点进行重构得到可见层节点的概率分布。其思想是:假设给模型一个样本v0,通过求所有隐藏层节点的概率值,然后每一个概率值和随机数进行比较得到每一个隐藏层节点的状态,然后通过公式求每一个可见层节点的概率值,再由求每一个隐藏层节点的概率值。最后参数梯度的计算公式变为:

其中,μ是学习率,data和recon分别表示训练数据的概率分布和重构后的概率分布。

通过以上方法都可以求出参数的梯度来,由每一个参数的梯度对原参数值进行修改来使模型的能量减小。

内容四(MovieLens数据集实验):

Movielens数据集:943个用户,1682部电影,100000条评分。

该数据有四列,第一列为评价序号,序号数最大为1000000,第二列代表用户的ID,第三列代表项目的ID,第四列代表用户对该项目的评价,通常来说,评价一般分为1到5五个等级,用户对物品的喜爱程度由小到大。

1,数据预处理

在该数据中按照百分比抽样,形成训练数据和测试数据。将数据形成一个943*1682的矩阵形式。

2,算法设计与实践

对于每一个用户的数据,分别建模,输入到模型中迭代调整权值,于是对于任意一个输入,我们需要将用户的打分数据形成softmax结构的输入,这里我们采用一个三维矩阵uatrainF(k,uraw,col)来记录softmax模型,其中K代表该列中的第K个softmax,uraw和col分别代表原始矩阵的行和列,当数据进入模型时将uatrainF(k,uraw,col)的第二维(用户)抽取出来,输入模型算法,如下:

上图表示了一个可见层为softmax的两层波兹曼机模型的训练算法流程图,在初始化阶段,我们需要对模型的众多参数进行初始化,这些参数包括:权值学习速率、可见层偏好学习速率、隐含层偏好、权值代价因子、权值记忆因子、以及连接权值参数、可见层偏好、隐含层偏好,这些随机初始化的方法通常利用均匀分布随机数,或者标准正态分布随机数。进入迭代之后,进行正向推断和反向推断。

对深度模型的建模工作,可利用上述两层波兹曼机的建模方法,只是除了在第一层和第二层网络上与上述方法相同,第二层到顶层,隐含层神经元釆用的都是普通的{0,1}二值的神经元。将上图的过程称为两层之间的预训练,那么深度结构在相邻的两层之间都会有预训练的过程,由于我们的训练数据并没有标签数据,于是该模型不同于DBN—样存在着微调反馈这一阶段。模型算法流程图如图所示:

在预学习阶段,下一层隐含层的输出均作为上一层隐含层的输入。,将原来高维数据通过无监督学习在低维度重新表征出来。其中该网络的H1,H2,H3的维度分别为1000,500,250,V1的维度即为输入矩阵的列数1628,关于每一层神经元的个数的确定可参考上述链接指出,深层网络的中间层神经元较多时效果较好。接下来,对该低维数据重新进行相似度计算利用基于相似度计算的方法进行数据重构。

3,实验结果评价方法

采用均方根误差(RMSE)来衡量真实评分数据和预测的评分数据的差距。

内容五(论文改进):

1,MATLAB上运行,内存不够。

2,在Hadoop平台上的并行化。

基于深度学习的推荐系统研究相关推荐

  1. 工业界推荐系统必读论文:基于深度学习的推荐模型——DLRM

    作者丨纪厚业 单位丨北京邮电大学博士生 研究方向丨异质图神经网络及其应用 引言 推荐系统尤其是深度推荐系统已经在工业界得到了广泛应用,尤其是在电商场景下(如淘宝和京东的商品推荐).一个好的工业级推荐系 ...

  2. 基于深度学习的推荐(二):基于FM初始化的FNN

    公众号 关注公众号:推荐算法工程师,输入"进群",加入交流群,和小伙伴们一起讨论机器学习,深度学习,推荐算法. 前言 论文地址:https://arxiv.org/pdf/1601 ...

  3. 基于深度学习的推荐系统:综述与新视角

    原文:Deep Learning based Recommender System: A Survey and New Perspectives 作者:张帅, 新南威尔士大学 翻译:沈春旭,清华大学 ...

  4. 基于深度学习的搜索、推荐、广告系统最全最新论文分享

    推荐系统是有效的信息过滤工具,由于互联网接入的增加.个性化趋势和计算机用户习惯的改变,这种工具非常普遍.尽管现有的推荐系统成功地产生了不错的推荐,但是它们仍然面临着诸如准确性.可伸缩性和冷启动等挑战. ...

  5. 推荐算法普查(基于深度学习)

    摘要 深度学习已经成为推荐算法研究者们理想的选择.随着机器学习领域研究兴趣的强力增长,已经很难跟踪谁才是TopN推荐问题的最先进算法.与此同时,最近有几篇文章指出现在机器学习领域实践方面的一些问题,比 ...

  6. 基于深度学习的推荐系统(一)Overview

    这是对近年来基于深度学习的推荐系统的内容的一份综述,具体来说,大部分内容来自 Deep Learning based Recommender System: A Survey and New Pers ...

  7. 深度学习的推荐模型(DLRMs):设计孪生掩码层高效学习维度自适应的Embedding...

    猜你喜欢 0.2021年10月份热门报告免费下载1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统架构.算法及后台设计4.微博推荐算法实践与机器学习平台演进5.腾讯 ...

  8. 基于深度学习的VQA(视觉问答)技术

    深度学习大讲堂致力于推送人工智能,深度学习方面的最新技术,产品以及活动.请关注我们的知乎专栏! 视觉问答导读 视觉问答(Visual Question Answering,VQA),是一种涉及计算机视 ...

  9. 【原创】推荐广告入门:DeepCTR-Torch,基于深度学习的CTR预测算法库

    在计算广告和推荐系统中,CTR预估一直是一个核心问题.无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛陆续举办.本文介绍一个使用PyTorch编写的深度学习的点击率预测算法库D ...

最新文章

  1. 小图拼接大图MATLAB实现
  2. 第5章 IDA Pro
  3. javascript异步_JavaScript异步并在循环中等待
  4. 为未来元素添加点击事件的两种写法
  5. [Spark] Yarn local-dirs are bad 导致节点处于不健康状态
  6. HeadFirst设计模式笔记——命令模式
  7. SEO实战密码阅读笔记
  8. TR069协议与商业应用8——移植cwmp到ARM平台运行和测试
  9. 摄像头云台的设计,组装与使用方法
  10. Oracle 日志解析ogg,对一段OracleGoldenGate(OGG)传输进程日志(.rpt文件)的解释
  11. 提取Redis事件机制源码为我所用
  12. 1.Linux中超频及cpufreq相关汇总
  13. 手机号验证 199号码等
  14. python删除文本末尾所有空行
  15. 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总
  16. mysql缓存优化,MySQL优化步骤及my.cnf缓存优化
  17. 采用以太坊智能合约技术的报名系统源码
  18. VBA操作Excel之获取单元格区域
  19. 关于二极管与三极管的理解——模拟电路基础
  20. Linux驱动——mmc sd card 块设备读写流程(十三)

热门文章

  1. 汉字拼音相互转化(QT)
  2. openssl计算证书hash
  3. 李峋同款爱心Python代码版来了
  4. 自考计算机原理知识点,(完整版)18版自考04741《计算机网络原理》知识点——第一章...
  5. 服务器带宽和家用宽带的区别?
  6. 小白入门编程heiio world,来一名计算机自考生
  7. 安徽省职称计算机英语考试,安徽省职称英语和计算机应用能力考试政策调整通知...
  8. layui中的onevent 和event使用方法
  9. SUSE Linux Enterprise 11 SP4系统安装步骤 字符界面
  10. 用555定时器接成的施密特触发器电路/滞回电压比较器中,用什么方法能调节回差电压的大小?包含工作原理与应用