简单粗暴理解GNN、GCN、GAT

news2024/11/24 4:29:29

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.coloradmin.cn/o/2209222.html

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

相关文章

Windows系统最高分辨率(单边16384)

11520*216024883200 来源&#xff1a; 2017-04-08【【极客湾】双路核弹&#xff1f;三屏4K&#xff1f;终极Geforce的究极测试&#xff01;】 【精准空降到 02:45】 https://www.bilibili.com/video/BV1tx411S7MU/?t165 2020-12-09【用三台8K电视玩游戏&#xff01;能成功吗&a…

【Linux】嵌入式Linux系统的组成、u-boot编译

Linux—嵌入式Linux系统的组成、u-boot编译 前言一、嵌入式Linux系统的组成1.1 嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a;1.2 PC机—Windows系统启动流程&#xff08;PC机—Linux系统、嵌入式ARM—linux系统的启动流程类似&#xff09; 二、编译u-boot2.1 u-bo…

测试质量报告=测试报告?当然不是!

测试报告大家都大概知道怎么做&#xff0c;但是质量报告呢&#xff0c;说起来到底与测试报告有什么不同&#xff1f; 仔细思考&#xff0c;其实这两种报告之间的差异还是比较直观的。 测试报告 更多是以测试为出发点&#xff0c;关注测试工作的背景、过程、完成度和结果。当…

Qt-系统处理定时器相关事件(59)

目录 描述 使用 描述 qt进行了封装&#xff0c;之前也使用过了 使用 先创建一个定时器 原型 这个事件是继承自 QObject 的&#xff0c;Widget 是继承 QObject 的&#xff0c;所以我们能够直接使用 重写 如下重写过后的定时器事件&#xff0c;正常倒计时了

rpc中常用的数据格式:Protobuf 图文详解

概述 protobuf也叫protocol buffer&#xff0c;是google 的一种数据交换的格式&#xff0c;它跨语言、跨平台。可以实现多种语言文件的数据传输实现&#xff08;java、c#、c、go 和 python 等&#xff09;&#xff0c;如一个cpp程序和一个python程序的数据传输。 由于它是一种…

Linux下以编译源码的方式安装Qt5与Qt6及其使用

文章目录 概要资源下载依赖安装编译Qt5Qt6 遇到的问题qtchooser使用 概要 自 Qt 5.15 开始&#xff0c;不再提供 open source offline installers&#xff0c;也就是原来的 .run 的安装文件&#xff0c;只能通过源码编译来安装了参考文章 资源下载 源码网址&#xff0c;链接…

【C语言复习】分支和循环

【C语言复习】分支和循环 1. if语句1.1 if1.2 else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题 2.关系操作符3. 条件操作符4.逻辑操作符&#xff1a;&& 、|| 、!4.1 逻辑取反运算符4.2 与运算符4.3或运算符4.4 练习&#xff1a;闰年的判断4.5短路 5.switch 语句5.1…

【黑苹果】记录MacOS升级Sonoma的过程

【黑苹果】记录MacOS升级Sonoma的过程 一、硬件二、提前说明三、准备OC四、选择驱动五、选择ACPI六、下载内核扩展七、其他问题 一、硬件 设备是神舟zx6-ct5da 具体参照下图 二、提前说明 本机器已经安装过 macOS Monterey 12.6&#xff0c;这次是升级到 macOS Sonoma 14。 …

GoogLeNet,代码示例,辅助分类器,Inception

亮点&#xff1a; 引入了Inception结构&#xff08;融合不同尺度的特征信息&#xff09; 使用1x1的卷积核进行降维以及映射处理 添加两个辅助分类器帮助训练 丢弃全连接层&#xff0c;使用平均池化层&#xff08;大大减少模型 参数&#xff09; GoogLeNet的网络连接图&…

LInux学习FreeType编程

文章目录 使用freetype 显示一个文字使用 freetype 显示一行文字了解笛卡尔坐标系每个字符的大小可能不同怎么在指定位置显示一行文字freetype 的几个重要数据结构1、**FT_Library**结构体2、FT_Face结构体3、FT_GlyphSlot结构体4、FT_Glyph结构体5、FT_BBox结构体 读懂显示一行…

Linux运维_Apache更改默认网站目录

1.首先创建目录 并且在目录下新建测试文件 index.html mkdir -p /home/test/ap_web 直接wget 百度官网 wget www.baidu.com 2.编辑配置文件 /etc/apache2/sites-available/000-default.conf(找到 DocumentRoot)更改为刚刚创建的目录 接着在添加 最终文件: 3.给文件 添加属…

Nacos配置管理和Nacos集群配置

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

在Spring Boot中具有多个实现的接口正确注入的六种方式

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 在Spring Boot中&#xff0c;当一个接口具有多个实现时&#xff0c;正确地将这些实现注入到需要使用它们的地方是一个常见的需求。以下是在Spring Boot中实现这一目标的六种方式&#xff1a; 1. 使用Autowir…

maven聚合ssm

如果没有写过ssm项目请移步SSM后端框架搭建&#xff08;有图有真相&#xff09;-CSDN博客 数据库准备 create table user (id int (11),uid varchar (60),name varchar (60),age int (11),sex varchar (12) ); insert into user (id, uid, name, age, sex) values(10,202409…

小米电机与STM32——CAN通信

背景介绍&#xff1a;为了利用小米电机&#xff0c;搭建机械臂的关节&#xff0c;需要学习小米电机的使用方法。计划采用STM32驱动小米电机&#xff0c;实现指定运动&#xff0c;为此需要了解他们之间的通信方式&#xff0c;指令写入方法等。花了很多时间学习&#xff0c;但网络…

LINUX网络编程:cookie和session

目录 1.cookie 1.2.cookie原理 1.3.cookie的格式以及字段 字段介绍&#xff1a; 完整的cookie 1.4.cookie的安全问题 2.session 2.2session的原理 1.cookie 在大家在浏览b站的时候&#xff0c;都会发现一个问题&#xff0c;当我们登录过一次之后&#xff0c;下次点开b站…

2024年最新Stable Diffusion模型资源合集!附整合安装包!

&#xff08;模型资源在ComfyUI、WebUI以及ForgeUI中都通用&#xff09; 之前的Stable Diffusion笔记受到了不少小伙伴的关注&#xff0c;很感谢大家的建议和支持。有很多小伙伴私信我问我一些AI绘画的模型资源在哪来下载&#xff0c;一般来说有两个网站比较常用&#xff0c;分…

位操作解决数组的花样遍历

文章目录 题目 一、思路&#xff1a; 二、代码 总结 题目 leetcodeT289 https://leetcode.cn/problems/game-of-life/description/ 一、思路&#xff1a; 这题思路很简单&#xff0c;对每个位置按照题目所给规则进行遍历&#xff0c;判断周围网格的活细胞数即可。但是题目要求…

【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)

一.简介与导航&#xff1a; SquareLine Studio是由LVGL官方开发的一款UI设计工具&#xff0c;采用图形化进行界面UI设计&#xff0c;轻易上手。 SquareLine Studio官方网址&#xff1a;https://squareline.io/SquareLine Studio官方文档&#xff1a;https://docs.squareline.io…

太阳能电池特性及其应用

中南民族大学-通信工程2024-大学物理下实验 目录 代码实现结果显示 &#x1f6e0;工具使用 MarsCode&#xff08;插件&#xff0c;集成在PyCharm&#xff09;&#xff1b; python编程&#xff08;豆包AI智能体&#xff09; &#x1f4bb;编程改进 此处是用「Matplotlib」来作图…