CGAT-基于项目知识图的上下文注意网络推荐

核心问题:

核心问题:

现有的基于gnn的方法明确地建模了实体与其KG中的局部图上下文(local graph context)(即其一阶邻域的集合)之间的依赖关系,但可能无法有效地捕获其非局部图上下文(即最相关的高阶邻域的集合)。

在针对local graph操作时,即一阶领域,没有考虑用户对实体偏好。所以制定了一个针对用户特定的图注意力机制来实现个性化偏好聚合一阶领域信息

在针对non-local graph操作时,即KG中实体的最相关的高阶邻居的集合没有被显式捕获,就是说一些项目可能只有很少的邻居,因此一些重要的实体可能不会直接连接到它们,这是需要考虑多跳以后的邻居对其的重要性。论文通过建立一个偏差随机游走采样过程提取实体的non-local上下文信息,并利用递归神经网络(RNN)来建模KG中的实体与其非局部上下文之间的依赖关系;

除此之外,以往的基于GNN的推荐都是通过逐层传播隐式地聚合高阶邻域信息,而不是显式地建模实体与其高阶邻域之间的依赖关系。

同时开发了一个项目特定的注意力机制,利用上下文信息提取用户的历史行为数据来建模用户对项目的偏好

具体实现:

1. Exploiting Knowledge Graph Context

对于与用户直接交互的项目来说,在知识图谱中会有很多与其相关的实体。那么通过聚合这些相关实体信息可以丰富项目的表示。这里考虑到用户对实体的偏好,引入了针对特定用户的注意力机制来聚合相关实体的信息。

分为两个部分:第一部分是local text information (即一阶邻居信息)另一部分是non-local text information (即多阶邻居信息)

1)Local Graph Context的处理:(聚合实体h和其基于用户注意力的邻域信息 只包含一阶邻域信息 得到的local contextual embedding)

首先整合某一个邻居e的embedding和其对应的关系r的embedding,得到如下表示:

然后设定一个针对特定用户的注意力得分,用来表述针对用户u来说,实体t对于实体h的重要性(t是h的邻居之一)

其中,

下一步就聚合所有邻居信息得到h的领域表示:(the local neighborhood embedding of h)

最后聚合实体h的嵌入表示和上述的领域表示,得到实体h的local contextual embeddding:

2)Non-Local Graph Context的处理

上述针对一跳邻域信息的处理方式不适用于捕获多跳邻域信息,所以提出了一种基于偏置随机游走的GRU模块来聚合实体的非局部上下文信息

为了实现更宽的深度优先搜索,我们从实体h开始重复有偏随机游走,得到M条固定长度L的路径。

首先定义一个概率p,在当前实体上随机游走到其邻居的概率。其中tk是路径的第k个实体,t0是根实体h。为了鼓励更广泛的搜索,我们经验设置0 < γ < 0.5。

在获得M条路径和M∗L个实体后,我们按照实体在行走中的频率降序排序,并有序地选择一组排名靠前的实体。这些实体就被定义为针对实体h的non-local graph context,记做Chg

我们使用GRU来建模实体h与其非本地上下文Chg之间的依赖关系,因为GRU可以在处理序列数据(即Chg可以被视为频率序列数据)时产生更好的性能。实际上,一个实体在随机游动中出现的频率越高,它对目标实体h的重要性就越大

基于这种直觉,我们将Chg倒序输入GRU,并使用最后一步输出作为non local context得到如下嵌入表示:

然后再聚合实体h的嵌入和non local context 的嵌入得到最终的non-local contextual embedding:

我们通过应用栅格机制来学习权重用于整合这两种上下文嵌入表:


所以对于项目i来说,其属于KG中的一种特殊的实体类型,所以考虑项目i在KG中的local context Cil 和non-local context Cig,聚合两类context得到项目i contextual embedding ci。然后,我们将项目本身的嵌入表示ei和其上下文嵌入表示 ci连接起来,得到 contextualized representation of an item i:

综上都是针对项目i,在基于用户注意力机制下聚合其本地和非本地(一跳及多跳邻域)信息后的项目i嵌入表示


2. Exploiting Interaction Graph Context

 用户的历史记录通常用来描述他的潜在兴趣, 将用户u的历史物品Iu+作为u给出的隐式反馈,我们将用户历史交互的项目集作为Interaction Graph Context Iu+,设计一种针对特定项目的注意力机制来表述Interaction Graph Context对项目i的影响。基本的假设是:在估计用户对不同候选项的偏好时,用户的历史项可能具有不同的重要性。

对于每个项目 j ∈ Iu+,其对于目标项目i 的依赖权定义为:

 qi和qj是项目I和j的上下文表示,然后我们定义针对特定的项目i其Graph context的embedding:

再将将用户本身的嵌入表示eu和与上述eIu+聚合,作为用户u的contextual embedding:

最后我们将eu和cu连接起来,形成用户u的contextualized representation:


用户u对项目i的偏好的预测可以定义为:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在R语言中输出fasta文件,你可以使用Bioconductor包中的Biostrings库。首先,你需要将你的序列数据存储在一个DNAStringSet对象中。然后,你可以使用writeXStringSet函数将DNAStringSet对象写入fasta文件。 下面是一个示例代码: ```R library(Biostrings) # 创建一个DNAStringSet对象 sequences <- DNAStringSet(c("ATCG", "GCTA", "CGAT")) # 将DNAStringSet对象写入fasta文件 writeXStringSet(sequences, file = "output.fasta", format = "fasta") ``` 在这个示例中,我们首先创建了一个包含三个序列的DNAStringSet对象。然后,我们使用writeXStringSet函数将DNAStringSet对象写入名为output.fasta的fasta文件中。 请注意,你需要先安装Bioconductor包和Biostrings库,可以使用以下命令进行安装: ```R if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("Biostrings") ``` 希望这可以帮助到你!\[1\] #### 引用[.reference_title] - *1* *2* [R语言读入FASTA 蛋白质序列文件 & 生成SeqLogo](https://blog.csdn.net/qq_35008279/article/details/90073800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [R语言读取Excel文件](https://blog.csdn.net/cl1143015961/article/details/50035529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值