知识图谱手段增强的推荐系统
经典协同过滤
假设行为相似的用户有着相似的偏好,根据大量用户user的行为反馈识别用户群体的感兴趣的内容item并推荐,通常使用用户内容矩阵(User-Item Interaction Matrix)来表示。
显式反馈(打分)
能够明确反应出用户对内容的喜好程度,但数据获取难度高,数据量小。
隐式反馈(点击)
数据获取难度低,但点击不意味用户一定喜欢,需要大量数据支撑。
算法思想
- 根据已有的用户历史行为数据,计算U4与其他用户的相似度;
- 预测U4对i1的喜欢程度,是将U4与其他用户的相似度作为权重,计算其它用户对i1的喜欢程度的加权平均;
存在的问题
- 矩阵稀疏:用非常少的数据预测,非常容易过拟合;
- 冷启动:因为新用户或新内容没有历史数据,故无法针对新用户或新产品进行推荐;
知识图谱辅助的推荐系统
王鸿伟 博士后 斯坦福大学
主页:https://hongweiw.net
源码:https://github.com/hwwang55
针对协同过滤因为单纯依靠用户历史数据而存在的问题,需要考虑引入领域知识增强推荐系统+领域知识举例:
- 关系网络:如用户的社交网络;
- 属性信息:用户、产品的属性;
- 多模态:比如文本、图片、音视频等;
- 上下文:比如用户点击时的时间、地点、网络等状态;
知识图谱模型
知识图谱是一种有向异构图,其三元组结构(head、relation、tail)组成的实体及其关系,可以提供辅助信息。
上面的三元组例子中,Forrest Gump是要推荐的内容,其它信息都是知识图谱中查到的这条内容的辅助信息。
Q1:知识图谱能做什么?
案例一:根据知识图谱关联的同staff信息推荐相似电影
案例二:根据关键词关联关系推荐相似新闻
知识图谱可以帮助推荐系统引入某领域内的知识,根据领域知识联想相关信息,将这些信息重组,检索得到类似的新闻。
Q2:如何构建知识图谱?
图向量模型
图向量模型又称为图嵌入模型(Knowledge Graph Embedding),其目标是学习得到每个实体和关系的低维表征向量(类似词嵌入模型)。
Translational Distance Model
将关系视为从Head到Tail的翻译过程。
- TransE:将关系视为从到的翻译过程,即 与 的距离: 应该足够小。
- TransH:将 和 投影到 得到 和 后计算距离
- TransR:将 和 映射到特定的关系空间得到 和 后计算距离
问题定义
我们有:
- 用户
- 内容
- 用户与内容存在关联(点击、订阅等)
- 领域知识图谱
目标:实现一个能够预测用户对内容的点击概率,要求结合用户行为与领域知识。
解决方法
Embedding-based Method
用图向量的方法处理知识图谱,然后将4种向量经过某种模型实现融合。
Deep Knowledge-aware Networks
H.Wang 于 2018 发表在WWW,用于新闻推荐。
知识蒸馏
知识蒸馏(knowledge distillation),大致步骤如下:
- 从新闻语料提取实体;
- 从知识图谱中提取出这些实体相关的子图;
- 计算子图的图向量,从而得到实体的向量表达;
上下文向量
将实体向外扩展一跳的邻居实体嵌入求平均得到上下文。
Kim CNN
计算一句话的向量
Knowledge-Aware CNN
将Kim CNN扩展的输入矩阵扩展为“3通道”:
- 词向量(word embedding)
- 实体向量(entity embedding):如果某个词对应知识图谱的一个实体,就能够获取该实体对应的向量,否则用0补充;
- 上下文向量(context embedding):如果某个词对应知识图谱的一个实体,就能够获取该实体的上下文向量,否则用0补充;
给一段文字描述,通过Knowledge-aware CNN模型就可以学到新闻标题的embedding。
Attention-Based User Interest Extraction
任务:给定用户历史上点击过的内容(以下称历史内容)以及一条新的待推荐内容(以下称候选内容),判断用户是否对这条候选内容感兴趣;
计算流程如下:
-
计算每条内容的embedding
-
用Attention Network计算历史内容与候选内容的重要程度
- 拼接候选内容与历史内容
- 通过一个DNN计算得到权重系数
-
用权重系数对每条历史内容加权得到用户的向量表达(user embedding)
-
拼接候选内容与用户的向量表达
-
通过另一个DNN得到用户想看该候选内容的概率
数据集:Bing News
平均每个标题中得到的实体个数有3.7个,质量算比较高的。
Multi-Task Feature Learning for KG-Enhanced RS
H. Wang 于2019年发表在WWW
模型框架
- 左边用来预测用户点击某条内容的概率
- 右边是知识图谱的向量表达
- 两边存在某种关系,比如待推荐的内容可能就是知识图谱的某个实体
- 因此这里用cross&compress units建立内容与实体的关联
Cross&Compress Unit
Structure-based Method
整合图结构信息
RippleNet: Propagating User Preference in KGs
H. Wang 于2018发表在CIKM
假设:用户对某条内容感兴趣,同时也对该内容在周围的实体感兴趣。
模型框架
输入:用户和内容
输出:用户对内容感兴趣的概率
计算过程:
- 获取一个用户点击过的内容节点(对应上图知识图谱发亮的两个节点)作为起点;
- 从内容节点出发,沿着知识图谱的关系向外传播,计算某个内容节点与其1阶邻居节点的相关概率;
- 对周边节点加权平均,计算用户对其1阶邻居节点的兴趣向量;
- 重复2、3步,得到用户对所有内容的兴趣向量;
- 将兴趣向量求和作为用户兴趣向量;
- 对用户兴趣向量和候选内容求内积,得到用户对候选内容的点击概率;
优化目标:给定知识图谱和用户-内容矩阵,优化推荐模型参数:
贝叶斯定理
其中,设定先验为高斯分布:
似然:给定参数,知识图谱中每个三元组似然概率(高斯分布)的乘积:
似然:给定参数、知识图谱,计算用户-内容矩阵的似然概率(伯努利分布):
损失函数:
Knowledge Graph Convolutional Networks
"Knowledge Graph Convolutional Networks for Recommender Systems" H. Wang 于2019年发表在WWW
"Knowldge-aware Graph Neural Networks with Label Smoothness regularization for Recommender syustems" H. Wang 于2019年发表在KDD
Relation Scoring Function
- 将知识图谱用带权图表示(比如邻接矩阵);
- 知识图谱中的边没有显式的权重;
- 引入关系打分函数:计算给定用户对外关系的重要程度,得到用户-关系的邻接矩阵;
Lay-wise Forward Propagation
使用GCN计算每个实体的表征:
是需要学习的参数矩阵
最后用sigmoid函数归一化,得到表示下一层的实体表达矩阵。
预测用户喜欢内容的概率:
- -- 用户向量;
- -- KGNN最后一层的实体向量;
- -- MLP, 内积等等。
方法对比
性能
KGCN (2019.08) > MKR (2019.05) > RippleNet (2018.10) > DKN (2018.04)
实际性能取决于不同的数据集;
可扩展性
Embedding-based Method > Structure-based Method: KG一般变动比较小,其 embedding 是可复用的,但如果要新增某些节点或关系,图对结构的改动就要重新进行端到端的训练。
可解释性
Structure-based Method > Embedding-based Method
显然图结构比向量更加直观。
总结
- 知识图谱可作为推荐系统新的辅助信息(new type of side information)
- 用于解决数据稀疏以及冷启动问题;
- 提升准确性、多样性以及可解释性;
- Embedding-based methods
- DKN:用于新闻推荐;
- MKR:融合RS与KGE的多任务学习;
- Structure-based Methods
- RippleNet:在KG上传播用户的喜好;
- KGCN:在KG上使用GCN传播相邻实体信息;
- 与阿里 DIN 的比较:DIN使用了attention-based method,而这里引入了KG;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)