智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)

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

【再啰嗦一下】如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演变及学习笔记

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

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

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

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

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与部分物品在知识图谱的关联图示

    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等)

 

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

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版本

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

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: 我的博客写作思路

posted @ 2020-05-09 12:59  FinTecher  阅读(10703)  评论(2编辑  收藏  举报