简单粗暴理解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撇,竖线就是拼接起来
第三个公式就是如果直接拼接起来效果不太好,可以使用平均的方法

学习链接

视频

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划lc

先找到规律&#xff0c;然后找边界情况&#xff1b;部分特殊情况分类讨论 *递归 70.爬楼梯 简单 提示 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a…

基于yolov8、yolov5的PCB板缺陷检测系统(含UI界面、数据集、训练好的模型、Python代码)

blog.csdnimg.cn/direct/6f53422ed9fd44dc8daad6dc5481c4c9.png) 项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 &#xff0c; 直接提供最少两个训练好的模型…

第十八届 图像像素类型转化于归一

知识点&#xff1a;像素归一化 opencv中提供四种归一的方法 -NORM_MINMAX -NORM_INF -NORM_L1 -NORM_L2 最常用的就是NORM_MINMAX归一的方法 相关的API normalize&#xff1a;void normalize(InputArray src, OutputArray dst, double alpha 1, double beta 0, int n…

关于C语⾔内存函数 memcpy memmove memset memcmp

memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…

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

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

linux入门——“权限”

linux中有权限的概念&#xff0c;最常见的就是安装一些命令的时候需要输入sudo来提权&#xff0c;那么为什么要有这个东西呢&#xff1f; linux是一个多用户操作系统&#xff0c;很多东西看起来是有很多分&#xff0c;但是实际的存储只有一份&#xff08;比如命令&#xff0c;不…

小程序知识付费的优势 知识付费服务 知识付费平台 知识付费方法

在信息爆炸的时代&#xff0c;知识如同繁星点点&#xff0c;璀璨而散落。如何在这片知识的海洋中精准捕捞&#xff0c;成为现代人追求自我提升的迫切需求。小程序知识付费&#xff0c;正是这样一座桥梁&#xff0c;它以独特的优势&#xff0c;让智慧触手可及&#xff0c;轻触未…

【C++差分数组】P1672何时运输的饲料

本文涉及知识点 C差分数组 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 P1672何时运输的饲料 原文比较啰嗦&#xff0c;我简述一下&#xff1a; 第x天运来F1(1<F1<1e6)千克的饲料&#xff0c;第D&#xff08;1<2e3)天还剩F2&…

数论与同余 - 离散数学系列(七)

目录 1. 整数的性质 整除与因数 最大公约数与最小公倍数 2. 欧几里得算法 算法步骤 3. 模运算与同余 模运算 同余关系 同余的性质 4. 数论在密码学中的应用 RSA 加密算法 5. 实际应用场景 1. 数字签名 2. 哈希函数与数据完整性 3. 密钥交换 6. 例题与练习 例题…

单链表速通后续!

目录 1>>闲话 2>>头删 3>>查找 4>>在指定位置之前插入 5>>删除指定结点 6>>指定位置之后插入 7>>删除指定位置之后的结点 特别思考&#xff1a; 8>>销毁单链表 Slist.h Slist.c test.c 9>>总结 1>>闲话…

干货|SQL注入思路总结(非常详细)零基础入门到精通,收藏这一篇就够 了

1.SQL注入的业务场景及危害 1.1 什么是SQL注入 SQL注入是服务器端未严格校验客户端发送的数据&#xff0c;而导致服务端SQL语句被恶意修改并成功执行的行为称为SQL注入。 1.2 为什么会有SQL注入 代码对带入SQL语句的参数过滤不严格 未启用框架的安全配置&#xff0c;例如&a…

[面试] java开发面经-1

前言 目录 1.看到你的简历里说使用Redis缓存高频数据&#xff0c;说一下Redis的操作 2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩 3.你的项目中使用了ThreadLocal&#xff0c;那么当有两个请求同时发出时&#xff0c;会怎么处理&#xff0c;可以同时处理两个请求吗 4.使用…

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

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

时间序列预测(一)——线性回归(linear regression)

目录 一、原理与目的 1、线性回归基于两个的假设&#xff1a; 2、线性回归的优缺点: 3、线性回归的主要目的是&#xff1a; 二、损失函数&#xff08;loss function&#xff09; 1、平方误差损失函数&#xff08;忽略了噪声误差&#xff09; 2、均方误差损失函数 三、随…

微服务实战——登录(普通登录、社交登录、SSO单点登录)

登录 1.1. 用户密码 PostMapping("/login")public String login(UserLoginVo vo, RedirectAttributes redirectAttributes, HttpSession session){R r memberFeignService.login(vo);if(r.getCode() 0){MemberRespVo data r.getData("data", new Type…

英伟达股价分析:英伟达股价能否上涨到150美元,接下来该如何操作?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经​ 猛兽财经核心观点&#xff1a; &#xff08;1&#xff09;华尔街投行Oppenheimer已将英伟达的目标价上调到了150美元。 &#xff08;2&#xff09;产品方面的最新进展和合作伙伴关系进一步提升了英伟达的市场地位。 &…

Nacos配置管理和Nacos集群配置

目录 Nacos作为配置中心实现配置管理 统一配置管理 如何在nocas添加配置文件 在微服务拉取nacos配置中心的配置 1&#xff09;引入nacos-config依赖 2&#xff09;添加bootstrap.yaml 3&#xff09;测试&#xff0c;读取nacos配置中心中配置文件的内容 ​编辑 总结&…

ORA-65096:公用用户名或角色名无效

CREATE USER DATA_SHARING IDENTIFIED BY "Ab2"; Oracle建立用户的的时候&#xff0c;可能会出现一直提示 ORA-65096:公用用户名或角色名无效&#xff1b; 我查了一下&#xff0c;好像是 oracle 12版本及以上版本的特性&#xff0c;用户名必须加c##或者C##前缀才能创…

拆解学习【反激-PD-氮化镓】(一)

小米67W桌面快充插座&#xff1a; 反激基本拓扑&#xff1a; 商用场景下&#xff0c;这个拓扑进行了如下优化&#xff1a; 1.Q22换成了氮化镓开关管&#xff0c;当然需要适配的能驱动氮化镓的控制芯片 2.D21二极管换成了MOS管。 3.由于是AC220V输入&#xff0c;设计了整流桥…

Android Camera系列(四):TextureView+OpenGL ES+Camera

别人贪婪时我恐惧&#xff0c;别人恐惧时我贪婪 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLSur…