图神经网络01-基于Graph的机器学习简介(下)

简介: 图神经网络01-基于Graph的机器学习简介(下)

4 Graphs ML的应用实例


我们前面也提到过基于Graphs的机器学习可以做哪些任务:


13.png


  • Graph级别的预测,比如预测Graph的类型以及图的生成,比如预测整个分子团的属性
  • 节点级别的任务:这个也是较常见的,比如节点标签预测、节点学习等,判断节点是用户或者商品
  • 社区级别:发现新的子图,构建新的节点社区或者簇,常见的方式是图聚类
  • 边级别的预测:预测两个节点之间是否存在新的关系
  • 其他任务:图生成-比如新的药物结构图发现;图演化

    14.png


4.1 Node级别的Graph机器学习实例


  • 震惊科学界!DeepMind AI破解「蛋白质折叠」难题,攻克生物学50年巨大挑战

白质折叠(英语:Protein folding)是蛋白质获得其功能性结构和构象的物理过程。通过这一物理过程,蛋白质从无规则卷曲折叠成特定的功能性三维结构


原文链接:https://www.leiphone.com/news/202012/lklVFjHWl2C7xUFh.html

DeepMind在官方博客中称:AlphaFold的最新版本,在通过氨基酸序列精确预测蛋白质折叠结构方面,已经获得权威蛋白质结构预测评估机构(Critical Assessment of protein Structure Prediction,CASP)的认可。


此消息一出,立刻登上了Nature杂志封面,标题直接评论为:“它将改变一切!”。


15.png


震惊科学界!DeepMind AI破解「蛋白质折叠」难题,攻克生物学50年巨大挑战


同一时间,谷歌CEO兼首席执行官桑达尔·皮查伊 (Sundar Pichai)、斯坦福教授李飞飞、马斯克等众多科技大佬也在第一时间转推祝贺!

那么这场惊动科技圈、生物学界和科学界的重大突破,到底是一项怎样的研究?


16.png


自由建模类蛋白质靶标的两个示例

AlphaFold背后的AI机制

折叠的蛋白质可以看作是一个“空间图形”,其中残基是节点和边紧密连接在一起。


17.png


震惊科学界!DeepMind AI破解「蛋白质折叠」难题,攻克生物学50年巨大挑战

该图代表了AlphaFold系统的神经网络模型体系结构。该模型对蛋白质序列和氨基酸残基进行操作——在两种表示之间传递迭代信息以生成结构。


这一过程对于理解蛋白质内部的物理相互作用以及它们的进化史很重要。

对于AlphaFold的最新版本,研究人员创建了一个基于注意力机制的神经网络系统,经过端到端的训练来试图解释这个图的结构,同时对它所构建的隐式图进行推理。它通过使用多重序列对齐 (MSA) 和氨基酸残基对的表示来精化这个图形结构。


通过迭代这个过程,系统可以对蛋白质的基本物理结构做出准确的预测,并能够在几天的时间内确定高度精确的结构。此外,AlphaFold 还可以使用内部置信度来预测每个预测的蛋白质结构的哪些部分是可靠的。


AlphaFold系统所使用的数据,来自包括约170,000个蛋白质结构,以及未知结构的蛋白质序列的大型数据库。在训练时,它使用了大约128个 TPU v3内核 (大致相当于100-200个GPU) ,并仅运行了数周。这在当今机器学习中使用的大多数最先进的大型模型的上下文中是相对较小的计算量。


4.2 Edge级别的Graph机器学习实例


  • 基于社交网络的推荐系统

    18.png

    基于商品节点表示推荐相似商品

    19.png


  • 药物的副作用预测
    很多病人同时吃多种药物来治疗复杂的或者并发症,研究调查发现:
  • 在70-79岁之间病人有46%的  人会摄入超过5种药物
  • 很多病人会同时摄入20多种药物来治疗心脏病,抑郁症,失眠等症状;
    任务:假设有一对药物,然后预测两者之间的不良副作用


20.png

例如:辛伐他汀(Simvastatin)和环丙沙星(Ciprofloxacin)合在一起时分解肌肉组织的可能性有多大


21.png


通过实验结果可以发现:

阿托伐他汀与氨氯地平和替卡格雷的药物相互作用可能导致严重的横纹肌溶解


22.png


4.3 Subgraph级别的Graph机器学习实例


  • 交通预测

随着图网络的发展,其在非欧氏数据上的应用被进一步开发,而交通预测就是图网络的一个主要应用领域。交通预测指的是根据历史交通数据和交通网络的拓扑结构来预测未来的交通状况,包括但不限于速度、流量、拥堵等。交通流量预测是其他上层任务如路径规划的基础,是工业界非常关心的任务。

原文:https://blog.csdn.net/zhouchen1998/article/details/110136808



23.png


class ChebConv(nn.Module):
    def __init__(self, in_c, out_c, K, bias=True, normalize=True):
        """
        ChebNet conv
        :param in_c: input channels
        :param out_c:  output channels
        :param K: the order of Chebyshev Polynomial
        :param bias:  if use bias
        :param normalize:  if use norm
        """
        super(ChebConv, self).__init__()
        self.normalize = normalize
        self.weight = nn.Parameter(torch.Tensor(K + 1, 1, in_c, out_c))  # [K+1, 1, in_c, out_c]
        init.xavier_normal_(self.weight)
        if bias:
            self.bias = nn.Parameter(torch.Tensor(1, 1, out_c))
            init.zeros_(self.bias)
        else:
            self.register_parameter("bias", None)
        self.K = K + 1
    def forward(self, inputs, graph):
        """
        :param inputs: he input data, [B, N, C]
        :param graph: the graph structure, [N, N]
        :return: convolution result, [B, N, D]
        """
        L = ChebConv.get_laplacian(graph, self.normalize)  # [N, N]
        mul_L = self.cheb_polynomial(L).unsqueeze(1)  # [K, 1, N, N]
        result = torch.matmul(mul_L, inputs)  # [K, B, N, C]
        result = torch.matmul(result, self.weight)  # [K, B, N, D]
        result = torch.sum(result, dim=0) + self.bias  # [B, N, D]
        return result
    def cheb_polynomial(self, laplacian):
        """
        Compute the Chebyshev Polynomial, according to the graph laplacian
        :param laplacian: the multi order Chebyshev laplacian, [K, N, N]
        :return:
        """
        N = laplacian.size(0)  # [N, N]
        multi_order_laplacian = torch.zeros([self.K, N, N], device=laplacian.device, dtype=torch.float)  # [K, N, N]
        multi_order_laplacian[0] = torch.eye(N, device=laplacian.device, dtype=torch.float)
        if self.K == 1:
            return multi_order_laplacian
        else:
            multi_order_laplacian[1] = laplacian
            if self.K == 2:
                return multi_order_laplacian
            else:
                for k in range(2, self.K):
                    multi_order_laplacian[k] = 2 * torch.mm(laplacian, multi_order_laplacian[k - 1]) - \
                                               multi_order_laplacian[k - 2]
        return multi_order_laplacian
    @staticmethod
    def get_laplacian(graph, normalize):
        """
        compute the laplacian of the graph
        :param graph: the graph structure without self loop, [N, N]
        :param normalize: whether to used the normalized laplacian
        :return:
        """
        if normalize:
            D = torch.diag(torch.sum(graph, dim=-1) ** (-1 / 2))
            L = torch.eye(graph.size(0), device=graph.device, dtype=graph.dtype) - torch.mm(torch.mm(D, graph), D)
        else:
            D = torch.diag(torch.sum(graph, dim=-1))
            L = D - graph
        return L
class ChebNet(nn.Module):
    def __init__(self, in_c, hid_c, out_c, K):
        """
        :param in_c: int, number of input channels.
        :param hid_c: int, number of hidden channels.
        :param out_c: int, number of output channels.
        :param K:
        """
        super(ChebNet, self).__init__()
        self.conv1 = ChebConv(in_c=in_c, out_c=hid_c, K=K)
        self.conv2 = ChebConv(in_c=hid_c, out_c=out_c, K=K)
        self.act = nn.ReLU()
    def forward(self, data, device):
        graph_data = data["graph"].to(device)[0]  # [N, N]
        flow_x = data["flow_x"].to(device)  # [B, N, H, D]
        B, N = flow_x.size(0), flow_x.size(1)
        flow_x = flow_x.view(B, N, -1)  # [B, N, H*D]
        output_1 = self.act(self.conv1(flow_x, graph_data))
        output_2 = self.act(self.conv2(output_1, graph_data))
        return output_2.unsqueeze(2)


24.png


其中图构成了网络


25.png


扩展阅读: 两篇图神经网络交通预测 |A3T-GCN:用于交通预测的注意力时间图卷积网络  https://zhuanlan.zhihu.com/p/162815713


4.4 Graph级别的机器学习任务


  • 药物发现
    1)基于自回归流模型的分子图生成模型—— GraphAF
    GraphAF是一种新颖的分子图生成模型,不仅在数据密度估计上具有高度的模型灵活性,而且支持训练高效的并行计算。采取迭代采样,在生成过程中加入有效性检测以保证生成的化学分子真实、有效。
    2)可以预测分子逆合成路线的模型——G2Gs
    G2Gs是第一个基于图且不依赖于反应模版的逆合成预测方法,在接近或达到最先进方法表现的情况下,避免了反应模版和昂贵的子图同构,且具有更好的可扩展性。


26.png


27.png


28.png


扩展阅读:


AI+医疗:图表示学习在新药发现中的妙用  https://www.aminer.cn/research_report/5f5974b71f22880f6e944ca4

特别评述 | 人工智能助力药物研发:可解释性深度神经网络分子表征模型

http://www.phirda.com/artilce_20712.html?cId=3

Survey | 基于图卷积网络的药物发现方法  https://www.jiqizhixin.com/articles/2019-09-04-13

相关文章
|
22天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
14天前
|
机器学习/深度学习 人工智能 安全
人工智能与机器学习在网络安全中的应用
人工智能与机器学习在网络安全中的应用
39 0
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
57 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
2月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
108 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
22天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
|
2月前
|
机器学习/深度学习 安全 网络安全
利用机器学习优化网络安全威胁检测
【9月更文挑战第20天】在数字时代,网络安全成为企业和个人面临的重大挑战。传统的安全措施往往无法有效应对日益复杂的网络攻击手段。本文将探讨如何通过机器学习技术来提升威胁检测的效率和准确性,旨在为读者提供一种创新的视角,以理解和实施机器学习在网络安全中的应用,从而更好地保护数据和系统免受侵害。
|
1月前
|
机器学习/深度学习 人工智能 算法
#如何看待诺贝尔物理学奖颁给了机器学习与神经网络?#
2024年诺贝尔物理学奖首次颁发给机器学习与神经网络领域的研究者,标志着这一技术对物理学及多领域应用的深远影响。机器学习和神经网络不仅在生产、金融、医疗等行业展现出高效实用性,还在物理学研究中发挥了重要作用,如数据分析、模型优化和物理量预测等,促进了物理学与人工智能的深度融合与发展。
29 0
|
1月前
|
机器学习/深度学习 算法
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
|
1月前
|
机器学习/深度学习 人工智能 算法
【人工智能】人工智能的历史发展与机器学习和神经网络
【人工智能】人工智能的历史发展与机器学习和神经网络
62 0
|
9天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
30 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章