Heterophilous Distribution Propagation for Graph Neural Networks

推荐指数:2颗星
HDP不是聚集所有邻居信息,而是根据训练期间的伪标签自适应的将邻居分为同配和异配.并通过原型对比,垂直约束异配邻居分布

前人的问题

请添加图片描述

1.邻居划分的不足.已存在的方法要不不能区分同配和异配,要不简单的采用阈值去划分同配异配
2.以往的异配GNN仅仅是简单的邻居聚合
作者的贡献:
现有的异配gnn存在如上两个问题
我们提出了一种新的gnn来解决如上的问题

模型

必要的定义:

Y是nodelabel, S t r a , S t a r , S s t r u c t S^{tra},S^{tar},S^{struct} Stra,Star,Sstruct分别代表训练集(train),结构编码的目标集合(target),和trust set对于可信对比原型向量损失

模型图:

请添加图片描述

疑问:

  • S t a r g e t S^{target} Starget如何构建的
  • α l \alpha^l αl为啥是 R N × 1 \mathbb{R}^{N\times1} RN×1

方法

语义邻居划分

异配性评估

h ′ = ∣ { ( u , v ) ∣ ( u , v ) ∈ E ′ ∧ y u = y v ∧ u , v ∈ S t r a } ∣ ∣ { ( u , v ) ∣ ( u , v ) ∈ E ′ ∧ u , v ∈ S t r a } ∣ , h'=\frac{|\{(u,v)|(u,v)\in\mathcal{E}' \wedge y_u=y_v \wedge u,v\in\mathbf{S}^{tra}\}|}{|\{(u,v)|(u,v)\in\mathcal{E}' \wedge u,v\in\mathbf{S}^{tra}\}|}, h={(u,v)(u,v)Eu,vStra}{(u,v)(u,v)Eyu=yvu,vStra},
S t r a S^{tra} Stra表示训练集, E ′ ∈ { E , E 2 } \mathcal{E}^{\prime}\in\{\mathcal{E},\mathcal{E}^2\} E{E,E2}表示一阶和二阶邻居.
由于同配比 h ′ h' h不太准确,我们用超参去平衡他: λ ∈ [ 0.8 , 1.2 ] \lambda\in[0.8,1.2] λ[0.8,1.2]
h ^ = λ h ′ \widehat{h}=\lambda h' h =λh

邻居划分:

软分配 Z ∈ R N × K \mathbf{Z}\in\mathbb{R}^{N\times K} ZRN×K表示HDP预测的结果.
P u v = { z u z v T , ( u , v ) ∈ E ′ , 0 , otherwise. \mathbf{P}_{uv}=\begin{cases}\mathbf{z}_u\mathbf{z}_v^T,&(u,v)\in\mathcal{E'},\\0,&\text{otherwise.}\end{cases} Puv={zuzvT,0,(u,v)E,otherwise.

ϵ = T o p K ( P , h ^ ∣ E ′ ∣ ) \epsilon=\mathrm{TopK}(\mathbf{P},\widehat{h}|\mathcal{E'}|) ϵ=TopK(P,h E)
T o p K ( x , y ) \mathbf{TopK(x,y)} TopK(x,y)意味着x的第y大个元素.然后,我们可以得到同配邻接矩阵和异配邻接矩阵:
A u v h m = { 1 , P u v ≥ ϵ ∧ ( u , v ) ∈ E ′ , 0 , otherwise. A u v h t = { 1 , P u v < ϵ ∧ ( u , v ) ∈ E ′ , 0 , otherwise. \begin{aligned}\mathbf{A}_{uv}^{hm}&=\begin{cases}1,&\mathbf{P}_{uv}\geq\epsilon \wedge (u,v)\in\mathcal{E'},\\0,&\text{otherwise.}\end{cases}\\\mathbf{A}_{uv}^{ht}&=\begin{cases}1,&\mathbf{P}_{uv}<\epsilon \wedge (u,v)\in\mathcal{E'},\\0,&\text{otherwise.}\end{cases}\end{aligned} AuvhmAuvht={1,0,Puvϵ(u,v)E,otherwise.={1,0,Puv<ϵ(u,v)E,otherwise.

异配邻居模型

我们分三步对异配模型
1.构建节点的自我表征
2.建模每个节点的异配邻居分布
3.通过语义认知消息传播机制传播

自我表征的构建

我们语义结构编码作为属性节点的补充
1.构建结构嵌入
X ^ s t r = { [ 0 , 0 , . . . , 1 , . . . , 0 ] , i ∈ S ∗ [ 0 , 0 , . . . , 0 , . . . , 0 ] , i ∉ S ∗ \hat{\mathbf{X}}^{str} = \left\{ \begin{array}{l} [0, 0, ..., 1, ..., 0], \quad i \in S^* \\ [0, 0, ..., 0, ..., 0], \quad i \notin S^* \end{array} \right. X^str={[0,0,...,1,...,0],iS[0,0,...,0,...,0],i/S
其中, S t a r ⊂ S t r a \mathbf{S}^{tar}\subset\mathbf{S}^{tra} StarStra
最终的嵌入通过随机游走计算而得到
X s t r = ( D − 1 A ) κ X ^ s t r , \mathbf{X}^{str}=(\mathbf{D}^{-1}\mathbf{A})^\kappa\hat{\mathbf{X}}^{str}, Xstr=(D1A)κX^str,
节点的自我表征可以通过简单的MLP,建模节点特征和结构特征得到:
H e g o = M L P ( [ X ∥ X s t r ] ) \mathbf{H}^{ego}=\mathrm{MLP}([\mathbf{X}\|\mathbf{X}^{str}]) Hego=MLP([XXstr])
其中, [ ⋅ ∣ ∣ ⋅ ] [\cdot||\cdot] [∣∣]表示拼接操作

异配邻居分布

H n b = D h t − 1 A h t H e g o . \mathbf{H}^{nb}=\mathbf{D}^{ht}{}^{-1}\mathbf{A}^{ht}\mathbf{H}^{ego}. Hnb=Dht1AhtHego.
其中, D h t D^{ht} Dht: D i i h t = ∑ j A i j h t \mathbf{D}_{ii}^{ht}=\sum_j\mathbf{A}_{ij}^{ht} Diiht=jAijht

语义消息传播机制:

我们引入了语义消息传播:SMP(Semantic-aware Message Passing)
H ~ l = D h m − 1 A h m H ( l − 1 ) , α l = f φ l ( [ H 0 ∥ H ~ l ] ) , H l = α l H 0 + ( 1 − α l ) ) H ~ l \begin{aligned} &\widetilde{\mathbf{H}}^{l} =\mathbf{D}^{hm^{-1}}\mathbf{A}^{hm}\mathbf{H}^{(l-1)}, \\ &\alpha^{l} =f_{\varphi^l}([\mathbf{H}^0\|\widetilde{\mathbf{H}}^l]), \\ &\mathbf{H}^l =\alpha^l\mathbf{H}^0+(1-\alpha^l))\widetilde{\mathbf{H}}^l \end{aligned} H l=Dhm1AhmH(l1),αl=fφl([H0H l]),Hl=αlH0+(1αl))H l
其中, α l ∈ R N × 1 \alpha^l\in\mathbb{R}^{N\times1} αlRN×1被权重学习器学习得到. #question 为啥是N*1维度?
H h t = S M P ( H n b , l h t ) \mathbf{H}^{ht}=\mathrm{SMP}(\mathbf{H}^{nb},l^{ht}) Hht=SMP(Hnb,lht) H h m = S M P ( H e g o , l h m ) \mathbf{H}^{hm}=\mathrm{SMP}(\mathbf{H}^{ego},l^{hm}) Hhm=SMP(Hego,lhm)

我们可以得到最终特征:
H = [ H h m ∥ H h t ] . \mathbf{H}=[\mathbf{H}^{hm}\|\mathbf{H}^{ht}]. H=[HhmHht]. Z = f ψ ( H ) , Y ^ = arg ⁡ max ⁡ ( Z ) . \mathbf{Z}=f_\psi(\mathbf{H}), \widehat{\mathbf{Y}}=\arg\max(\mathbf{Z}). Z=fψ(H),Y =argmax(Z).

模型训练

模型初始化:

X n b = A ^ X \mathbf{X}^{nb}=\widehat{\mathbf{A}}\mathbf{X} Xnb=A X X a l l = [ X ∥ X n b ∥ X s t r ] \mathbf{X}^{all}=[\mathbf{X}\|\mathbf{X}^{nb}\|\mathbf{X}^{str}] Xall=[XXnbXstr]
Z = M L P i n i t ( X a l l ) \mathbf{Z}=\mathrm{MLP}^{init}(\mathbf{X}^{all}) Z=MLPinit(Xall)

模型优化

L c e = C E ( Z , Y ) , \mathcal{L}^{ce}=\mathrm{CE}(\mathbf{Z},\mathbf{Y}), Lce=CE(Z,Y), S t r u = { v i ∣ Z i m a x ≥ δ } \mathbf{S}^{tru}=\{v_i|\mathbf{Z}_i^{max}\geq\delta\} Stru={viZimaxδ} δ = T o p K ( Z m a x , ρ ∣ V ∣ ) \delta=\mathrm{TopK}(\mathbf{Z}^{max},\rho|\mathcal{V}|) δ=TopK(Zmax,ρV)
其中, δ = T o p K ( Z m a x , ρ ∣ V ∣ ) \delta=\mathrm{TopK}(\mathbf{Z}^{max},\rho|\mathcal{V}|) δ=TopK(Zmax,ρV)
我们可以得到原型向量:
c j = 1 ∣ S j t r u ∣ ∑ v i ∈ S j t r u h i e g o , S i t r u = { v i ∣ v i ∈ S t r u ∧ Y ^ i = j } . \begin{gathered} \mathbf{c}_{j} =\frac1{|\mathbf{S}_j^{tru}|}\sum_{v_i\in\mathbf{S}_j^{tru}}\mathbf{h}_i^{ego}, \\ \mathbf{S}_{i}^{tru} =\{v_i|v_i\in\mathbf{S}^{tru}\wedge\widehat{\mathbf{Y}}_i=j\}. \end{gathered} cj=Sjtru1viSjtruhiego,Sitru={viviStruY i=j}.
最终得到原型向量损失:
L t p c = − ∑ v i ∈ S t r u log ⁡ exp ⁡ ( s ( h i e g o , c j ) / τ ) ∑ k = 1 K exp ⁡ ( [ s ( h i e g o , c k ) ] + / τ ) ) , \mathcal{L}^{tpc}=-\sum_{v_i\in\mathbf{S}^{tru}}\log\frac{\exp(s(\mathbf{h}_i^{ego},\mathbf{c}_j)/\tau)}{\sum_{k=1}^K\exp([s(\mathbf{h}_i^{ego},\mathbf{c}_k)]_+/\tau))}, Ltpc=viStrulogk=1Kexp([s(hiego,ck)]+/τ))exp(s(hiego,cj)/τ),
其中, s ( h i e g o , c j ) = h i e g o ⋅ c j ∣ h i e g o ∣ ∣ c j ∣ . s(\mathbf{h}_i^{ego},\mathbf{c}_j)=\frac{\mathbf{h}_i^{ego}\cdot\mathbf{c}_j}{|\mathbf{h}_i^{ego}||\mathbf{c}_j|}. s(hiego,cj)=hiego∣∣cjhiegocj.

整体损失函数:
L = L c e + β L t p c \mathcal{L}=\mathcal{L}^{ce}+\beta\mathcal{L}^{tpc} L=Lce+βLtpc
请添加图片描述

结果还阔以

总结:

貌似提供了一种自适应阈值的方式,但是我仍然有如下的问题:
1.引入了超参 λ \lambda λ去放大缩小阈值.其实仍没有解决阈值问题
2.有点没读懂target是如何划分的
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3246851.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】拷贝构造函数及析构函数

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

嵌入式Linux:文件属主和属组

目录 1、修改文件所有者和组 2、chown函数 3、fchown函数 4、lchown函数 在Linux系统中&#xff0c;每个文件都有一个属主&#xff08;owner&#xff09;和一个属组&#xff08;group&#xff09;。文件权限系统根据这些信息来决定哪些用户和组可以访问和操作文件。 文件属…

简单爬虫案例

准备工作&#xff1a; 1. 安装好python3 最低为3.6以上&#xff0c; 并成功运行pyhthon3 程序 2. 了解python 多进程原理 3. 了解 python HTTP 请求库 requests 的基本使用 4. 了解正则表达式的用法和python 中 re 库的基本使用 爬取目标 目标网站&#xff1a; https://…

【C++】类和对象的基本概念与使用

本文通过面向对象的概念以及通俗易懂的例子介绍面向对象引出类和对象。最后通过与之有相似之处的C语言中的struct一步步引出C中的类的定义方式&#xff0c;并提出了一些注意事项&#xff0c;最后描述了类的大小的计算方法。 一、什么是面向对象&#xff1f; 1.面向对象的概念 …

CH390H+STM32F1+LWIP

文章目录 1、CH390芯片介绍2、电路部分3、LWIP调试3.1修改点13.2 修改点2 4、结果展示参考 1、CH390芯片介绍 官网地址&#xff1a; 南京沁恒微电子股份有限公司 特点&#xff1a; 2、电路部分 CH390及接口&#xff1a; STM32F1引脚&#xff1a; 不含LWIP的demo及LWIP…

vue3+ts 封装echarts,根据tabs切换展示

<div class"bottom"><div class"topli"><p>用电统计</p><div class"tabs"><div class"tab" :class"{ active: active.tab1 index }"v-for"(item, index) in tabsList1" :key&q…

Pikachu SQL注入训练实例

1 数字类型注入 打开Burp Suit工具&#xff0c;选择Proxy&#xff0c;之后点击Open Browser打开浏览器&#xff0c;在浏览器中输入http://localhost:8080/pikachu-master打开Pikachu漏洞练习平台。 选择“数字型注入”&#xff0c;之后点击下拉框随便选择一个ID&#xff0c;…

Apple Vision Pro 和其商业未来

机器人、人工智能相关领域 news/events &#xff08;专栏目录&#xff09; 本文目录 一、Vision Pro 生态系统二、Apple Vision Pro 的营销用例 随着苹果公司备受期待的进军可穿戴计算领域&#xff0c;新款 Apple Vision Pro 承载着巨大的期望。 苹果公司推出的 Vision Pro 售…

测试——进阶篇

内容大纲: 软件测试的各种技术 1. 按照测试对象划分 1.1 界面测试 内容: 验证界面内容显示的完整性&#xff0c;一致性&#xff0c;准确性&#xff0c;友好性。比如界面内容对屏幕大小的自适应&#xff0c;换行&#xff0c;内容是否全部清晰展示&#xff1b;验证整个界面布局…

SAP ABAP性能优化分析工具

SAP系统提供了许多性能调优的工具&#xff0c;重点介绍下最常用几种SM50, ST05, SAT等工具&#xff1a; 1.工具概况 1.1 SM50 / SM66 - 工作进程监视器 通过这两个T-code, 可以查看当前SAP AS实例上面的工作进程&#xff0c;当某一工作进程长时间处于running的状态时&#…

AI 大事件:超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs

&#x1f9e0; AI 大事件&#xff1a;超级明星 Andrej Karpathy 创立AI教育公司 Eureka Labs 摘要 Andrej Karpathy 作为前 OpenAI 联合创始人、Tesla AI 团队负责人&#xff0c;他的专业性和实力备受瞩目。Karpathy 对 AI 的普及和教育充满热情&#xff0c;从 YouTube 教程到…

【C++报错已解决】 “Use of Uninitialized Variable“

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 在编程过程中&#xff0c;遇到 “Use of Uninitialized Variable” 报错可能会让人感到困惑。这个错误提示通常意味着你尝…

【BUG】已解决:ValueError: Expected 2D array, got 1D array instead

已解决&#xff1a;ValueError: Expected 2D array, got 1D array instead 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉…

Vue脚手架安装(保姆级)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

常用的点云预处理算法

点云预处理是处理点云数据时的重要部分&#xff0c;其目的是提高点云数据的质量和处理效率。通过去除离群点、减少点云密度和增强特征&#xff0c;可以消除噪声、减少计算量、提高算法的准确性和鲁棒性&#xff0c;从而为后续的点云处理和分析步骤&#xff08;如配准、分割和重…

防火墙--带宽管理

目录 核心思想 带宽限制 带宽保证 连接数的限制 如何实现 接口带宽 队列调度 配置位置 在接口处配置 带宽策略配置位置 带宽通道 配置地方 接口带宽、带宽策略和带宽通道联系 配置顺序 带块通道在那里配置 选项解释 引用方式 策略独占 策略共享 重标记DSCP优先…

keysight P9370A/P9375A USB矢量网络分析仪

Keysight P9370A USB 矢量网络分析仪&#xff0c;4.5 GHz P937xA 系列是是德科技紧凑型矢量网络分析仪&#xff08;VNA&#xff09;&#xff0c;其价格适中&#xff0c;并采用完整的双端口设计&#xff0c;可以显著减小测试需要的空间。这款紧凑型VNA 覆盖十分宽广的频 率范围…

移动终端的安全卫士

随着移动互联网的快速发展&#xff0c;移动端安全风险频发。设备指纹技术凭借高精度的设备识别能力&#xff0c;能够帮助企业提升移动端安全防护能力&#xff0c;精准区分合法与风险行为&#xff0c;跨行业赋能风控&#xff0c;为金融、电商、游戏等多领域提供强大的业务安全保…

基于python的图像去水印

1 代码 import cv2 import numpy as npdef remove_watermark(image_path, output_path):# 读取图片image cv2.imread(image_path)# 转换为灰度图gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用中值滤波去除噪声median_filtered cv2.medianBlur(gray, 5)# 计算图像的梯…

数据结构——栈和队列(C语言实现)

写在前面&#xff1a; 栈和队列是两种重要的线性结构。其也属于线性表&#xff0c;只是操作受限&#xff0c;本节主要讨论的是栈和队列的定义、表示方法以及C语言实现。 一、栈和队列的定义与特点 栈&#xff1a;是限定仅在表尾进行插入和删除的线性表。对栈来说&#xff0c;表…