2016的paper
利用知识库中的异构信息来提高推荐系统质量。主要贡献是在推荐系统中引入了结构信息、文本数据、图像数据等知识库中的信息来提升推荐系统的质量。
论文是基于什么问题提出来的?
CF(协同过滤)方法由于user-item矩阵的稀疏性,效果受限。
论文提出了什么方法
使用辅助信息提高性能。
具体来说是 利用了知识库中的异构信息来提高推荐系统的质量,给定结构信息,文本信息,视觉信息的知识库以及user的隐式反馈,产生一个用户感兴趣的ranked list。
本文设计了三个组件:结构内容、文本内容和视觉内容。
隐式反馈(user implicit feedback):
有交互为1,没有交互或者不知道为0.(注意,为1不表示用户实际上喜欢,只能说对它感兴趣。为0只能说不感兴趣或者是潜在交互(用户不知道这些内容),不代表不喜欢。)
知识库(knowledge base)
- 结构信息:实体和实体之间的联系
- 文本信息:电影或书本的文本信息
- 视觉信息:封面海报之类的
结构特征:用户隐式反馈和结构信息
内容特征:文本和视觉信息
OverView
CKE模型包含两个步骤:
- 知识库嵌入(knowledge base embedding)
- 协作联合学习(collaborative joint learning)
Structural Embedding
具体来说,就是采用了异构网络嵌入的方法,称为TransR(2015 AAAI),通过考虑节点和关系的异构型来提取项目的结构表示。
结构化信息表现为一个network,因为一个实体有很多个实体相连,需要把这个网络映射到向量空间。
TransR
通过关系矩阵来链接不同语义空间。
以这种方式训练表征向量:
- 通过将实体映射到关系空间中
- 在两个投影实体之间构建翻译关系
对于每个关系,有一个变换矩阵Mr和一个它在自己的关系空间的表示向量r。通过变换矩阵将entities从实体空间投影到关系空间。
目标函数
加入贝叶斯先验之后的TransR生成过程:
这里的话就是使参数符合特定的正太分布(下同)
那慕达是调整正太分布里 瘦胖 的参数
Textual Embedding
堆叠去噪自动编码器(SDAE)
https://blog.csdn.net/zbzcDZF/article/details/86570761
https://www.cnblogs.com/neopenx/p/4370350.html
Wl是权重参数,bl是偏差参数
SDAE总共6层,前三层位置是Encoder部分(1-3),X0表示的是带有噪音的矩阵
后三层是Decoder部分(3-6),X6是无噪音的输出矩阵。
引入贝叶斯SDAE:
Visual Embedding
堆叠卷积自动编码器(SCAE)
Encoder 由两个卷积层(z0到z2)和一个完全连接层(z2到z3)组成。
Decoder又一个完全连接层(z3到z4)和两个解卷积层(z4到z6)组成。
中间隐藏层z3输出的使一个矩阵,其他层的输出通常称为特征映射,它是由卷积层生成的四维张量。
卷积层映射如下:
Q*表示卷积算子,用来保持先前输出的局部连通性(?)
引入贝叶斯SCAE:
Collaborative joint learning
将协同过滤(collaborative filtering)与知识库中的items embedding结合。在CKE框架中,提出了协作联合学习过程。
为同时获取协同过滤中的item的潜在表示和知识库中的representation,有
其中,η代表CF中的物品隐含含量。其他三个分别代表从知识库提取出来的特征。
再使用pair-wise 偏好概率表示,有
这个式子意思是对于用户i来说,相比j',更喜欢j物品。θ表示模型参数。
参数学习,最大对数似然函数
论文中使用了随机梯度下降(SGD)算法,最大化等式7.
损失函数第二块:个人感觉是对文本embedding的正则化,防止过拟合。
Experiments
两个不同领域的数据集(电影和书籍)
- MovieLens-1M:有100w名用户和3706部电影组成。
- IntentBooks:微软Bing搜索引擎和Satori知识库组成。
“#sk nodes”表示提取结构信息中的节点总数
“#tk items”表示具有文本信息的items总数
“#vk items”表示具有视觉信息的items总数
实验总结:CKE(S)、CKE(T)、CKE(V)分别表示只用Structure,Texture或Visual的CKE模型
- CKE(S)、CKE(T)、CKE(V)都能beat掉baseline
- 相较CKE(S)、CKE(T)、CKE(V)提升的效果没有CKE(S)好,不过也是可以beat掉baseline
- CKE(STV)效果最好