当知识图谱遇上推荐系统之MKR模型(论文笔记三)

Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation

类别:交替学习

将知识图谱特征学习和推荐算法视为两个分离但又相关的任务,使用多任务学习的框架进行交替学习。
在这里插入图片描述

1、背景

MKR是一个通用的、端对端的深度推荐框架,旨在利用知识图谱嵌入(KGE)去协助推荐任务。两个任务是相互独立的,但是由于RS中的item和KG中的entity相互联系而高度相关。整个框架可以通过交替优化两个任务来被训练,赋予了MKR在真实推荐场景中高度的灵活性和适应性。

2、问题制定

M个用户的集合 U = { u1 ,u2 ,…,uM }
N个项的集合 V = { v1 ,v2 ,…,vN }
用户-项交互矩阵 Y ∈ RM*N , yuv = 1 表示用户u参与过项v,yuv = 0 表示用户u没有参与过项v
知识图谱 G = { (h, r, t) | h, t ∈ E , r ∈ R}
Note:在许多推荐场景中,项 v ∈ V 可能和一个或多个G中的 entity相关

问题描述:给定用户-项交互矩阵Y和知识图谱G,我们要预测的是,用户 u 是否会对之前没有交互过的项v感兴趣 。
预测函数:yˆuv =F(u,v|Θ,Y,G)

3、模型框架

MKR由三个主要部分组成:推荐模块、KGE模块、交叉压缩单元。
左侧的推荐模块:将一个user和item作为输入,使用多层感知器(MLP)和交叉压缩单元分别提取user和item的特征,提取出的特征再一起送入另一个多层感知器,输入预测可能性。
右侧的KGE模块:将一个head和relation作为输入,使用多层感知器(MLP)和交叉压缩单元分别提取head和relation的特征,使用head和relation计算出预测tail的表示,然后使用函数f计算预测tail和实际tail的相似度,作为KGE链路预测的能力分数。
中间的交叉压缩单元:是将推荐模块和KGE模块连接起来的关键,这个单元可以自动的学习RS中item和KG中entity的高阶交互特征。
在这里插入图片描述

3.1 交叉压缩单元 Cross&compress Unit

交叉特征共享单元是一个可以让两个任务交换信息的模块。由于物品向量和实体向量实际上是对同一个对象的两种描述,他们之间的信息交叉共享可以让两者都获得来自对方的额外信息,从而弥补了自身的信息稀疏性的不足,其结构如下:
在这里插入图片描述

  1. cross operation:构造vl ∈ Rd和el ∈ Rd的 d*d 的 pairwise interaction
    在这里插入图片描述
  2. compress operation:wl ∈ Rd和 bl ∈ Rd 是训练权重和偏差向量,权重向量将交叉特征矩阵从Rd*d压缩为Rd
    在这里插入图片描述
    为了简洁,将交叉压缩压缩单元如下表示:
    在这里插入图片描述

3.2 推荐模块 Recommendation Modul

向量uv分别表示用户u和项v,uv可以基于应用场景用one-hot ID, attributes, bag-of-words,或者他们的结合来刻画。

  1. 给定用户u的原始特征向量u,使用L层的多层感知器MLP提取用户的潜在浓缩的特征:
    在这里插入图片描述
    其中M是全连接神经网络层:
    在这里插入图片描述
  2. 对于项 v 使用 L 个交叉压缩单元提取他的特征(其中S(v)是与项v相关的实体):
    在这里插入图片描述
  3. 推荐系统模块是点击率预估模型:得到user特征向量和item特征向量后,通过向量内积或MLP可计算用户u参与项v的可能性:
    在这里插入图片描述

3.3 知识图谱表示模块 KGE Modul

KGE是将entity和relation映射到连续的低维向量空间同时保留他们原来的空间结构。
KGE模型有:distance-based translational method 、semantic-based matching method
作者提出的:deep semantic matching architecture

  1. 对于给定的知识三元组(h, r, t),利用交叉压缩单元和多层感知器分别从原始的head h 和 relation r 提取特征。将head和relation对应的向量进行拼接,经过多层神经网络,得到一个tail对应向量的预估值 t^ (其中S(h)是和实体h的关联项合集):
    在这里插入图片描述
  2. 知识图谱特征学习模块希望预测得到的tail向量和真实的tail向量相近:最后三元组(h,r,t)的分数由相似度函数fKG计算得到,fKG函数可以是t和t^的内积之后取sigmoid:
    在这里插入图片描述

3.5 学习算法 Learning Algorithm

完整的损失函数如下:

第一项测量的是推荐模块的交叉熵损失,其中u和v便利users和items集合。
第二项测量的是KGE模块的损失,旨在增加增加正确三元组的得分,减少错误三元组的得分。
第三项是正则项,防止过拟合。
lambda1 和 lambda2 是平衡常数。
在这里插入图片描述

学习算法如下:

在每次的训练迭代中包含两个阶段:推荐任务和KGE任务
在每次的迭代中我们先重复训练推荐任务 t 次,再训练KGE任务1次,因为我们更加关注提升推荐的性能。
在这里插入图片描述

4、理论分析

4.1 多项式逼近 Polynomial Approximation

在一定平滑假设下任何函数可以被多项式逼近到任意精度。因此,我们研究交叉压缩单元的高阶交互近似能力。证明交叉压缩单元可以模拟item-entity特征交互的阶数到指数级。
在这里插入图片描述
理论1的证明:
在这里插入图片描述

4.2 因子分解机 Factorization machines

在这里插入图片描述

4.3 深度交叉网络 Deep&Cross Network

在这里插入图片描述

  1. Embedding and Stacking Layer
    考虑到具有离散连续特征的输入数据
    embedding
    对于离散的特性,比如:类别,通常使用one-hot编码,但会导致维度过高,所以用Embedding来大大的降低输入的维度。 Embedding操作其实就是用一个矩阵和one-hot之后的向量相乘,这个Embedding矩阵跟网络中的其他参数是一样的,是需要随着网络一起学习的。
    在这里插入图片描述stacking
    处理完离散型特征后,将其与连续性特征堆叠在一起作为输入数据。
    在这里插入图片描述
  2. Cross Network
    交叉网络的核心思想是以有效的方式应用显式特征交叉。交叉网络由交叉层组成,每个层具有以下公式:
    在这里插入图片描述
    针对一个交叉层可视化如下:
    在这里插入图片描述
    可以看到,交叉网络的特殊结构使交叉特征的程度随着层深度的增加而增大。多项式的最高程度(就输入X0而言)为L层交叉网络L + 1。如果用Lc表示交叉层数,d表示输入维度。然后,参数的数量参与跨网络参数为:d * Lc * 2 (w和b)。
    正是因为cross network的参数比较少导致它的表达能力受限,为了能够学习高度非线性的组合特征,DCN并行的引入了Deep Network。
  3. Deep Network
    深度网络就是一个全连接的前馈神经网络,每个深度层具有如下公式:
    在这里插入图片描述
  4. Combination Layer
    链接层将两个并行网络的输出连接起来,经过一层全链接层得到输出:
    在这里插入图片描述
联系如下:

在这里插入图片描述

4.4 十字绣网络 Cross-stitch Networks

在这里插入图片描述

5、MKR模型tensorflow实现

参考代码地址为:https://github.com/hwwang55/MKR

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于话题演化关系网络生成的路线思考:从话题聚类到话题网络展示

话题演化关系网络生成,是实现事件演化追踪的一个重要方法。通过对文本话题进行聚类、内容处理、话题演化关联、话题演化网络的展示,能够在一定程度上为用户揭示出一个事件发展的情况。本文就笔者对该方向的实现路线思考进行总结,分享给大家。…

综述 | 事件抽取及推理 (下)

本文转载在公众号:知识工场 。 上篇事件抽取及推理的推文已经介绍了事件抽取的基本方法,本篇主要介绍事件推理的相关工作。就目前来看,事件方向相关的研究还是以事件抽取为主流任务,当前大多都是在模型的框架和优化方面进行研究。…

Redis系列教程(三):如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题

Java相关的面试都会问到缓存的问题:史上最全Redis面试49题(含答案):哨兵复制事务集群持久化等,除此之外还会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等不常见的问题,但却是非常重要的问题,今…

随机森林:提供银行精准营销解决方案

原文地址:https://blog.csdn.net/weixin_34233679/article/details/88480912 本例是根据科赛网练习赛进行练手,学习巩固一下随机森林建模以及应用。 赛题描述本练习赛的数据,选自UCI机器学习库中的「银行营销数据集(Bank Marketing Data Set)…

谁说2021届秋招算法岗一定要灰飞烟灭啦?

没错,这是一碗鸡汤,希望肝完这碗鸡汤的师弟师妹们就不要过度焦虑啦~理性上车,理性下车,希望萌新们都能遇到最适合自己的坑位2014年末入坑AI,一路见证了AI行业的快速起飞、爆炸、焦虑和冷却。小夕前几天在知…

论文浅尝 | 基于深度强化学习的远程监督数据集的降噪

论文链接:https://arxiv.org/pdf/1805.09927.pdf来源:ACL2018Motivation:远程监督是以一种生成关系抽取训练样本的方法,无需人工标注数据。但是远程监督引入了噪音,即存在很多的假正例。本文的出发点非常简单&#xff…

字符串匹配算法(AC自动机 Aho-Corasick)

文章目录1. 多模式串匹配2. 经典多模式串匹配--AC自动机2.1 AC自动机构建2.2 在AC自动机上匹配主串2.3 复杂度分析3. python包1. 多模式串匹配 前面学的BF、RK、BM、KMP都是单模式串匹配算法(一个模式串,一个主串)多模式串匹配,即…

Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别

前一篇文章高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了。 谈到Redis服务器的高可用,如何保证备份的机器…

论文浅尝 | 区分概念和实例的知识图谱嵌入方法

链接:https://arxiv.org/pdf/1811.04588.pdf知识图谱的表示学习最近几年被广泛研究,表示学习的结果对知识图谱补全和信息抽取都有很大帮助。本文提出了一种新的区分概念和实例的知识图谱表示学习方法,将上下位关系与普通的关系做了区分&#…

写在校招季,谈谈机器学习岗的Offer选择问题

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 吴海波 现在校招开始的越来越早,今年的实习生招聘还是异常火爆,简历一堆,而且是越来越没有区分度,以前面个xgboost的论文细节,就能区分很多人&…

Redis系列教程(六):Redis缓存和MySQL数据一致性方案详解

需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 这个业务场景,主要是解决读数据从Redis缓存…

贪心算法(Greedy Algorithm)之霍夫曼编码

文章目录1. 贪心算法2. 应用2.1 找零钱2.2 区间覆盖2.3 霍夫曼编码霍夫曼编码完整代码1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解每次都在当前的标准下做出当下最优决策(整体不一定最优),做出的决策不可以后悔&…

数据结构中基本查找算法总结

原文地址:https://www.cnblogs.com/xuzhp/p/4638937.html 基本查找算法 一、查找的基本概念 查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。 二、顺序查找 针对无序序列的一种最简单的查找方式…

领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践

本文转载自公众号:美团技术团队。 本文介绍了大众点评搜索核心排序层模型的演化之路,包括结合知识图谱信息构建适合搜索场景的Listwise深度学习排序模型LambdaDNN以及特征工程实践和相关工具建设。1. 引言挑战与思路搜索是大众点评App上用户进行信息查…

KDD2020 | 揭秘Facebook搜索中的语义检索技术

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 江城编 | 可盐可甜兔子酱导读:今天分享一下 Facebook 发表在 KDD2020 的一篇关于社交网络搜索中的 embedding 检索问题的工作,干货很多,推荐一读。论文题目&#xff1…

Redis系列教程(八):分布式锁的由来、及Redis分布式锁的实现详解

在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?今天来探讨分布式锁这个话题。 什么是…

技术交流:老刘说NLP技术公众号开通

我有一个念想:在当今PR文章满天飞的背景下,我们能够保持人间清醒,对NLP技术有客观、公正的了解,并实事求是地进行技术实践和知识共享。老刘说NLP,将定期发布更多、更简单、更有趣的语言知识、想法、笔记,包…

POJ 2453 贪心应用

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. Accepted 代码1. 题目 1.1 题目链接 http://poj.org/problem?id2453 1.2 题目大意 一个数x的二进制表示有n个1,求一个有相同个数1的二进制数(比x大,且要最小的) 1.3…

ICML2020 | 一行代码就能实现的测试集上分技巧

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 苏剑林编 | 夕小瑶在训练模型的时候,我们需要损失函数一直训练到0吗?显然不用。一般来说,我们是用训练集来训练模型,但希望的是验证集的损失越小越好&…

Redis系列教程(七):Redis并发竞争key的解决方案详解

Redis高并发的问题 Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题: 高并发架构系列:Redis缓存和MySQL数据一致性方案详解 如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难…