当前位置:网站首页>[论文阅读] CKAN: Collaborative Knowledge-aware Atentive Network for Recommender Systems
[论文阅读] CKAN: Collaborative Knowledge-aware Atentive Network for Recommender Systems
2022-07-05 09:46:00 【让我安静会】
原文:CKAN
代码:https://github.com/weberrr/CKAN
What: 提出CKAN,一种将协作信号与知识关联自然结合的方法。
Why: 现有方法只是关注了KG中的知识关联(knowledge associations),忽略了协作信号( collaborative signals),这往往是user-item交互中缺乏的。
How: 提出异质传播策略,将两种信息自然的编码,再应用知识感知的注意机制来区分不同的基于知识的邻居的贡献。
Result:
Conclusion:
CKAN提出之前的方法没有同时考虑【知识关联】和【协作信号】这两种异质信息,因此尝试通过将两种信息自然编码并结合。
Model
1. Heterogeneous Propagation
1.1 协作传播
KG图:
item-entity图:
collaboration propagation
【user由交互过的item的相关实体来表示、item由交互过的user交互过的item的相关实体来表示】
【初始的用户表示(initial entity set of user)】:(由user交互过的item来表示)
其中Yuv=1表示用户u和物品v有交互;e是实体,(v,e)表示物品v和物品e之间有联系。
这里表示,【用户】是由其交互过的item,这些item相关的那些实体entity来表示的。【用实体表示】
多个用户交互了同一物品,它们之间是【用户的协作邻居】。
多个物品被同一用户交互,它们之间是【物品的协作邻居】。
物品的协作邻居:
Vu指物品的协作邻居,vu指Vu这个set中的一个个物品。物品的协作邻居,即item1,item2都被user1交互了,item2是item1的物品协作邻居。用协作邻居相关的实体entity来表示的。【用实体表示】
【初始的物品表示 (initial entity set of item)】:(由item被交互的user的交互item来表示)
用物品的协作邻居和与其联系的实体来表示物品。
1.2 知识图传播
因此可以得到多层递归之后user和item的表示,l-th的尾实体,聚合了(l-1)-th的头实体h的信息。
(user和item的多层递归实体表示的通用表示形式)
同理,得到多层递归三元组表示的通用表示形式:
【the knowledgebased high-order interaction information of user and item is successfully captured】
2. Knowledge-aware Attentive Embedding
之前的操作通过用物品的实体表示user,用邻居物品的实体表示item,考虑了协作传播;再通过多层递归传播,考虑了知识图传播,得到了融合了头实体h和不同关系r的尾实体t,但是还想要进一步区分各个尾实体t之间的区别,因此加入注意力机制来区分各个融合了多层信息的尾实体t。
尾实体t的注意力嵌入表示:(由头实体h和关系r控制)
其中,
称其为注意力因子吧,它的计算过程如下:
并通过softmax进行归一化:
因此可以得到l-th的三元组的表示:(分为user和item,这里是通用表示)
可以看到计算l-th的三元组表示的时候,对该层中每一个三元组都进行注意力计算,相当于把该层的所有三元组进行聚合。
对于初始层(第0层),把user和item相对应的entity直接相加来表示:
作者认为最中心处与item直接相关的那些实体,与item在潜层最相近,因此把它们也与相加,来表示物品的origin:
因此可以得到user和item的additional representations:
3. Model Prediction
每一层强调不同的高阶连通性和用户偏好,因此对上述【user和item的additional representations】分别进行聚合,采用了3种不同的方式:
Sum aggregator:
Pooling aggregator:
Concat aggregator:
最近对聚合的到的user表示和item表示进行内积:
参考:
- CKAN论文笔记:https://zhuanlan.zhihu.com/p/181475023
附:
两张图
边栏推荐
- How to get the STW (pause) time of GC (garbage collector)?
- Wechat applet - simple diet recommendation (4)
- Kotlin compose multiple item scrolling
- 【 conseils 】 obtenir les valeurs des axes X et y de la fonction cdfplot dans MATLAB
- Theme. AppCompat. Light. Darkactionbar not found
- Fluent development: setting method of left and right alignment of child controls in row
- Comparison of batch merge between Oracle and MySQL
- Understand the window query function of tdengine in one article
- Tianlong Babu TLBB series - single skill group injury
- 宝塔面板MySQL无法启动
猜你喜欢
【OpenCV 例程200篇】219. 添加数字水印(盲水印)
.Net之延迟队列
Energy momentum: how to achieve carbon neutralization in the power industry?
Why don't you recommend using products like mongodb to replace time series databases?
Hard core, have you ever seen robots play "escape from the secret room"? (code attached)
Cerebral Cortex:有向脑连接识别帕金森病中广泛存在的功能网络异常
Wechat applet - simple diet recommendation (2)
Generics, generic defects and application scenarios that 90% of people don't understand
高级 OpenCV:BGR 像素强度图
【系统设计】指标监控和告警系统
随机推荐
Personal website construction tutorial | local website environment construction | website production tutorial
【系统设计】指标监控和告警系统
Design of stepping motor controller based on single chip microcomputer (forward rotation and reverse rotation indicator gear)
面试:Bitmap像素内存分配在堆内存还是在native中
能源势动:电力行业的碳中和该如何实现?
Flutter development: use safearea
Tdengine connector goes online Google Data Studio app store
Android SQLite database encryption
Windows uses commands to run kotlin
Dedecms website building tutorial
uniapp + uniCloud+unipay 实现微信小程序支付功能
把欧拉的创新带向世界 SUSE 要做那个引路人
Roll up, break 35 - year - old Anxiety, animation Demonstration CPU recording Function call Process
Swift uses userdefaults and codable to save an array of class objects or structure instances
Six simple cases of QT
View Slide
Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图
ThreadLocal source code learning
Swift saves an array of class objects with userdefaults and nssecurecoding
Jupiter notebook shortcut key