CDL(协同深度学习)——一种基于深度学习的推荐系统

来源:互联网 发布:mac接外置光驱不能读取 编辑:程序博客网 时间:2024/05/16 18:17

        此文实际上是读论文《Collaborative Deep Learning for RecommenderSystem》的读书笔记。这一篇论文出自香港理工大学王灏博士,论文讲了一种紧耦合的混合式推荐算法。主要是栈式自编码器sdae和CTR通过贝叶斯图方式结合。

1.      概述

        当前推荐算法主要是基于内容(CB)、协同过滤(CF)、混合算法。基于内容的推荐依靠用户profile和item的描述做推荐。CF基于过去的的表现和行为推荐。由于种种原因,收集过去的行为比收集用户画像要容易,但CF又有他的局限性,当打分(rating)很稀疏时,预测精度会下降很厉害,同时,新产品的冷启动也是CF的问题。因此,近年来,混合方法应用比较广。

        混合方法又分两种:松耦合方式、紧耦合方式。松耦合方式先处理辅助信息,然后,用它为CF提供特征。由于信息的流向是单向的,打分信息无法反馈回来去提取有用的特征。这种方式下,为了提升性能,通常依赖人工提取特征。紧耦合方式,两种方法相互影响,一方面,打分信息指导特征的提取,另一方面,提取出来的特征进一步促进CF的预测能力(例如,稀疏打分矩阵的矩阵因式分解)。两方面的相互影响,使得紧耦合方式可以从辅助信息中自动学习特征,并且能平衡打分信息和辅助信息的影响。这也是紧耦合方法比松耦合方法表现更好的原因。

        协同话题回归(CTR)是当下被推崇的紧耦合方法。它是一个整合了Topic model,LDA,CF,概率矩阵分解(PMF)的概率图模型。

CTR能生成可靠,且可判断的结果,即是辅助信息很松散也不会影响结果。

论文讲述了一种多层贝叶斯模型(hierarchical Bayesian model)叫协同深度学习(CDL)。实际上CDL就是把CRT模型和深度学习模型SDAE集合起来,形成一个多层贝叶斯模型。作者用贝叶斯法则表征栈式自编码器(sdae),用深度学习的方式表示content information和rating matrix,使两者双向相互影响。

SDAE在CDL中用于学习特征,实际上更多的深度学习模型可以用进来,如Deep Boltzmann machines,RNN, CNN.


2.   论文要点

(1).   CDL可抽取content的深度特征,并捕获content或者user的相似度。这种学习方式不仅可以用于推荐,也可以用于别的地方。

(2).   学习目标不是简单的分类或者reconstruction,本文的目标是通过概率框架用CF做一个更复杂的目标。

(3).   用了最大后验估计(MAP),CDL贝叶斯法则的抽样,贝叶斯版本的反向传播。

(4).   用贝叶斯模型连接DL和RS。


3.  模型推导

        模型如图1, 下图中,矩阵Xc扮演的角色是SDAE干净的输入,X0作为加入了噪声的输入矩阵,X1至Xl表示sdae中间各层。SDAE的输出层是Xl,W+是W和b表示权重和偏执。

图1


 

左边的贝叶斯图的目的是通过内容生成V矩阵,用户信息生成u矩阵,然后通过v和u生成user-item的关联打分矩阵R。这其实就是普通的推荐方法,只是这里,内容通过sdae自动提取特征,这些特征作用于v矩阵。具体推导过程如下:

(1). Sdae在前面的文章中已经写过了,这里不赘述。它的优化目标:

图2

2. 推广Bayesian SDAE,其中,干净输入Xc和噪声X0都是可观察的。

图3

趋近于无穷大时,式(1)中的高斯分布变成Dirac delta分布中心点在,其中,是sigmoid函数。模型会退化成一个SDAE高斯公式。因此,我们叫他推广Bayesian SDAE.

要注意的是前L/2 层网络扮演encoder,后L/2层网络扮演decoder。当权重延迟纳入考虑,最大后验概率等同于最小化重建误差。

 

3. CDL

用Bayesian SDAE作为成分,组成CDL的过程如下:

图4

是寄生参数,Cij是置信度参数。中间层充当rating和content的桥梁。带有主题偏执的中间层是开启学习特征和捕获相似度的钥匙。如同推广SDAE中,这里也可以让趋于无穷大。

趋近于正无穷,CDL的网络就如上面的图1所示。


4.  最大后验估计

基于CDL,所有参数可以被看做随机变量,fully Bayesian方法,例如,markov chain Monte Carlo 等可以用到这里,只是这些的计算代价比较高。综合考虑,EM-style法则用于获得MAP估计。

最大后验概率等同于给出后对U、V、做大对数似然估计:

图5.


其中,encoder函数表示为,以加入噪音的内容向量为输入计算item的encoding,函数也是以为输入,计算encoding,然后重建item向量。如果网络有6层的话,是第3层的输出,是第6层的输出。

从优化来看,当公式(2)的第4项等于SDAE最小化重建误差时,第3项等同于一个以主题item向量Vj为目标的多层感知机。当趋于正无穷大时,训练图1可以分裂成训练2个相似的神经网络,这两个网络有公共的输入,但输出不同。这样,网络可以演化成图6所示的网络,第一个网络输出干净数据,第二个网络输出item的打分矩阵。

图6

比率有两种极端,(1)当这个比率趋近于正无穷时,整个系统将退化成一个两步式的模型,在这个模型中SDAE学习到的主题表示会直接被放入CTR中。(2)当比率趋近于0时,SDAE的decoder部分将消失,整个系统变成图7所示的图模型。

图7

当U和V给定,用反向传播方式学习每层的W和b。W和b的梯度表示如下:

图8


0 0
原创粉丝点击