当前位置:网站首页>[论文阅读] KGAT: Knowledge Graph Attention Network for Recommendation
[论文阅读] KGAT: Knowledge Graph Attention Network for Recommendation
2022-07-05 09:46:00 【让我安静会】
原文:https://arxiv.org/pdf/1905.07854.pdf
代码:https://github.com/xiangwang1223/knowledge_graph_attention_network
What: 为了提供更准确、多样化和可解释的建议,必须超越对用户-物品交互的建模,并考虑到附加信息(比如KG)。在本文中,我们研究了知识图(KG)的效用,它通过将项目与其属性联系起来,打破了独立交互假设。(通过将 KG 和user-item graph结合起来,捕捉高维连接)【高维连接:which connect two items with one or multiple linked attributes】
Why: 传统的方法,如因式分解机器(FM)将其视为监督学习问题,它假设每个交互都是一个独立的实例,并对边信息进行编码。由于忽略了实例或物品之间的关系(例如,一部电影的导演也是另一部电影的演员),这些方法不足以从用户的集体行为中提炼出协作信号。(collaborative signal)
How: KGAT递归地从节点的邻居(可以是用户、项目或属性)传播嵌入并聚合,以细化节点的嵌入,并使用注意机制来区分邻居的重要性。
Result
Conclusion
这篇文章强调了协作信号的重要性,并且旨在超越用户-物品交互进行建模,因此考虑加入附加信息;通过将【知识图谱】和【用户-物品交互图】结合起来,得到【协同知识图CKG】,来从中捕捉高维连接、协作信号。具体方法是,通过包含注意力机制的多层嵌入聚合来自一个节点邻居(可以是user、item、attribute),来更新、优化嵌入表示。
Model
作者首先通过例子,说明加入KG之后捕捉高维连接、协作信号的重要性。
协同过滤方法,强调寻找相似用户(共同交互某一item),因此通过i1,u1可以找到u4和u5;监督学习方法,强调寻找相似物品(具有相同属性),因此通过e1,i1找到i2。
上述方法无法找到u1和u2、u3有关,无法找到,u1和i3、i4有关。
1. CKG Embedding Layer
三元组的能量分数(TransR):(分数越低说明置信度越高【两个实体之间更有关系】)其中,
通过成对的排序损失进行优化:
其中,
通过随机替换真实的关系,进行训练。(相当于负采样)
【这一层的目的是学习优化 实体、关系的嵌入表示】相比于直接随机的嵌入表示会更好。
2. Attentive Embedding Propagation Layers
这一层是根据GCN递归的传递嵌入表示;根据GAT得到联级的嵌入表示,强调这种高维连接的重要性。
每一层都包含3个组件:information propagation, knowledge-aware attention, and information aggregation(信息传播、知识感知注意力机制和信息聚合)
信息传播
eh的自我聚合(ego-network):
在实体和其邻居之前进行信息传播。
将实体和其邻居进行聚合,通过线性的衰减系数。
知识感知注意力机制
其中衰减系数为:
使得在关系r的空间中,得到的衰减系数的分数,来源于实体h和实体t之间的关系,对于越近的实体,获得的衰减系数越大,在【信息传播】中,保留的信息就越多。
为了简单起见,使用内积得到衰减系数的分数。
再通过softmax对所有分数进行归一化:
由此得到,在捕捉协同信号、聚合实体邻居的时候,哪些实体被分配更大的分数。
上述式子中,不仅仅有实体表示,还有关系表示。是为了传播中得到更多的信息,不仅仅将节点表示作为输入,还得到实体h和实体t之间的关系表示。
信息聚合
这一层就是把【eh】和【eh的自我聚合(ego-network)】聚合,得到一个新的实体h的表示。
有多种方式:
高维传播
上述过程是一层聚合的完整流程,可以将多层的结果进行堆叠,捕捉高维连接以及higher-order邻居:
每一层的eh表示,通过【上一层的eh表示】和【eh的自我表示】得到。
3. Prediction Layer
通过上面的步骤,可以得到多层的聚合之后的用户表示和物品表示,将多层表示连接起来形成一个用户表示和物品表示:
由此,丰富了用户表示和物品表示。
参考:
- KGAT:Knowledge Graph Attention Network for Recommendation:https://hikg.net/archives/123/
边栏推荐
- Data visualization platform based on template configuration
- Charm of code language
- 剪掉ImageNet 20%数据量,模型性能不下降!Meta斯坦福等提出新方法,用知识蒸馏给数据集瘦身...
- [system design] index monitoring and alarm system
- Analysis on the wallet system architecture of Baidu trading platform
- [NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
- 学习笔记5--高精地图解决方案
- Swift tableview style (I) system basic
- Z-blog template installation and use tutorial
- Baidu app's continuous integration practice based on pipeline as code
猜你喜欢
卷起來,突破35歲焦慮,動畫演示CPU記錄函數調用過程
90%的人都不懂的泛型,泛型的缺陷和应用场景
[technical live broadcast] how to rewrite tdengine code from 0 to 1 with vscode
最全是一次I2C总结
Application of data modeling based on wide table
isEmpty 和 isBlank 的用法区别
双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)
【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB
MySQL字符类型学习笔记
Why don't you recommend using products like mongodb to replace time series databases?
随机推荐
Swift saves an array of class objects with userdefaults and nssecurecoding
Energy momentum: how to achieve carbon neutralization in the power industry?
[NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
Charm of code language
The essence of persuasion is to remove obstacles
让AI替企业做复杂决策真的靠谱吗?参与直播,斯坦福博士来分享他的选择|量子位·视点...
> Could not create task ‘:app:MyTest.main()‘. > SourceSet with name ‘main‘ not found.问题修复
Zblogphp breadcrumb navigation code
Fluent generates icon prompt logo widget
面试:List 如何根据对象的属性去重?
mysql80服务不启动
Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
A high density 256 channel electrode cap for dry EEG
【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB
Kotlin compose and native nesting
Tianlong Babu TLBB series - single skill group injury
最全是一次I2C总结
Application of data modeling based on wide table
Mobile heterogeneous computing technology GPU OpenCL programming (Advanced)
Kotlin Compose 与原生 嵌套使用