简单粗暴理解GNN、GCN、GAT

GNN

思想:近朱者赤近墨者黑

GNN的流程:

  1. 聚合(把邻居的信息贴到自己身上来,作为它自己特征的补足)
  2. 更新
  3. 循环(为什么要多次?看以下例子)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GNN能干嘛?

  • 1.结点分类(比如判断A是哪一类);算loss后可以对前面式子中a、b、c训练优化
  • 2.关联预测(比如预测A和B有没有可能有关系

GNN可以得到包含graph的结构信息

iDrug: Integration of drug repositioning and drug-target prediction via cross-network embedding

药物重定位就是老药新用的意思:一个药不止能作用一个靶点、可以作用很多靶点,并且可能一个靶点能影响很多疾病,所以一个药会有多个能治的病。找到老药能治的新的病就是药物重定位

文章出发点:
1、一般来说,drug-disease(药物-疾病)任务和drug-target(药物-蛋白)任务都是当作两个任务来进行处理的。但是因为药物怎样来治疗一个疾病通常是药物能影响某个靶点,而这个靶点能治疗某个疾病。所以这两个任务关联度很高
2、本文将这两个关联度很高的任务进行融合
3、提出一种模型iDrug,将药物重定位和靶点预测整合到一个过程中,用cross-network embedding进行建模,并且提出了一种知识转移的方法,从一个领域到另一个领域
4、iDrug的模型表现十分优秀

在这里插入图片描述
在这里插入图片描述

在这个网络结构上学习embedding,所谓学习embedding就是学习药物和疾病的表示

在这里插入图片描述
在这里插入图片描述
一般如果要计算药物-药物相似度,可以用SMILES或者其他。疾病-疾病相似度,可以用match?做语义相似度。这里target-target(蛋白质-蛋白质)相似度是用smith-waterman计算
在这里插入图片描述
虽然是跨域,首先要把域内事情处理好:
在这里插入图片描述

在这里插入图片描述

域内就是简单的矩阵分解的方法:重构X矩阵(也就是关联矩阵),让U(代表药物的特征)V(代表疾病的特征)两个矩阵相乘趋近原始的关联矩阵X,然后乘上一个权重,然后让它们的值最小。矩阵分解理解为:生成两个feature,也就是两个embedding,让它们能够重构回原来的矩阵
在这里插入图片描述
这个部分是拉普拉斯平滑
可以认为是一个小trick,一个小的改进,主目标还是前面那个矩阵分解。类似于正则化的一种,相当于一种补足的改进

网络间模型:
翻到前面的图,发现锚关联是没有用到的,怎么用锚关联呢?——假设此时我们在两个领域内都分别学习到了药物的特征表达。那么问题来了,这些药物有一些其实是一样的。基于的理论就是,同一种药物在两个领域内的表达(feature)应该趋近于相似
在这里插入图片描述
S相当于刚才那个锚连接矩阵,如果第i行第j列是1,说明领域1的第i个药物与领域2的第j个药物是一样的
U(药物表达)
S乘上U表示只管两个领域内都存在的药物,而那些两个领域内没有重合的药物不管
然后把它们做一个映射,再减去它们原本药物的表达,再让这个值最小
在这里插入图片描述

最后它的总loss是 领域内矩阵分解的loss+跨领域保证两个相同drug分布相近的loss+拉普拉斯平滑+正则化

以上就是它整个方法的模型,下面再说说结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GCN

图卷积神经网络
GNN的一种特殊形式
GCN的主要变化就是在“聚合”这一步
在这里插入图片描述

这个过程中abc值如何设定?GCN就是来解决abc值的设定问题的
在这里插入图片描述
但这个方法是有问题的:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
A上面加了个波浪线就是A矩阵加上了自环,也就是加上了一个单位阵

拉普拉斯对称归一化矩阵

GCN本质上就是在平均法的基础上扩增了针对每个结点的度做了一个对称归一化

知乎

  1. 为何要归一化?
    采用加法规则时,对于度大的节点特征越来越大,而对于度小的节点却相反,这可能导致网络训练过程中梯度爆炸或者消失的问题。

  2. 如何归一化?
    在这里插入图片描述
    简单的归一化方法:
    D ^ − 1 A ^ \hat{D}^{-1}\hat{A} D^1A^,但是这样得到的矩阵是非对称阵
    所以使用 D ^ − 1 / 2 A ^ D ^ − 1 / 2 \hat{D}^{-1/2}\hat{A}\hat{D}^{-1/2} D^1/2A^D^1/2

我们对 A ^ \hat{A} A^ 左乘 D ^ − 1 / 2 \hat{D}^{-1/2} D^1/2 ,右乘 D ^ − 1 / 2 \hat{D}^{-1/2} D^1/2,得到 D ^ − 1 / 2 A ^ D ^ − 1 / 2 \hat{D}^{-1/2}\hat{A}\hat{D}^{-1/2} D^1/2A^D^1/2。这样既得到了近似的归一化也保持了矩阵对称性。(左乘是行变换,右乘是列变换。)

同时我们观察一下归一化的矩阵与特征向量矩阵的乘积:
在这里插入图片描述
这种聚合方式实际上就是在对邻接求和取平均

D ^ − 1 / 2 A ^ D ^ − 1 / 2 \hat{D}^{-1/2}\hat{A}\hat{D}^{-1/2} D^1/2A^D^1/2 这种归一化方式,将不再单单地对领域节特征点取平均,它不仅考虑了节点i对度,也考虑了邻接节点j的度,当邻居节点j度数较大时,它在聚合时贡献地会更少。这也比较好理解,存在B->A<-C<-[D,E,F] 这么一个图,当使用这种归一化矩阵,在对A这个节点的特征进行更新时,B占的权重会更大,C占的权重会更小。因为B对A产生影响,与A对B产生对影响是一样的(无向图),由于B只有A这个邻居,所以A对B影响很大;同样地,C对A产生影响,与A对C产生对影响是一样的,因为C有很多节点,所以A对C节点对影响没那么大,即C对A节点对影响没那么大。
在这里插入图片描述

Should Graph Convolution Trust Neighbors?A Simple Causal Inference Method

在这里插入图片描述

GAT

前面说到 GCN 主要是做了一个归一化

之前的结点之间的重要性,都是根据 来做处理。GAT是让模型自动来学习A对B的重要性
在这里插入图片描述

注意这里的*是点乘,也就是计算向量内积,所以分子最后计算结果是一个值
在这里插入图片描述
e_ij就是圈内的值,i和j就比如上面图里的A和C

多头注意力机制

就是为了确保gat更稳定
比如爱好是一个gat,经济状况又是一个gat
所谓多头比如刚才那样的gat使用3套。要优化的参数就只有W和a
这个图里每一种颜色的箭头就是一套gat,分别优化W和a
在这里插入图片描述
第一个公式就是单头的
多头的就是第二个公式,比如这里三种颜色因此K=3。由于三套attention最后都会生成h_i撇,竖线就是拼接起来
第三个公式就是如果直接拼接起来效果不太好,可以使用平均的方法

学习链接

视频

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表&#xff08;重点掌握&#xff09;】 可以使用类&#xff1a;“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁&#xff0c;就是直接给put&#xff0c;get等方法加上synch…

【网络协议】TCP协议常用机制——延迟应答、捎带应答、面向字节流、异常处理,保姆级详解,建议收藏

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 前几篇文章&#xff0c;博主带大家梳理了一下TCP协议的几个核心机制&#xff0c;比如保证可靠性的 确认应答、超时重传 机制&#xff0c;和提高传输效率的 滑动窗口及其相关优化机…

Qt实现Halcon窗口显示当前图片坐标

一、前言 Halcon加载图片的窗口&#xff0c;不仅能放大和缩小图片&#xff0c;还可以按住Ctrl键显示鼠标下的灰度值&#xff0c;这种方式很方便我们分析缺陷的灰度和对比度。 二、实现方式 ① 创建显示坐标和灰度的widget窗口 下图的是widget部件&#xff0c;使用了4个label控…

常说的风险评估,那么「基于风险的测试 (RBT)」如何测试?

基于风险的测试 &#xff08;RBT&#xff09; 是一种测试方法&#xff0c;它根据风险的概率和影响确定测试活动的优先级。它涉及在潜在问题发生之前识别它们&#xff0c;并将资源分配给风险最高的测试区域。 在 RBT 中&#xff0c;“风险”是指缺陷的可能性及其对系统运行或业…

DS线性表之单链表的讲解和实现(2)

文章目录 前言一、链表的概念二、链表的分类三、链表的结构四、前置知识准备五、单链表的模拟实现定义头节点初始化单链表销毁单链表打印单链表申请节点头插数据尾插数据头删数据尾删数据查询数据在pos位置之后插入数据删除pos位置之后的数据 总结 前言 本篇的单链表完全来说是…

架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法

昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题&#xff0c;就是在服务器外网架设时&#xff0c;建好角色点开始游戏提示此服务器满员&#xff0c;这个问题一般比较少见&#xff0c;而且出现的话一般都是GEE引擎的版本。 他折腾了半天&#xff0c;一直没进游戏&#x…

Apache Linkis + OceanBase:如何提升数据分析效率

计算中间件 Apache Linkis 构建了一个计算中间件层&#xff0c;以实现上层应用程序和底层数据引擎之间的连接、治理和编排。目前&#xff0c;已经支持通过数据源的功能&#xff0c;实现用户通过Linkis 对接并使用 OceanBase数据库。 本文详细阐述了在 Apache Linkis v1.3.2中&a…

VGG16模型实现MNIST图像分类

MNIST图像数据集 MNIST&#xff08;Modified National Institute of Standards and Technology&#xff09;是一个经典的机器学习数据集&#xff0c;常用于训练和测试图像处理和机器学习算法&#xff0c;特别是在数字识别领域。该数据集包含了大约 7 万张手写数字图片&#xf…

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科&#xff0c;在计算机科学中有着广泛的应用。大一的计算机课程中&#xff0c;线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…

高考技术——pandas使用

百家讲坛&#xff0c;谈论古今&#xff0c;今天我们不聊别的&#xff0c;我们来聊一聊中国的国宝——大熊猫&#xff08;bushi&#xff09; 好好&#xff0c;言归正传&#xff0c;我们今天来讲pandas import pandas as pd 申明无需多言&#xff0c;高考主要考察Series和Data…

Milvus向量数据库管理工具[Attu]实践

Attu是一款专为Milvus向量数据库打造的开源数据库管理工具&#xff0c;提供了便捷的图形化界面&#xff0c;极大地简化了对Milvus数据库的操作与管理流程。阿里云Milvus集成了Attu&#xff0c;以便更加高效地管理数据库、集合&#xff08;Collection&#xff09;、索引&#xf…

第四次论文问题知识点及问题

1、NP-hard问题 NP-hard&#xff0c;指所有NP问题都能在多项式时间复杂度内归约到的问题。 2、启发式算法 ‌‌启发式算法&#xff08;heuristic algorithm&#xff09;是相对于最优化算法提出的。它是一种基于直观或经验构造的算法&#xff0c;旨在以可接受的花费给出待解决…

树莓派3b安装ubuntu18.04服务器系统server配置网线连接

下载ubuntu镜像网址 img镜像&#xff0c;即树莓派官方烧录器使用的镜像网址 ubuntu18.04-server&#xff1a;ARM/RaspberryPi - Ubuntu Wiki 其他版本&#xff1a;Index of /ubuntu/releases 下载后解压即可。 发现使用官方烧录器烧录配置时配置wifi无论如何都不能使用&am…

GO网络编程(三):海量用户通信系统1:登录功能初步

一、准备工作 需求分析 1)用户注册 2)用户登录 3)显示在线用户列表 4)群聊(广播) 5)点对点聊天 6)离线留言 主界面 首先&#xff0c;在项目根目录下初始化mod&#xff0c;然后按照如下结构设计目录&#xff1a; 海量用户通信系统/ ├── go.mod ├── client/ │ ├──…

【C++】基于红黑树封装set和map

&#x1f680;个人主页&#xff1a;小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言一、更高维度的泛型二、模版参数三、比较逻辑的重写四、迭代器4.1 const迭代器4.2 重载4.3 - -重载 五、完整代…

阿里P8面试官推荐学习的11大专题:java面试精讲框架文档

本篇文章给大家分享一波&#xff0c;阿里P8面试官推荐学习的11大专题&#xff1a;java面试精讲框架文档&#xff0c;主要包含11大块的内容&#xff1a;spring、springcloud、netty、zookeeper、kafka、Hadoop、HBASE、Cassandra、elasticsearch、spark、flink&#xff1b;希望大…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意&#xff1a;在C语言中&#xff0c;如果内存不够…

stm32定时器中断和外部中断

一&#xff0c;中断系统的介绍 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 中…

Github 优质项目推荐(第七期):涵盖免费服务、API、低代码、安卓root、深度学习

文章目录 Github优质项目推荐 - 第七期一、【LangGPT】&#xff0c;5.7k stars - 让每个人都成为提示专家二、【awesome-selfhosted】&#xff0c;198k stars - 免费软件网络服务和 Web 应用程序列表三、【public-apis】&#xff0c;315k stars - 免费 API四、【JeecgBoot】&am…

No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史

大家好&#xff01;作为一个喜欢探索本质的INTP&#xff0c;我整理了一份简明易懂的Web安全笔记。希望能帮助你轻松掌握这个领域的核心知识。 这份笔记涵盖了Web发展的历程&#xff0c;从静态的Web 1.0到智能化的Web 3.0。我们将探讨URL和HTTP协议&#xff0c;揭示它们在网络中…