首页 > 其他分享 >PMGT论文阅读笔记

PMGT论文阅读笔记

时间:2024-02-27 16:59:16浏览次数:19  
标签:PMGT 采样 mathbf 论文 笔记 模态 bigg mathcal 节点

Abstract

​ 我们提出了一种预训练的策略,通过考虑项目侧信息及其关系来学习项目表示。我们通过共同的用户活动来关联项目,例如,共同购买,并构建一个同质的项目图。该图提供了在多模态中的项目关系及其关联的边信息的统一视图。我们开发了一种新的采样算法,名为MCN采样,以选择上下文的邻居。所提出的预训练多模态图变换器(PMGT)学习项目表示,并有两个目标: 1)图结构重建和2)掩蔽节点特征重建。

Introduction

​ 我们提出开发一个无监督预训练框架来充分利用多模态侧信息用于项目表示学习。如图所示,我们构造了一个项目多模态图,以提供项目及其相关的多模态侧信息的统一视图。在这个项目的多模态图中,每个节点都是一个项目,边代表它们的关系。然后,我们对该项目多模态图上的图神经网络进行预训练,使GNN模型能够捕获项目关系及其多模态侧信息。

​ 模型的总体结构图如下:

pFdljQf.png

​ 其中GSR表示图结构重建,NFR表示掩码特征重建

​ 项目多模态图中的关系是基于用户与项目的交互,这与项目之间的内容相似性无关。我们不会通过项目的文本和/或视觉特征来手动定义内容的相似性,因为我们的目标是在这些多模态特征的基础上部分地学习项目表示。此外,用户交互中的项目关系在推荐中也起着重要的作用。

​ 统一的项目多模态图可以很好地将我们的工作与以往的研究区分开来,在以往的研究中,项目的边信息及其关系是分开研究的。我们认为,这两种类型的信息在解决推荐问题时可以相互补充。因此,我们关注于在这个项目的多模态图之上进行有效的预训练,以有利于项目推荐。

​ 本文的贡献如下。首先,我们提出了一种新的预训练框架,即预训练的多模态图变换器(PMGT),通过无监督学习来利用项目的多模态信息。据我们所知,这是第一个利用推荐系统项目的多模态侧信息的深度预训练方法。其次,我们将PMGT的学习目标分解为两个子目标: (i)图结构重建和(ii)掩蔽节点特征重建。为了处理大规模的图数据,我们开发了一种算法,名为小批量上下文邻居采样(即MCN采样),用于有效和可伸缩的训练。此外,我们使用注意机制来聚合项目的多模态信息,并使用一个发散促进转换框架来建模项目和图中的上下文邻居之间的影响。

Method

PMGT包含四个主要组件:

  • 上下文邻居采样
  • 节点嵌入初始化
  • 基于转换器的编码器
  • 图重建

PMGT的目的是获取能够捕获节点的多模态信息和图结构的节点表示。然后,学习到的节点表示可以直接应用于下游任务中,或者通过微调等调整。

上下文邻居采样

​ 对于每个节点h,图中都存在一些相关的节点,这可能有助于丰富其表示。这些相关的节点被称为h的上下文邻居。为了在PMGT训练过程中有效地选择一批节点的上下文邻居,我们开发了一种名为MCN采样的采样算法。

MCN采样算法的具体流程如下:

pFd1fts.png

​ 设\(s_{k-1}^h\)表示在第k-1步采样的节点袋,对于\(s_{k-1}^h\)中的每个节点t,在第k步时从t的一跳邻居\(N_t\)中随机抽取\(n_k\)节点进行替换。节点被采样的概率与节点之间的边值成正比,一个节点可能会在\(s_{k-1}^h\)中出现多次,但是我们将所有节点实例视为不同的节点并执行采样过程

​ 在我们的采样算法中,我们通过考虑1) 一个节点的采样频率,2) 采样过程中目标节点h和一个被采样节点之间的采样步数来选择上下文邻居。对于每个节点t∈V \ h,我们在第k个采样步骤(k≤k)中通过经验定义其对目标节点h的重要性如下:

\(\begin{aligned}s_t^k=f_t^k\times(K-k+1)\end{aligned}\)

\(f_t^k\)表示节点t在\(S_h^k\)中出现的次数,也就是说,如果节点t的采样更频繁,并且对h的采样步骤更小,则认为节点t与目标节点h更相关。节点t到h的最终重要度得分定义如下:

\(s_t=\sum_{k=1}^Ks_t^k\)

​ 然后,我们根据V \h中的所有节点按降序排序,选择排名靠前的S个节点作为h的采样上下文邻居。这部分算法描述的不是很清楚,要看上面的伪代码才好理解一下,上面繁琐从采样步骤只是为了计算节点t对目标节点h的重要性得分

节点嵌入初始化

​ 在邻域采样后,我们将目标节点h与其有序的上下文邻域Ch连接起来,用\(\begin{aligned}\mathcal{I}_h=[h,h_1,h_2,\cdots,h_S]\end{aligned}\)表示。hj是Ch中的第j个节点,且1≤j≤s。对于每个节点\(t\in\mathcal{I}_h\),我们应用注意机制得到其多模态表示Mt,如下:

\[\begin{gathered} \mathbf{X}_t^i=\mathbf{x}_t^i\mathbf{W}_M^i+\mathbf{b}_M^i, \\ \mathbf{X}_t=\mathbf{X}_t^1\oplus\mathbf{X}_t^2\oplus\cdots\oplus\mathbf{X}_t^m, \\ \alpha_{t}=\mathrm{softmax}\bigg[\mathrm{tanh}(\mathbf{X}_{t})\mathbf{W}_{s}+\mathbf{b}_{s}\bigg] \\ \mathbf{M}_t=\sum_i^m\alpha_t^i\mathbf{X}_t^i, \end{gathered}\]

​ 每个项目的多模态侧信息被连接起来,以有助于全面的表示学习。

​ 一个节点在输入列表\(\mathcal{I}_h\)中的位置反映了其对目标节点h的重要性。因此,我们认为\(\mathcal{I}_h\)中节点的顺序在学习节点表示中是重要的。以下位置id嵌入用于识别输入列表的节点顺序信息:

​ \(\mathbf{P}_t=\textbf{P-Embedding}\bigg[p(t)\bigg]\)

​ 其中p (t)为\(\mathcal{I}_h\)中节点t的位置id,Pt为t的基于位置的嵌入。

​ 我们的主要目标是获得目标节点h的表示。直观地看,目标节点及其上下文邻居在预训练中应该发挥不同的作用。为了识别角色差异,我们在每个节点\(t\in\mathcal{I}_h\)中添加以下基于角色的嵌入,

​ \(\mathbf{R}_t=\mathbf{R}\text{-Embedding}\bigg[r(t)\bigg]\)

​ 其中,r (t)和Rt分别表示节点t的角色标签和基于角色的嵌入。在实践中,我们将目标节点的角色标签设置为“目标”,将上下文邻居的角色标签设置为“上下文”。

​ 基于上述嵌入,我们将它们聚合在一起,以定义一个节点\(t\in\mathcal{I}_h\)的初始输入嵌入,如下:

​ \(\mathbf{H}_t^0=\mathbf{Aggregate}\bigg(\mathbf{M}_t,\mathbf{P}_t,\mathbf{R}_t\bigg)\)

基于Transformer的图编码器

​ 我们使用Transformer框架来建模一个节点与其上下文邻居之间的相互影响。

\[\begin{gathered} \mathbf{H}^{\ell}=\text{FFN}\bigg[\text{softmax}(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{d_h}})\mathbf{V}\bigg], \\ \mathbf{Q}=\mathbf{H}^{\ell-1}\mathbf{W}_Q^\ell,\mathbf{K}=\mathbf{H}^{\ell-1}\mathbf{W}_K^\ell,\mathbf{V}=\mathbf{H}^{\ell-1}\mathbf{W}_V^\ell \end{gathered}\]

​ 对于目标节点h,Ch中可能存在一些采样节点,其表示与h的表达相似。假设所有采样的上下文邻居都与目标节点相关。我们希望所提出的模型能够通过专注于与目标节点相关但不是非常相似的节点,来捕获采样的上下文邻居的多样性。为了实现这一目标,我们设计了一种促进多样性的注意机制,并将其纳入Transformer的注意网络

\[\begin{gathered} \mathbf{S}=\mathbf{H}^{\ell-1}\mathbf{W}_S^{\ell}, \\ \mathbf{U}_1=\text{softmaх}\bigg(\mathbf{E}-\frac{\mathbf{S}\mathbf{S}^\top}{||\mathbf{S}||_2||\mathbf{S}||_2^\top}+\mathbf{I}\bigg), \\ \mathbf{U}_2=\text{softmax}(\frac{\mathbf{Q}\mathbf{K}^\top}{\sqrt{d_h}}), \\ \mathbf{H}^{\ell}=\text{FFN}\bigg[(\beta\mathbf{U}_1+(1-\beta)\mathbf{U}_2)\mathbf{V}\bigg], \end{gathered}\]

模型优化

​ 对所提出的PMGT模型进行了预训练,目标有两个: 1)图结构重建,2)掩蔽节点特征重建。为了确保学习到的节点表示能够捕获图的结构,我们定义了以下损失函数:

\[\mathcal{L}_{edge}=\frac1{|\mathcal{V}|}\sum_{h\in\mathcal{V}}\frac1{|\mathcal{N}_h|}\sum_{t\in\mathcal{N}_h}\left[-\log\left(\sigma(\frac{\mathbf{h}^T\mathbf{t}}{||\mathbf{h}||_2||\mathbf{t}||_2})\right)\right.-\left.Q*E_{t_n\sim P_n(t)}\log(\sigma(-\frac{\mathbf{h}^T\mathbf{t}_n}{||\mathbf{h}||_2||\mathbf{t}_n||_2})\right] \]

​ Pn和Q分别表示负抽样分布和负样本的数量。

​ 节点特征重构任务侧重于捕获学习到的节点表示中的多模态特征。以前的方法,如GRAPH-BERT,设计了一个没有屏蔽操作的属性重构任务。因此,模型聚合不同节点特征的能力可能会受到限制。在本研究中,我们设计了一个掩蔽节点特征重建任务,旨在通过Ih中其他非掩蔽节点重构掩蔽节点的特征。由于需要目标节点h的表示来重建的图结构,我们不对目标节点h应用掩蔽操作。之后,我们在列表Ih\h中随机选择20%的节点进行屏蔽。如果选择节点t,我们将t替换为: 1)80%的屏蔽节点,(2)10%的随机节点,(3)10%不变节点t。然后,将掩码项列表输入到模型中,并利用输出的HL重构掩码节点的多模态特征。我们将[Mask]节点的输入特征设置为0,并定义特征重建损失如下:

\[\mathcal{L}_{feature}=\frac1{|\mathcal{V}|}\sum_{h\in\mathcal{V}}\frac1{|\mathcal{M}_h|}\sum_{t\in\mathcal{M}_h}\sum_i^m\left\|\mathbf{H}_t^L\mathbf{W}_r^i-\mathbf{x}_t^i\right\|_2^2, \]

最终的损失函数如下

\(\mathcal{L}_{edge}+\mathcal{L}_{feature}\)

标签:PMGT,采样,mathbf,论文,笔记,模态,bigg,mathcal,节点
From: https://www.cnblogs.com/anewpro-techshare/p/18037211

相关文章

  • RabbitMQ 学习笔记
    为什么使用消息队列?以用户下单购买商品的行为举例,在使用微服务架构时,我们需要调用多个服务,传统的调用方式是同步调用,这会存在一定的性能问题使用消息队列可以实现异步的通信方式,相比于同步的通信方式,异步的方式可以让上游快速成功,极大提高系统的吞吐量消息队列的使用场景有如......
  • Semantic Kernel 学习笔记:初步体验用 Semantic Memory 生成 Embedding 并进行语义搜索
    SemanticKernel的Memory有两种实现,一个是SemanticKernel内置的SemanticMemory,一个是独立的KernelMemory,KernelMemory是从SemanticKernel进化而来。关于SemanticMemory的介绍(来源):SemanticMemory(SM)isalibraryforC#,Python,andJavathatwrapsdir......
  • Go语言精进之路读书笔记第37条——了解错误处理的4种策略
    C语言家族的经典错误机制:错误就是值。同时Go结合函数/方法的多返回值机制避免了像C语言那样在单一函数返回值种承载多重信息的问题。37.1构造错误值错误处理的策略与构造错误值的方法是密切关联的。错误是值,只是以error接口变量的形式统一呈现(按惯例,函数或方法通常将error类型......
  • vue3笔记
    2.3.【一个简单的效果】Vue3向下兼容Vue2语法,且Vue3中的模板中可以没有根标签<template> <divclass="person">  <h2>姓名:{{name}}</h2>  <h2>年龄:{{age}}</h2>  <button@click="changeName">修改名字</button>  <button......
  • vue3笔记1
    4.4.【路由器工作模式】history模式优点:URL更加美观,不带有#,更接近传统的网站URL。缺点:后期项目上线,需要服务端配合处理路径问题,否则刷新会有404错误。constrouter=createRouter({history:createWebHistory(),//history模式/******/})hash模式优点:兼容性......
  • 【学习笔记】KMP算法(字符串匹配优化算法)
    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的作用是,在一个长字符串内匹配一个短字符串(判断str1.contains(str2))时,减少匹配的次数,提高匹配效率。 必要概念:最长公共前后缀字符串......
  • 【系统设计】笔记10 GFS
    分布式系统谷歌三剑客DistributedFileSystem(GoogleFIleSystem)如何有效存储数据?Nosql底层需要一个文件系统Bigtable=Nosqldatabase怎么链接底层存储和上层数据MapReduce怎么快速处理数据 GFSC++GoogleHDFSJavaYahoo scenario用户写入一......
  • 论文阅读-《显著性目标检测中的完整性学习》
    论文摘要尽管当前显著性目标检测已取得重大突破,它们在预测显著区域的"完整性"上仍存在局限性。本文把"完整性"的概念分为微观完整性和宏观完整性两个层面。具体而言,在微观层面上,模型需要找出单个显著目标的所有部分。而在宏观层面上,模型需要发现图片中的所有显著目标。为了达......
  • 《系统科学方法概论》第5章读书笔记
    无论自然界还是人类社会,抑或人类思维都存在着自发组织起来的现象。自发组织系统理论的提出不是偶然的,他是19世纪中期以来热学力学同生物学矛盾发展的结果。一个系统由始态变化到中态,其内能的减少量的e等于该系统对外做的功a与该系统传递给环境的热量q之和,这就是热力学第一定律,用公......
  • 《系统科学方法概论》第4章读书笔记
    20世纪以来控制发展论有三个阶段,第一阶段是经典控制论阶段是20世纪4050年代。第2个是现代控制论阶段,20世纪6070年代第3个大系统理论阶段是20世纪70年代。控制论也有好多种分支情况。一工程控制论二生物控制论三社会控制论四人工智能。控制的定义。所谓控制就是指在一定的环境中,一......