m

miller

V1

2022/08/14阅读:16主题:自定义主题1

CS224W_decagon

. CS224W|Lecture18.

-- 用GNN预测药物组合的副作用

引言

接着上次的背景部分, 今天磨坊继续分享后续的部分。

讲座分享的GNN实例有三,今天介绍第一个:

药物和药物组合的安全性(副作用预测)。💊 ➕ 💊  🥺

本文同时也是Decagon文章的讲解和思考。

Modeling polypharmacy side effects with graph convolutional networks[1]

背景

由于各种慢性病和并发症,病人们需要服用多种药物。 当然有些疾病的治疗方案本身就需要多种药物并用。而药物之间相互反应并且产生副作用一直是困扰人们的重要生物医学问题,毕竟我们不可能在推出每一款药物的时候就把已上市的其他药物的联合作用一一探究。

Slide No. 10 from http://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf
Slide No. 10 from http://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf

上图的数据阐述了药物联用的副作用在美国的情况,患者众多(特别是对65岁以上的老年人),所涉及的药物和疾病的类型繁多,每年用于治疗副作用的费用就在 $1770亿美元左右(艹?)。

Slide No. 11 from http://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf
Slide No. 11 from http://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf

药物联用的副作用并不是医生医术高明就能解决的。有时候未知的药物间相互作用会产生意想不到的后果。 👆上图就展示了一个例子, 如果病人单独服用蓝色💊,并不会有副作用; 同样地,单独服用红色💊也没有副作用,但是当这两个没有副作用的药物一起服用的时候,却会有2%的概率会发生头痛以及3%的概率发生流鼻涕的副作用。

难点

OK, 事情这么严重,怎么这么久都没有解决呢?问题到底在哪里。

the challenges with predicting drug combinations; Slide No. 12
the challenges with predicting drug combinations; Slide No. 12

一是组合数爆炸。 随着联用数量的增加,所有可能的药物组合的数量将呈指数级增加。两个药物的组合数就来到了13M, 而三种药物的组合更是达到20B的数量。这个数量级,再高的通量的实验方法都没法测量完,如果用有限的coverage来预测无限的组合才是解决问题的核心。

二是非线性的叠加效果。这个是大家一直以来都知道的问题。就如上面的例子所展示的,两个药物的效果简单叠加就是没有副作用。但现实却是它们存在某种机制不明的相互作用,所以产生了意料之外的副作用。

三是患者本身的生理性质。不同的人群,或者已患基础疾病的患者人群都会影响到药物的效果。 同样的药物组合,在cohort A上没有副作用, 有可能在cohort B上面有严重的副作用。

思路

如果数据有限,但是所面对的组合却是无限时。我们只能往更底层出发,期望模型学习到每个药物对靶点,以及其他相关的基因的作用。然后从基因的水平开始预测两个药物叠加产生的结果。

这个意思就是,只要知道了原理,那么我们就能以不变(机理)应万变 (组合)。

为此我们需要三种关系: 药物和药物之间的作用网络 ➕ 药物和基因的作用网络 ➕ 基因和基因的作用网络

Fig 1. An example graph of polypharmacy side effects
Fig 1. An example graph of polypharmacy side effects

首先为了建模药物和药物相互作用, 我们需要第一层(Mode 1)网络。药物和药物之间的连接可以是多关系的,代表了不同的作用机理( )。 注意这里的网络代表了所有的已知的药物间的关系,比如说同属于某种药物(他汀), 或者用于治疗同一种疾病等等。 药物和药物间的副作用没有记载在这里,不然我们也不需要预测了。

然后为了深入到基因层面探索机制, 我们需要药物和蛋白之间的关系, 也即第二层(Mode 2)网络。它们之间的关系同样可以是多关系的, 比如相互结合呀, 各种修饰呀。

最后还有基因之间的相互作用, 如☝️图中的 。 所有的信息就在这三层网络之间流通。 不过我只是理解上把网络分成了三层, 由于使用了 代表不同的作用关系, 实际上这三层关系都在同一个大网络 里,把药物和基因都统一成节点

最后, 模型的输出应该如何设计才能让我们兼容所有可能的药物组合呢?

Decagon : multi-relation graph neural network

Here, we present Decagon, an approach for modeling polypharmacy side effects. The approach constructs a multimodal graph of protein–protein interactions, drug–protein target interactions and the polypharmacy side effects, which are represented as drug–drug interactions, where each side effect is an edge of a different type.

上面来自Decagon原文的一段摘抄已经给出了答案。Marinka 将药物组合的副作用转化为了图神经网络的边预测问题(edge prediction)。 并且不同于其他的工作只能预测有没有额外副作用, 得益于Decagon multi-relation的设计,他们可以非常预测出具体的副作用类型。下面给出问题的定义:

给定一对药物 ,任务的目标是确定它们两的连接 有多大的可能性属于某个类型的副作用的集合

Overview of using Decagon to predict drug-pair relation
Overview of using Decagon to predict drug-pair relation

Decagon主要由两个部分构成,Encoder 和 Decoder。 为了利用之前提及的三个层次的网络的信息, Encoder 首先利用 graph convolution layer 把每个药物结点 的信息和在网络中的邻域 (Neighborhood) 浓缩到Embeding 里(也就是上篇文章所说的表示)。

有个单个药物的Embedding , 我们就能把任意两个药物的Embedding 结合起来然后输入到 Decoder 中, 利用 Tensor Factorization 来预测它们存在关系 r 的概率了。

从网络到药物组合的副作用的关系捋顺了,那么我们下面仔细看看 Encoder 和 Decoder。

Encoder : a Graph Convolutional Network

对于👇 所示的一个含有两种结点和多种连接关系的网络 ,Decagon 的 Encoder 用会根据连接的类别 把输入结点 把领域区分为 , 然后再进行正常的GCN。

接下来我们结合例子和示意图来分析一下multi-relationship的GCN是如果计算的。

An example graph and the encoder of decagon using the Ciprofloxacin as demo
An example graph and the encoder of decagon using the Ciprofloxacin as demo

如果以左图的示例网络中的结点 Ciprofloxacin 作为输入, 那么 Mupirocin 和它的连接就是 ,它会被单独放在右边 的框框里进行 GCN 的操作。类似地, Doxycycline 和 Simvastatin 这两个药物都是以 的关系连接着 c, 因此 D 和 S 会同时出现在第二个框框中。最后是基因, 它们都是直接靶点的关系,因此全部分在第三个框框里进行GCN。

接着我们来详细看一下每个框框里的操作, 👇

  • 橘红色的部分表示首先对每一类关系 进行单独的操作, 因此框框先分出来。此次输入的对象是 里的结点, 例如 M 是 里唯一的结点。 而 里有D和S。
  • 然后它们在每一层对 embedding 都会进过经过 转化之后加合。 然后我们看每个框框最右边快输出的地方都有个 c 插足,这就是下面公示绿色的部分,代表了输入节点本身在上一层的 embedding 。
  • 最后紫色的部分没有在图里表现出来, 但是它表示框内左边和右边(即最后挤进来的 )要按照某种权重 平衡一下再输出。

Decoder : a Tensor Factorization Model

Decoder 负责组合两个从encoder中输出的node embedding, 然后预测它们两存不存在相互作用并导致类型为 的副作用,表示为 。至于为什么说这个过程是张量分解 (tensor factorization) 呢?

如果把所有的 合在一起,那么三个维度构成的张量里。 对于 rank 为 d 的张量, 我们可以将其分解为 几个矩阵的乘积,

the decoder of decagon using the Ciprofloxacin as demo. A drug pair Ciprofloxacin - Simvastatin is queried, their relationship tensor is factorized by  and
the decoder of decagon using the Ciprofloxacin as demo. A drug pair Ciprofloxacin - Simvastatin is queried, their relationship tensor is factorized by and

在文章中 的详细情况为:

先来讲下面两种情况, 当 都是蛋白的时候,关系 r 就收缩为 PPI 这一种, 因此Marinka 她们索性直接用一个矩阵 来建模 interaction。 类似地, 当 为一药一蛋白的时候, 关系也只限制在 drug-target, 所以他们也简化 tensor factorization 过程为一个简单矩阵

最核心的情况,当 都是药物的时候,关系 非常多样。其中对角矩阵 从embedding的中提取重要的那几个维度,然后再把两个向量用矩阵 内积。 是不带下标的,说明它是对所有药物和所有关系都通用的一个矩阵。

经过内积, 返回的是实值, 所以我们可以在外面套上sigmoid 讲它转化为概率

 

数据集和Loss

为了训练模型,我们首先就需要大量已知的药物组合副作用的数据库,其次是基因-基因互作网络和基因药物互作网络。 它们分别来自于:

  • 药物-药物:**< TWOSIDES >** 1318 种 副作用, 63473 药物组合,总共 4651131条 药物组合-副作用词条。
  • 单个药物:**< SIDER >** 286 399 个词条,包含了 1556 种药物 和 5868 种副作用 ➕ < OFFSIDES > 487 530 词条,共 1332 药物和 10097 种副作用。
  • 药物-基因:**< STITCH >** 总共记录了8083600 条相互作用,共 8934 个基因和 519 022 种化学结构
  • 基因-基因: 从4个单独的工作中收集而来, 共19085个基因, 719402个词条。

然后是loss function, 因为每个药物组合可能会出现多个副作用, 所以edge是 multi-label 的, 每个relationship单独计算一个 binary cross entropy。

我们可以看到公示4里的正例 , 同时 Marinka 设计了负例的抽样来完成 cross entropy的后半部分。 指的就是从所有 edge里抽样, 抽一些没有连接的来代替结点 。最后负例就是

让时间来证明

Decagon和其他模型的表现比较我就不展示了,反正decagon表现肯定是最好的。但是单看指标是反映不出实际情况的, 一个模型到底有没有用,可以让时间来检验,如果它所预测的药物副作用确实后来被证实存在, 那么这比什么指标都用说服力。

当然,在做实验的时候,我们不可能真的等个猴年马月。Marinka她们设计了一个回溯性的检验🕰️, 如果将数据分为2012年以前就已知的和2012年之后才发现的,那么这就是非常有说服力的回测了(想起了量化交易的常用方法)。

后来在Decagon最有信心的几个预测中, 排名第八的组合后续确实有案例报道(和数据库里的不同, 案例报道是医生写的, 而数据库中的词条有些事患者自己上报的,两者的可信度略有不同)。

最后,Decagon的表现确实令人满意。同时我也学到了如何利用对数据的了解和严格的模型验证方法来获得可靠的模型。

我的一些感想

一、🤔 Decagon 支持的multi-relationship 在实际应用中可以推广到很多地方,只要是multi-modual 的数据实际上都符合这个设计。

二、🤔 Decagon 的Graph 看来是静态的,也就是它不会随着所用数据和训练过程而变化。Knowledge Graph 作为 Prior 当然提供了很多有用的信息,但是如果可以得到适合当前数据的 Posterior 想必会对探索生物学知识有更多帮助。

三、🤔 Tensor decomposition 作为神经网络的基础元件对我来说很是陌生,但是相似的 matrix factorization , factor analysis 是很多生信分析的算法底层。这个地方可以多多思考,建立一下两者的联系。

后面还有两个section,希望大家喜欢CS224W的分享😗。 我们后面再见 👋.

参考资料

[1]

Modeling polypharmacy side effects with graph convolutional networks: https://academic.oup.com/bioinformatics/article/34/13/i457/5045770

分类:

人工智能

标签:

深度学习

作者介绍

m
miller
V1