CNAN知识图谱辅助推荐系统
文章介绍了一个基于KG的推荐系统模型,代码也已开源,可以看出主要follow了KGNN-LS 。算法流程大致如下:
1. 算法介绍
算法除去attention机制外,主要的思想在于:user由交互过的item来表示、item由交互过的user交互过的item表示。如下图:
即user自身是不具备embedding表示的,完全靠KG部分。 这样的好处在于可以很方便的处理新增加的user,并不需要重新训练新用户的embedding。
user的initial entity set(即该user交互过的item id在KG的id)定义为:
item的initial entity set定义为:
�� 是item交互过的user交互过的item集合,公式3将item id转化为在KG的id,即对齐操作。
由此,我们相当于得到了user、item的邻居set,再由这些邻居set在KG中延伸出 � 阶邻居做聚合,第 � 阶tail entity集合与三元组集合定义为:
符号 � 代表某个user或item。如下图所示,多个Layer即代表多阶邻居:
这一步在算法执行中会占据相当大的时间。
2.聚合方式
对于某个triplet (��ℎ,�,���) 而言,我们定义从tail entity ��� 沿着 � 聚合到head entity �ℎ� 得到的attentive embedding �� :
CKAN的聚集首先将不同layer(总共 � 个layer)的三元组分别聚集得到 �� 、再将处于相同layer的 �� 累加到一起作为该layer的表示:
接着,除去这 � 个向量外,还会将initial entity set的embedding累加起来作为第0阶layer表示:
对于target item而言,它自身也是entity,所以单独多引入一个origin embedding:
因此,target user和target item拥有如下embedding set:
最后聚合target user/target item的embedding set得到final embedding。正如图一的Knowledge-aware Attentive Network所示。聚合的方式有三种:
可以看出CKAN的聚集和其他的GNN算法不同,一般的GNN聚集是聚集多次、最后多阶信息都会聚集在target node上。训练采用cross-entropy loss。
3.实验
实验对比如下:
loss。
3.实验
实验对比如下:
[外链图片转存中…(img-XHaKhNr4-1709550222389)]
数据集均是采用KGNN-LS使用的数据集