基于图模型的智能推荐算法学习笔记(含知识图谱/图神经网络,不止于智能推荐)

【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。如下内容仅为我的看法,欢迎批评指正,不喜勿喷![握手][握手]html

【再啰嗦一下】若是你对智能推荐感兴趣,欢迎先浏览个人另外一篇随笔:智能推荐算法演变及学习笔记python

【最后再说一下】本文只对智能推荐算法中的基于图模型的智能推荐进行具体介绍!web

1、基于知识图谱的智能推荐

以知识图谱做为边信息生成推荐的价值在于:一方面能够提供更准确的推荐;另外一方面能够对推荐结果进行解释。面试

知识图谱由实体和关系组成(以电影推荐为例):实体(用户、电影、演员、导演和类型);关系(交互、归属、表演、导演和友谊)。算法

1. 基于embedding的方法

基本思想:将知识图谱中的节点和边在低维向量空间中获得嵌入表示(Knowledge Graph Embedding,KGE),利用知识图谱丰富item/user的表示。网络

1.1 KGE算法分类

  • 基于翻译距离的模型(例如TransE、TransH、TransR、TransD等):追求h + r = t

  • 基于语义匹配的模型(例如RESCAL、DistMult、HolE、SME、NTN、MLP、NAM等):将h/r/t输入到网络中进行训练学习

1.2 基于embedding的方法分类(根据知识图谱中是否包含user)

  • 使用item graph(即知识图谱仅由item和相关feature构成):表明方法有CKE、DKN、KSR等
    • 首先利用KGE算法生成item embedding;
    • 而后结合item的文本/视觉特征、user-item交互矩阵等信息构成完整的item表示;
    • 最后再单独计算user表示和得分函数。

  • 使用user-item graph(即知识图谱由user、item和相关feature构成):表明方法有CFKG、SHINE、DKFM等
    • 先用KGE算法将user和item嵌入到同一贯量空间;
    • 再经过计算user和item的距离直接获得得分函数的值。
  • 将KGE算法与GAN、贝叶斯框架结合:表明方法有KTGAN、BEM等
  • 使用多任务学习策略联合训练推荐模块与其余任务:表明方法有KTUP、MKR、RCF等

基于embedding的方法忽略了图中的信息连通模式,一般没法为推荐结果提供解释。并发

2. 基于path的方法

基本思想:将知识图谱视为一个异构信息网络(user-item),考虑到user、item的连通类似性(语义类似性/结构对等性),进而提高推荐效果。其中,连通类似性的定义依赖meta-path结构(meta-path是链接两个实体的一条特定的路径)。框架

2.1 基于path的方法分类(根据对path的不一样利用方式)

  • 基于path计算连通类似度,并做为正则项优化user、item的表示。
    • path能够预先指定(表明方法有Hete-MF、Hete-CF、HeteRec、HeteRec-p、FMG、SemRec等)
    • path能够借助外部知识库学习获得(表明方法有RuleRec等)
  • 将全部/部分可能的path嵌入到低维空间,与user、item的表示共同训练,并发现对推荐影响最显著的path(链接模式)。
    • 表明性方法有MCRec、RKGE、KPRN、PGPR等

    用户Alice与部分物品在知识图谱的关联图示dom

    KPRN模型图示机器学习

基于path的方法有天生的可解释性,但早期的方法没有结合embedding的思想,对user/item的表示较为简单,准确性仍有提高空间。

3. 联合方法

基本思想:利用嵌入传播(常使用GNN)完善user、item在知识图谱中有多跳邻居的表示。其中,传播过程能够看做是在知识图谱中发现user的偏好模式,相似于在基于path的方法中发现链接模式。

3.1 联合方法分类(根据知识图谱中是否包含user)

  • 使用item graph
    • 基于user波纹集传播user偏好,模拟用户兴趣在知识图谱上的传播过程,提高user表示能力(表明方法有RippleNet、AKUPM等)
    • 基于K阶邻居(实体波纹集)传播item属性,丰富item表示(表明方法有KGCN等)
  • 使用user-item graph
    • 考虑user和item的高阶交互,同时加强user和item的表示(表明方法有KGAT、KNI、IntentGC等)

联合方法结合了基于embedding和基于path的方法,兼具准确性和可解释性,逐渐成为知识图谱推荐算法的主流方法。

 

 *在表格中,Emb表明基于嵌入的方法,Uni表明统一方法,Att’表明注意力机制,‘RL’表明强化学习,‘AE’表明自动编码器,‘MF’表明矩阵分解。

4. 结合知识图谱特征学习的推荐系统分类

前面三节是以核心技术的角度来分类,本节以训练学习的角度来分类。(分类角度不一样而已,助于理解)

4.1 依次训练学习(例如DKN等)

4.2 联合训练学习(例如CKE、Ripple Network等)

4.3 交替训练学习(例如MKR等)

 

2、基于图网络的智能推荐(写完发现等于介绍了一遍图网络!)

1. 知识图谱表示学习KGE与图网络表示学习的异同点

  • 知识图谱表示学习中经常提到的一个概念就是三元组(头实体,关系,尾实体),但图网络表示学习中没有这个概念,对全部结点是一视同仁的。
  • 知识图谱表示学习强调节点之间的关系表示,图网络表示学习强调节点的结构表示。(后来引入path的知识图谱必定层面上是在考虑图网络的结构)
  • 知识图谱表示学习方法和图网络表示学习方法都是受word2vec启发衍生出来的。
    • 知识图谱表示学习启发于word2vec向量之间存在的关联性
    • 图网络表示学习启发于word2vec由中心词预测上下文的文本处理方式

  • 二者能够相互借鉴,例如将random walk思想应用于知识图谱,将Trans思想应用于网络表示。

2. 图网络表示学习(network representation/embedding)

  • 基于矩阵分解的模型,好比SVD分解等
  • 基于随机游走的模型,好比DeepWalk、Node2vec等

DeepWalk的主要思想是在由物品组成的图结构上进行随机游走,产生大量物品序列,而后将这些物品序列做为训练样本输入word2vec进行训练,获得物品的embedding。

在DeepWalk的基础上,经过调整随机游走权重的方法,使embedding的结果在网络的同质性结构性中进行权衡。

其中,网络的“同质性”指的是距离相近节点的embedding应该尽可能近似,“结构性”指的是结构上类似的节点的embedding应该尽可能接近。

  • 基于深度学习的模型(与下文的图神经网络呼应):CNN、RNN、AE、GNN、GCN、结合注意力、结合强化学习、结合GAN等。

3. 图神经网络

3.1 图神经网络GNN

GNN的核心观点:

  • 经过节点信息(部分节点是有标签)的迭代传播使整张图达到收敛
  • 在网络收敛的基础上再进行预测/分类

GNN的局限性:

  • 一是没有区分不一样边的功能
  • 二是节点之间的状态存在较多的信息共享,致使节点的状态太过平滑,而且属于节点自身的特征信息匮乏

GNN的训练学习思路:

  • 有监督:根据节点的标签信息计算损失便可
  • 无监督:使用”相邻节点的编码类似“进行训练

3.2 门控图神经网络GGNN

与GNN核心的不一样在于再也不以不动点理论为基础。

3.3 图卷积神经网络GCN

思考如何解决图中邻居结点数量不固定的问题:

  • 一是提出一种方式把非欧空间转换成欧式空间
  • 二是找到一种能够处理变长邻居节点的卷积核在图上抽取信息

3.4 GraphSage

解决GCN须要存放整张图信息的问题,利用采样部分节点的方式进行学习。

3.5 图注意力网络Graph Attention Network

3.6 异质图神经网络:(与前面基于知识图谱的推荐方法呼应,细品)

3.7 后续还有图神经网络结合聚类、自编码、注意力、强化学习、GAN等

3.8 图神经网络的应用

在nlp、计算机视觉、推荐系统、强化学习、恶意检测、专业领域等都有很大的应用前景。

3.9 四大图神经网络框架

  • deep graph library (DGL):支持pytorch、tensorflow
  • pytorch geometric (PyG):基于pytorch
  • ant graph machine learning system:蚂蚁金服团队推出的大规模图机器学习系统
  • tf_geometric:借鉴pytorch geometric,建立了tensorflow版本

3、知识图谱与图神经网络的相关问题探究

1. 图神经网络是如何处理相似知识图谱的有向异构图的?

  • GCN是谱域的GNN:基于谱图理论,没法自然的处理有向图。
  • GAT是空域的GNN:能够自然的处理有向图,一般定义入度的节点进行聚合。
  • 知识图谱和异质图都有专门设计的GNN:
    • 知识图谱上的GNN关注于了对于不一样关系含义的区别。
    • 异质图上的GNN关注于多种不一样关系的融合来更好的描述节点。

2. 知识图谱与异质信息网络的区别?

  • 通常来讲,知识图谱比异质信息网络包含更多的点和边类型。但并不绝对,这两个定义并无明确的界限,不少时候都是互为替代的。
  • 前文提到,知识图谱强调节点之间的关系表示,图网络强调节点的结构表示。但其实知识图谱中基于path的方法和图网络中基于随机游走采路径的方法基本没有区别。

 

【更新】介绍比较新的一些深度学习推荐模型改进方向:

  • 引入用户行为序列建模(例如TDM/TransRec等)
    • 将用户历史行为看作一个无序集合,对全部embedding取sum、max和各类attention等
    • 将用户历史行为看作一个时间序列,采用RNN/LSTN/GRU等建模
    • 抽取/聚类出用户的多峰兴趣,方法有Capsule等(阿里MIND提出)
    • 根据业务场景的特殊需求,采用其余方法
  • 引入NLP领域知识建模(例如Transformer/BERT等)
  • 多目标优化/多任务学习(例如阿里ESMM/Google MMoE等)
  • 多模态信息融合
  • 长期/短时间兴趣分离(例如SDM等)
  • 结合深度强化学习(例如YouTube推荐/今日头条广告推荐DEAR等)
  • 图神经网络的预训练(即引入迁移学习的思路)
  • ......

 

本文参考了大佬的知乎专栏:https://zhuanlan.zhihu.com/p/112530121

若是你对智能推荐感兴趣,欢迎先浏览个人另外一篇随笔:智能推荐算法演变及学习笔记

若是您对数据挖掘感兴趣,欢迎浏览个人另外一篇博客:数据挖掘比赛/项目全流程介绍

若是您对人工智能算法感兴趣,欢迎浏览个人另外一篇博客:人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)

若是你是计算机专业的应届毕业生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的应届生,你如何准备求职面试?

若是你是计算机专业的本科生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的本科生,你能够选择学习什么?

若是你是计算机专业的研究生,欢迎浏览个人另一篇博客:若是你是一个计算机领域的研究生,你能够选择学习什么?

若是你对金融科技感兴趣,欢迎浏览个人另外一篇博客:若是你想了解金融科技,不妨先了解金融科技有哪些可能?

以后博主将持续分享各大算法的学习思路和学习笔记:hello world: 个人博客写做思路

相关文章
相关标签/搜索