文章目录
Abstract
预测多药的效果是一项艰巨的任务,每年花费大量金钱来弥补多药带来的负面药物相互作用的影响。 但是,与传统方法相比,机器学习可用于给出更准确的预测。 在本文中,我们概述了将机器学习应用于多药的当前方法。 我们严格定义了理论上的多药问题,并设计了一个图卷积网络,可以学习对问题进行强有力的建模。 我们讨论了它的性能,并提供了进一步的步骤来推广该模型,以便更好地了解多药领域以及机器学习对其进行改进的潜力。
Nomenclature(专业术语)
| 简写 | 全称 |
|---|---|
| AI | Artificial Intelligence |
| DL | Deep Learning |
| DNN | Deep Neural Network |
| GCN | Graph Convolutional Network |
| ML | machine Learning |
1. Introduction
多药是指同时使用多种药物来治疗单一疾病或病症。通常,同时使用五种或更多药物被视为多药。由于任何一种药物都会与人体发生复杂的相互作用,因此开发出一种批准用于人类的单一药物的过程十分艰巨。将一种药物从概念推向市场的成本估计为13亿美元,批准率约为千分之一。当同时使用多种药物来治疗某种疾病时,这些药物之间的相互作用很可能会产生副作用,其结果可能会严重损害人的健康。每年,仅美国就花费300亿至1800亿美元来解决由多药引起的问题。这些副作用通常比单一药物引起的副作用更难识别。由于对药物与所有上市药物的相互作用进行严格测试是不可行的,因此资源限制进一步加剧了这个问题。因此,有许多工作要做以改善多药实践。
促进多药发展的一种方法是通过应用机器学习(ML)。ML是让人工智能(AI)学习执行任务而无需提供明确指示的过程。取而代之的是,ML流程使用大量数据来识别模式并根据它们进行推断。例如,根据过去20年的纽约天气数据,ML流程可以学习预测明天的纽约天气。但是,由于未提供ML流程的明确指示,因此必须自行确定最佳指标来预测天气,例如前一天的天气。起初,就像一个孩子一样,机器学习过程不会比天真的猜测更好。为了变得更加聪明,机器学习过程必须像人类一样实践。也就是说,机器学习过程需要做出预测,看看它是对还是错,从中学习并在下一次给出更好的预测。但是,每天预测一次天气并不是最快的学习方法。ML流程无需告诉ML流程来预测纽约明天的天气,然后等待一天以查看其天气预报是否正确,而是可以选择过去的日期,隐藏自身的实际答案,然后尝试预测日期的天气基于之前的天气数据。经过足够的练习,通过反复试验,它将学会根据良好的指标做出预测,例如过去几年的当天天气,当天的天气情况以及纽约天气的历史趋势。通过这一训练,测试和从大量准确数据中的反馈中学习的过程,机器学习过程可以快速发展针对特定问题的专业知识,并像人类一样做出预测。
由于存在大量的历史悠久的多药数据,而且每种药物的特性通常都已广为人知,因此多药将从ML中受益匪浅。即,使用有关药物的历史数据; 它们与人体中特定疾病,病症和蛋白质的相互作用; 与其他药物的任何相互作用; 可以训练ML来预测多药中发生的复杂相互作用。ML可以协助多药进行的一些任务如下:
- 识别药物之间存在问题的相互作用
- 强化先前在多药中的发现
- 提供确定一组药物风险的快速实现的方法
- 在多药中发现新的有利的药物相互作用
这些好处的结果如下:
- 降低多药的相关成本,包括死亡率和经济资源
- 增进我们对多药领域的了解
- 集中和组成多药的大量知识
因此,本研究的动机是协助改善ML的多药。在本文中,我们概述了使用ML改进多药的当前方法,为多药数据集提出了理论模型,并创建了图卷积网络(GCN)模型来对数据集进行训练。数据是从低维(潜在)空间生成的,但是只能在高维(观测)空间中观察到。这意味着数据实际上依赖于少数因素,但是被人为拉伸以似乎依赖于许多因素。GCN仅看到数据的观察空间,并学会对数据集进行准确的预测。数据集虽然简单,但却是重要的。我们将详细介绍并讨论通过在GCN上模拟理论,简单但重要的多药数据集获得的知识。
1.1 Current Methods of ML for Polypharmacy
ML应用于多药的主要子领域是深度学习(DL)。DL是ML的子集,它受到人类思维和学习方式的启发。DL模型通常基于大脑本身的结构和功能。DL适用于图像分类,结果预测,自然语言处理(NLP)和人类日常执行的许多其他操作。深度神经网络(DNN)是DL的一个子区域,它代表了将人脑模仿为ML网络的概念。DNN当前是在多药领域中使用的一种流行的ML模型。就像我们将看到的那样,DNN具有对多药非常有用的属性。
人脑中有许多相互连接的细胞,称为神经元。这些神经元之间的关系可以认为是一个非常复杂的有向图,其中每个节点都是一个神经元。神经元从具有指向的定向边缘的神经元接收冲动; 并且,根据脉冲的强度,可以**脉冲并将其发送到其定向边指向的神经元,然后可以**其他神经元,从而引起级联效应(cascade effect)。神经元图也有许多源和宿神经元(sink neurons)。例如,如果某个物体在膝盖下方与人的腿碰撞,则会引起物理感觉,从而触发源神经元向与其连接的神经元发送脉冲。最终,这些脉冲将达到足够的级联,以使这些脉冲到达负责控制大腿肌肉的神经元。这种冲动会导致腿部肌肉收缩,使人的膝盖自动踢出。这就是人类反应的方式。根据神经元图(神经网络)的设置方式,某些刺激可以确定性地引起某些反应,例如反射。
Figure 1.1: 一个神经元从其他神经元接收电信号。神经元将根据每个脉冲的强度以及神经元如何评估每个传入信号,向其传出神经元发送信号。
这种神经网络模型还具有从反复试验中学习的能力。为此,神经元可以独立地评估其传入连接的冲动。 一个传入神经元的冲动的价值可能是另一个神经元的一半。当重复执行动作时,基于反馈,一个神经元对某个神经元的冲动反应可能会越来越少,而对另一个神经元的冲动反应会越来越多。例如,当一个人尝试一项任务并将其正确执行时,该人会感到高兴。这种幸福感可以反馈到神经网络。 因此,与任务有关的神经元将开始重视传入的冲动,从而更多地产生积极的反馈。当这个人做错任务时,就会出现相反的情况。最终,神经元将确定哪些传入的脉冲产生最佳结果。这就是开发肌肉记忆的方式。当然,神经科学领域还有很多,但这足以解释DNN的基本原理。
由于神经网络能够根据某些输入确定性地计算输出并能够从试验和错误中学习,因此毫不奇怪,它是一种强大的计算模型,可实现人类智能。幸运的是,它也是一个可以被计算机大致捕获的计算模型。
1.2 Deep Neural Networks
如前所述,神经网络可以在计算机科学中建模为由数千个,数百万个或更紧密连接的节点组成的有向图,其中每个节点都是一个神经元。这些节点被组织成具有单向数据流的层。整个网络中可以有源节点和宿节点。 但是,通常在网络的起始处只有一个输入层,而在末端则只有一个输出层。中间的层称为隐藏层,它们执行计算。接收到输入后,取决于强度,相应的源节点将以以数字形式测量的强度(通常为0到1)**。然后,源节点将此编号发送到其每个传出连接。对于非源节点,的每个传入连接都被分配了“权重”;某些传入连接比其他传入连接重要得多,因此权重更高。节点将通过传入连接发送的数字作为传入连接**的“强度”,并将其乘以分配给该连接的权重。如果有多个已**的传入连接,则将对每个值进行加权,然后求和。然后,该节点会将这个数字缩放到0到1的范围,其中1表示**尽可能强,并将该数字发送到它的每个传出连接。它在整个网络中传播,并最终到达接收器节点,在此生成输出。对于神经网络,可以有很多输入。回到前面的机器学习示例,对神经网络的一个输入可能是前一天是否下雨。 另一个输入可能是前一周的平均温度; 等等。输出可能是今天是否下雨以及平均温度是多少。
神经网络由权重控制,权重以数字表示,权重是基于反馈确定的。但是,一开始,神经网络没有反馈,因此一无所知。与人脑拥有数百万年的反馈并从一个经过良好调整的网络开始时不同,神经网络会在瞬间出现,并且必须学会在短时间内解决复杂的问题。为了解决这个问题,神经网络中的所有节点最初都接收随机连接权重。因此,网络不会比开始时随机猜测更好。但是,这种初始化方案使网络可以快速从每个节点的反馈中识别每个节点在早期的帮助程度。例如,如果一个节点的入站连接权重初始化为.999,但始终错误地给出了答案,则它可能会降低该权重并增加其其他入站连接的权重。最终,网络将开始始终如一地提供正确的输出,并着手加强到目前为止所学到的知识。
DNN只是具有多个隐藏层的神经网络。 DNN中的更多层可以为更复杂的问题建模。 但是,太多的层会导致网络学习缓慢,因为它在调整自身时会考虑太多因素。 这种折衷是ML中常见的平衡行为。 例如,此问题还影响每个隐藏层中节点数的选择。
机器学习的学习分为两个交替的阶段:训练和测试。 这两个阶段都为DNN提供了一组输入,并评估了网络的性能。 在训练期间,网络会根据来自其预测尝试的反馈来调整其值; 这是学习的地方。 与训练不同,测试不会向网络提供反馈。 相反,测试仅用于评估网络的性能。为了正确评估网络的性能,测试必须无偏见,这一点很重要。 为了完成无偏测试,训练和测试数据集必须互斥。 因此,网络在其训练阶段将永远看不到测试数据。 因此,网络将永远不会收到测试集中任何数据的反馈。因此,测试结果是公正的,可以很好地表明网络对所解决问题的实际掌握。 但是,这代表了另一种平衡行为:由于网络仅从其训练阶段接收反馈,因此它可能会简单地学会为与训练数据类似的输入给出正确的答案。因此,当它找到相同问题的陌生数据时,将做出错误的预测。 这称为过度拟合。 进行预测时,过高的训练精度会降低测试的准确性,这表明过拟合。另一方面,网络可能正在学习普遍的问题,但总体上做得并不好。 这称为欠拟合。 进行预测时,训练不足和测试准确性低均表示拟合不足。重要的是要注意,具有低训练精度和高测试精度的可能性非常小,因为网络专门适合于训练数据。 DNN的参数很多,可能导致过拟合和欠拟合。 仅举几例:隐藏层的数量,每个隐藏层中的节点数量,每个节点的**功能以及学习信息随机丢失的发生率(以防止过度拟合)。
GCN是DNN的一种特定类型。 到目前为止,所介绍的内容足以引入GCN。
2. Relation works
正如T. Kipf和M. Welling首次提出的,图卷积网络(GCN)特别是一种DNN,它学习可以用图建模的问题。计算机科学关心的许多问题都可以通过图形来建模,包括社交网络,万维网,以及我们研究特别感兴趣的多药中的蛋白质相互作用。例如,在社交网络中,每个人都可以表示为图中的节点。如果两个人是共同的朋友,则他们之间存在无向的优势。给定一个不完整的社交网络图,GCN可以学习预测两个人是否将成为彼此的朋友,从而完成该图。它可以通过观察图中的趋势来学习这样做。例如,如果一个人A与一个人B有很多共同的朋友,则从统计上讲,A和B也有可能是朋友。此外,有关每个节点的外部信息(称为特征)可以支持GCN。例如,在社交网络中,如果网络中的每个人都进行了性格测试,那么GCN可能会观察到性格非常相似的人往往更是共同的朋友。将节点之间的可观察边缘与有关每个节点的特征信息相结合,GCN可以学会有效地预测图中的事物,例如缺失边缘。由于多药数据集通常是大型的复杂图,因此GCN是建模这些问题的极佳选择。
近来,人们对将ML应用于多药的前景进行了大量研究。 这项研究的重点是为将GCN等ML技术应用于多药奠定基础。总体而言,GCN引起了极大的兴趣,成为一个研究主题,重点是提高GCN的可扩展性和功能,并基于GCN创建新的ML模型。某些研究,例如创建基于注意力机制的GCN,可能会在将来应用于此研究。
2.1 Graph Convolutional Networks
GCN将图的数据表示形式(通常是邻接矩阵)和特征矩阵作为输入。“特征”是图中每个节点的属性,并表示为数字。例如,形成社交网络的一群人中的特征可以是每个人的耐心程度的量度。 特征矩阵是二维的。特征矩阵中的每一行都是对应于图中一个节点的特征向量,是每个节点特征的度量。特征矩阵中的每一列都对应于某个特征,我们认为这对于我们的网络了解节点和图很有用。因此,在给定行和列的情况下,要素矩阵中的位置是一个要素值,它代表特定节点与特定属性之间的关系,我们认为该属性以数字的形式对网络有用。例如,在Myers-Briggs类型指标测试中,研究了四个人格特质(特征):
- 外向与内向
- 感知与直觉
- 思考与感觉
- 判断与感知
我们可以以0到1的密集比例来表示这四个特征中的每一个,其中a0表示该人强烈展现出左性格,a1表示该人强烈展现出右性格,a.5表示该人展现出两种性格特质适度。如果我们假设我们有一个由四个人组成的社交网络,那么在性格测试后,四个人中的每个人都会有四个特征值,在特征矩阵中包含四个特征向量:
第一行是人物A的特征向量。 它表明人A内向,感知,有适度的感觉和思考以及相当的感知力。
然后,让我们假设以下是描述这四个人的社交网络的邻接矩阵:
现在,我们已经建立了GCN用于学习的输入。 GCN通过称为卷积的过程从这些输入中学习,即卷积在一起。 网络会缠绕/组合/卷积有关每个节点的特征信息以及所提供的图形,以试图理解为什么存在某些边缘。 我们将描述GCN如何使用卷积学习。
与任何DNN一样,GCN包含许多被输入和输出层包围的隐藏层。GCN的一系列隐藏层始于一系列图卷积层。 每个图卷积层将图的邻接矩阵表示形式和特征矩阵作为输入,并输出具有任意数量特征的另一个特征矩阵。如果输入特征矩阵为,则输出特征矩阵为,其中是任意数(通常小于)。输出特征矩阵是和的卷积信息。这意味着输出特征矩阵包含以某种方式与邻接矩阵中包含的信息组合的输入特征矩阵的信息。有很多方法可以“组合”这两个矩阵。 将简要讨论一种这样的方法。因为我们可以任意选择图卷积层的输出特征的数量,所以我们可以建立一系列图卷积层,以和作为输入和输出:
有许多方法可以将和结合起来以获得。 我们提供以下简单示例:
在上述函数中,是对乘积进行操作的一些**函数。 通常是ReLU函数。是邻接矩阵; 是上一层的特征矩阵; 是当前图卷积层的权重矩阵。是,其中是图中的节点数; 是,其中是上一层的特征数量; 是,其中是当前图层的特征数。因此,当串联相乘时,输出矩阵是,它是具有任意数量特征的特征矩阵。
将邻接矩阵与特征信息相乘是一种将两者盲目卷积/组合在一起的方法。 利用网络自身的权重矩阵进一步对所得矩阵的不同值进行加权,使网络能够了解哪些特征-边缘关系与准确进行预测最相关。实际上,通常比我们的示例更复杂,但这足以使人们对该过程有一个一般的了解。
在将初始特征矩阵和邻接图传递到第一层之后,将输出(和邻接矩阵)依次传递到更多的图卷积层,同时缩小每个输出特征矩阵的结果特征的数量,可以使GCN获得所提供信息趋势的全面视图,从较早的层到较晚的层都更明确。在获得最终图卷积层的输出之后,我们为原始输入提供了一个紧凑的通用特征矩阵,希望该矩阵包含尽可能多的相关信息。 我们可以将此特征矩阵作为输入传递到标准DNN层中,以对图进行预测。
作为GCN问题的一般示例,让我们假设我们有一个不完整的图,其中包含所有节点,但不包含所有边。 然后,我们要预测图中缺少的边缘。实际上,为GCN提供整个邻接矩阵不是很有帮助,尤其是在图形很大的情况下。 网络将很难从整个数据集进行推断。因此,代替提供整个邻接矩阵和特征矩阵,我们可以将图形和特征矩阵的子部分提供给GCN。 有很多方法可以做到这一点。例如,我们可以从图中选择一个随机边,并提供形成该边的节点的两个特征向量。 然后,网络将尝试一次从一个边了解两个节点共享一个边的原因。但是,这将非常慢。更好的方法是为网络提供一个子图和一个子特征矩阵。 可以通过随机选择几个节点并在它们之间形成邻接矩阵来构造此子图。然后,子特征矩阵将简单地是由每个选定节点的特征向量组成的矩阵。 这使数据集足够小,以使网络可以学习重要信息,而不必提供太多图,以至于看不到总体趋势。此外,这还可以防止过度拟合,因为反复向网络显示整个图形会使网络偏向于仅“存储”整个图。因此,不太可能预测丢失的边,因为它反复观察到两个节点在训练期间不共享边。
2.2 Decagon
这项研究特别令人感兴趣,Decagon是一个GCN,旨在对现实世界中的多药数据集进行训练。Decagon的设计目标是预测多药中药物组合的安全性。 Decagon的数据集由几个药物和蛋白质信息数据库组成,这些数据库汇总成一个庞大的图问题。数据包括这些药物和蛋白质的许多交叉相互作用。例如,如果已知在人体中发现的两种蛋白质会相互作用,那么在Decagon的图中,这些蛋白质共享一条边。同样,如果已知药物会与蛋白质相互作用,则它们共享一个边。 这些边缘是无向的,并且很简单。 在蛋白质-蛋白质和药物-蛋白质对之间只有一种边可以存在,这表明两者相互作用。类似地,如果已知两种药物具有相互作用(称为副作用),则两种药物之间存在边。相反,该边包含有关特定副作用的信息(因此并不简单)。例如,如果两种药物的相互作用导致胃肠道出血,则它们之间共享的边缘就是胃肠道出血边。如果两种药物的相互作用导致多种副作用,那么它们共享多个边。 最终结果是一个庞大的复杂图,具有两个节点类型(药物和蛋白质)和许多边类型(蛋白质-蛋白质边,药物蛋白质边以及大量可能的药物-药物副作用边)。 以下是Decagon的图形可视化:
Decagon还具有基于所观察到的药物-蛋白质数据集的一般属性的有关每种蛋白质和药物的特征信息。 这无疑是一个非常复杂的多药问题,由于观察到的数据不确定性使该问题更加复杂,并且不能保证其正确性。另外,某些所选特征可能与确定交互无关。
Decagon通过从图中删除一些边并尝试重新预测它们的边缘来测试其网络,这与之前的GCN问题示例类似。 尽管数据复杂且不确定,Decagon似乎相当成功。 但是,还有很多改进的余地。 特别是,从问题中除去复杂性,然后对所得的子问题进行实验,可以更好地理解整个问题。
3. GCN Model
为了消除Decagon问题的复杂性,我们提出了以下更简单但又不平凡的理论上的多药图,我们可以为其设计GCN模型并学习做出预测:
- 生成药物图,其中两种药物之间的边缘指示它们会引起副作用。
- 只有一种节点类型和一种边缘类型。 因此,该图是简单且无向的。
以下是示例药物图:
如果该图是完全随机生成的,则没有什么要学习的。 因此,我们提出以下生成药物图的方法:
- 生成个随机对,其中是图中的药物数量,0≤,≤1。每对对都是药物的隐藏嵌入,用于确定其共享的药物有边。
- 计算每种药物的隐藏嵌入之间的欧几里得距离。 如果该距离低于任意阈值,则在药物对之间存在边。。检查d≤阈值
该过程可以可视化为在二维平面中拾取随机点。 然后,如果两点之间的距离足够小,则它们共享一条边。以下可能是示例图的隐藏嵌入的2D可视化:
虽然隐藏的嵌入是随机选择的,但在两个节点之间存在边沿是逻辑上一致的原因。 因此,可以对图进行准确的预测。
每种药物的隐藏嵌入都可以视为该药物的真实特征值。 特征只有少数,药物之间的关系非常简单。许多机器学习问题通常看起来比实际情况复杂。我们可能会认为,问题实际上取决于许多因素,而实际上许多因素要么无关紧要,要么完全取决于其他因素。例如,我们可能观察到药物会影响血压,同时也会影响血糖水平。 并且我们可能认为这些属性无关。 但是,该药物可能会通过影响血糖水平而特别影响血压。实际上,我们应该只在乎这种药物是否会影响血糖水平。 但是不确定性使我们无法观察到这一点。 通常,问题实际上取决于少数因素,而在我们的问题中,该因素是根据少数药物的真实特征建模的。 为了模拟观察问题复杂性的不确定性,我们人为地将特征数量扩展到了更高的维度。这些扩展的功能集代表了问题的“可观察”功能。 因此,GCN网络从不会看到药物的隐藏嵌入; 相反,它仅看到“可观察”的功能。
要将每种药物的隐藏嵌入扩展到更高的维数空间,我们可以简单地生成一个随机矩阵,其中F是所需的维数。然后,我们可以将药物的隐藏嵌入点乘以拉伸矩阵,得到一个矩阵。 这样,网络就没有看到药品的两个真实特征,而是看到了看起来更加复杂的问题。以下是一个示例:
如果药物具有以下隐藏的嵌入:
我们的拉伸矩阵是:
那么他们的点积将产生:
该矩阵为。 对于其余的药物嵌入,我们可以这样做。 重要的是,对于每个药物包埋,我们都使用相同的拉伸矩阵; 否则,问题将是随机的且无法解决。取每个隐藏药物嵌入的点积和相同的拉伸矩阵,创建一个特征矩阵。 因此,我们有一个完整的邻接矩阵和相应的特征矩阵,现在可以讨论训练。
与Decagon相似,我们将在网络的子图上进行训练,以预测边。 但是,与Decagon不同,我们不从图形中删除边并尝试重新预测它们。相反,我们执行以下操作:
- 从图中随机选择个节点。 创建个节点的子图。 该矩阵为。
- 创建相应的子特征矩阵。 该矩阵为。
- 选择一个随机的节点对。 这是我们要预测两个边之间是否存在边的两个节点。 重要的是,这些子节点中最多应包含一个子节点。 否则,问题将变得微不足道。
随着时间的流逝,我们希望网络将了解到问题没有看起来那么复杂,并且尽管没有真正的嵌入,也开始做出准确的预测,就像真实的问题一样。建立理论数据集并讨论网络的训练方法后,我们现在讨论GCN网络的模型,该模型可以在ResearchGCN中找到。
GCN将以下内容作为输入:
- 随机选择的节点的子图。
- 随机选择的节点的个子特征矩阵
- 一对节点,用于预测它们之间是否存在边,子图中最多有一个节点。
并输出:
- 单个值:0或1,其中1表示GCN认为这两个节点具有边缘,因此认为这两种药物会产生副作用。