当前位置: 首页 > news >正文

Disentangled Graph Collaborative Filtering

代码地址:https://github.com/ xiangwang1223/disentangled_graph_collaborative_filtering

Background:

现有模型在很大程度上以统一的方式对用户-物品关系进行建模(将模型看做黑盒,历史交互作为输入,Embedding作为输出。),这会忽略用户意图的多样性(用户看一个视频可能是因为消磨时间、喜欢里面的演员等多种意图)导致representation次优。本文提出,将embedding划分成多个部分,每一部分单独表示一种意图,各部分之间相互独立,实现意图的解耦。

例:假设Embedding长度为N,意图数量为K,划分后每一部分长度为\frac{N}{K},即 

u = (itent_1itent_2,……,itent_N), |itent_i|\frac{N}{K}。物品i的也进行同样的划分:

i = ((i_1,i_2,\cdot \cdot \cdot \cdot \cdot \cdot ,i_n)

PRELIMINARY

1、本文构建了多个意图感知图,G = \{G_1,G_2,\cdot \cdot \cdot \cdot \cdot \cdot G_K\}, 其中 G_K = \{u,i,A_k(u,i)\}, u,i

表示u-i之间产生过交互,A_k(u,i) 表示用户u和物品i发生交互是因为意图k的分数,不难看出意图感知图是一个带权图

2、itent-aware图不是用户-物品交互二部图的子图,二者图形结构是一样的,但用户的表示是itent_k,物品的表示为 i_k

3、用户和物品的交互存在多个意图, 构成意图分布 A(u,i) =(A_1(u,i),A_2(u,i), \cdot \cdot \cdot \cdot \cdot \cdot ,A_K(u,i))A_K(u,i)表示用户u和物品i发生交互是因为意图k的自信强度,整体表示用户u和物品i发生交互因为各意图的自信度大小。

 4、本文用邻接矩阵A_k存储和表示意图感知图(带权图)Graph_{\_k}。元素 A_k(u,i) = x,表示用户u因为意图k和物品i发生交互的自信程度为x。

METHODOLOGY(本文重点是两个迭代更新方法)

初始化:

将用户u和 i 的embedding向量初始化为随机数A_k中u-i发生过交互的位置初始化为1(开始时假定用户意图分布相同),并将初始化后的矩阵记为S_k,如上图下部分所示。

更新机制:

本文采用迭代更新机制,不管是特征更新还是意图感知图的更新,都重复T次,目的是使结果更贴近实际。下文中 t\ \epsilon \ (1,2,\cdot \cdot \cdot \cdot ,T),意图感知图和意图感知表示,交替更新T次(虽然二者都进行了迭代更新,但主要目的还是为了得到更好的意图感知表示,或者可以说意图感知图的更新目的是为了得到更真实的用户意图自信程度,在消息传递时传递更有效的信息。)。 

意图感知特征更新

        执行T次GNN,首先进行一阶邻居消息聚合,迭代T次得到e_{ku}^{(1)},再对2……L跳邻居进行消息聚合,方法不变,得到e_{ku}^{(2)}\cdot \cdot \cdot \cdot \cdot \cdot e_{ku}^{(L)}

 \iota_k^t(u,i):可理解为注意力,u和i发生交互是因为意图k的自信度越大,则从物品在k上的特征提取的越多。

\tilde{S_k^t}(u,i):前文说过,用户和物品交互可能因为多个意图,用户与物品交互的意图分布为:A(u,i) =(A_1(u,i),A_2(u,i), \cdot \cdot \cdot \cdot \cdot \cdot ,A_K(u,i)),这里对各意图做normalization。

意图感知图更新

用意图感知特征去更新意图感知图。

层聚合

 

 将得到的0……L层消息聚合后的特征表示做SUM作为用户最终的特征表示。

独立性建模

本文将用户特征表示,划分成多个意图,各意图之间独立,实现意图的解纠缠。为了使各意图互相独立,本文引入距离相关性损失:

http://www.lryc.cn/news/60527.html

相关文章:

  • Nginx快速上手
  • 【设计模式】实际场景解释策略模式与工厂模式的应用
  • 外包干了三年,算是废了...
  • 九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭
  • [ES6] 数组
  • 【问题描述】编写一个程序计算出球、圆柱和圆锥的表面积和体积。
  • Python 人工智能:16~20
  • 【华为OD机试真题】最优资源分配(javapython)
  • git的使用——操作流程
  • Ae:自动定向
  • ClickHouse入门详解
  • javaweb笔记2
  • 【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
  • 算法训练day2:哈希表
  • Git——利用SSH密钥本地仓库上传远程GitHub库
  • 一起读源码 —— Fastjson 的核心方法及其实现原理
  • Python实现批量图片下载及去重处理
  • 【QA】Python代码调试之解决Segmentation fault (core dumped)问题
  • C++ 迭代器之旅(Journey of Iterators)
  • 使用全球融合CDN的10大优势
  • 前端学习:HTML图像、表格、列表
  • 202305读书笔记|《因思念而沉着》——任何赞美都是身外之物唯自由可随身携带
  • M1 M2上能安装上Autocad 2024 Mac 中文版吗 autocad m1 m2版本有啦 终于支持Ventura 13x了
  • 【题解】P4055 [JSOI2009] 游戏
  • P1020 [NOIP1999 普及组] 导弹拦截
  • Makefile学习
  • 2.4 随机变量函数的分布
  • 数据结构【一】:前缀表达式与后缀表达式的区别
  • 搭建 PostgreSQL
  • Nmap入门到高级【第四章】