阅读笔记-A Graph to Graphs Framework for Retrosynthesis Prediction
一、概要
逆向合成致力于寻找一组反应物以合成靶分子,对合成计划和药物开发至关重要。
本文的两个关键点:
- 反应中心识别模块,其将靶分子上的合成子分离,并将一对多图的翻译问题简化为多个一对一的翻译过程;
- 一个将合成子转换为最终的反应物的图结构的变分图翻译模型。
这篇文章利用图的生成来进行逆向合成预测,其中必须为这个特定的任务设计新的组件。例如,反应物可以在不同的反应条件下进行反应。为了解决这种多模态问题,在这片文章中,作者还引入了低维的潜在变量来调节序列图的转换过程,以捕捉不同的输出分布。
二、Graph to Graphs 架构
这篇文章中,作者将逆合成任务表述为一对多的图到图转换的问题。具体而言,首先采用图神经网络来估计产物图中所有原子对的反应性得分,然后将具有高于我们所设定的阈值并且反应性得分最高的源自对作为反应中心。然后通过断开反应中心键的连接,将产物图拆分为合成子。最后基于所获得的合成子,通过一系列图变换生成反应物,其中使用一个潜在向量赖不活变换的不确定性从而产生不同的预测。整个框架如下图所示:
图中红色的反应的中心点由
G
2
G
s
G2Gs
G2Gs标记出来,先将合成的图通过断开反应中心点来变成合成子。接下里根据得到的合成子,反应物通过一系列的图变换得到。生成的分子支架以蓝色边框为界。
2.1 预备知识
(1)Notation:
- G = ( A , X ) \mathbf G=(\mathbf A,\mathbf X) G=(A,X); A \mathbf A A是邻接矩阵, X \mathbf X X是节点的特征矩阵; n n n为节点的数量; b b b为边的类型;则有 A ∈ { 0 , 1 } n × n × b \mathbf A\in\left\{0,1\right\}^{n\times n\times b} A∈{0,1}n×n×b, X ∈ { 0 , 1 } n × d \mathbf X\in\left\{0,1\right\}^{n\times d} X∈{0,1}n×d;则 A i j k = 1 \mathbf A_{ijk}=1 Aijk=1表示第 i i i个节点和第 j j j个节点通过标签为 k k k的边相连。
(2)Retrosynthesis Prediction:一个化学反应可以看作是两个分子集合
(
{
G
i
}
i
=
1
N
1
,
{
G
j
}
j
=
1
N
2
)
({\left\{G_{i}\right\}}_{i=1}^{N_{1}},{\left\{G_{j}\right\}}_{j=1}^{N_{2}})
({Gi}i=1N1,{Gj}j=1N2),并且
G
i
{G_{i}}
Gi是反应物的图结构,
G
j
{G_{j}}
Gj是生成物的图结构。本文中我们将
N
2
N_{2}
N2设定为1,即
(
{
G
i
}
i
=
1
N
1
,
G
p
)
({\left\{G_{i}\right\}}_{i=1}^{N_{1}},G_{p})
({Gi}i=1N1,Gp)
(3)Reaction Center and Synthon
反应中心是用来表示满足以下两个条件的原子对
(
i
,
j
)
(i,j)
(i,j):
\;\;
1)生成物图结构的第
i
i
i个节点和第
j
j
j个节点之间有边相连;2)生成物的图结构中对应的这两个原子没有边相连。另外,合成子是通过破坏反应中心的键从产物中提取的出来的子图,这些合成子稍后可以转化为反应物,并且合成子并不是有效的分子。
(4)Molecular Graph Representation Learning
作者使用了
L
{\mathbf L}
L,层的
R
−
G
C
N
\mathbf {R-GCN}
R−GCN来获取节点表示矩阵
H
L
\mathbf H^{L}
HL。之后用一个
R
e
a
d
o
u
t
(
⋅
)
Readout(\cdot)
Readout(⋅)函数(将
H
L
\mathbf H^{L}
HL作为输入来获得图级别的embedding
h
G
\;\;h_{G}
hG)。
2.2 Reaction Center Identification
给定一个化学反应
(
{
G
i
}
i
=
1
N
1
,
G
p
)
({\left\{G_{i}\right\}}_{i=1}^{N_{1}},G_{p})
({Gi}i=1N1,Gp),我们先针对生成物
G
p
G_{p}
Gp中的每对原子定义一个二进制标记矩阵
Y
∈
{
0
,
1
}
n
×
n
\mathbf Y\in\left\{0,1\right\}^{n\times n}
Y∈{0,1}n×n,并且
Y
i
j
=
1
Y_{ij}=1
Yij=1处表明生成物的图结构
G
p
{G_{p}}
Gp第
i
i
i个节点和第
j
j
j个节点之间的化学键是反应中心。并且反应集(生成物和反应物)中的每个原子都是被单独标记的,这种性质使得我们能够简单地比较反应产物
G
p
G_{p}
Gp,和反应物
G
i
G_{i}
Gi中的每一对原子来识别反应中心,从而形成二进制标记矩阵
Y
\mathbf Y
Y。有了这样的标记后
G
2
G
s
G2Gs
G2Gs中的反应中心预测就可以转化为一个如下所示的二进制链接预测任务。
我们先用一个
L
L
L层的
R
−
G
C
N
\mathbf {R-GCN}
R−GCN来计算节点的embeddings矩阵
H
L
\mathbf H^{L}
HL以及整张生成物的图结构
G
p
G_{p}
Gp的embedding
h
G
P
\;\;h_{G_{P}}
hGP,即:
但是由于
L
\mathbf L
L层的
R
−
G
C
N
R-GCN
R−GCN只能聚合一个节点
L
\mathbf L
L跳内的邻居信息,但反应中心的反应活性也可能受到远处原子的影响,为了确保边的
e
m
b
e
d
d
i
n
g
embedding
embedding能够包含到远处原子的作用,作者将图级别的
e
m
b
e
d
d
i
n
g
embedding
embedding也纳入了
e
d
g
e
e
m
b
e
d
d
i
n
g
edge\;\;embedding
edgeembedding中,有:
- ∣ ∣ || ∣∣:代表着串联;
- H i L ∈ R k H_{i}^{L}\in\mathbb R^{k} HiL∈Rk代表着 H L H^{L} HL的第 i i i行;
- A i j = A [ i , j , : ] ∈ { 0 , 1 } b A_{ij}=A_{[i,j,:]}\in\left\{0,1\right\}^{b} Aij=A[i,j,:]∈{0,1}b代表着 G p G_{p} Gp中原子对 ( i , j ) (i,j) (i,j)之间边的类别。
原子对之间最终的反应分数的计算方式为:
s
i
j
=
σ
(
m
r
(
e
i
j
)
)
\mathbf {s_{ij}=\sigma(m_{r}(e_{ij}))}
sij=σ(mr(eij))。
m
r
m_{r}
mr代表着一个将
e
i
j
e_{ij}
eij映射为一个标量的前向传递网络,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)代表着
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数。在逆合成分析中已知某个反应类型的情况下,我们也可以通过将其嵌入到前馈网络的输入中来包含这些信息。接下来可以通过最大化二值标记矩阵Y的交叉熵来优化反应中心识别模块,如下所示:
实际上,在所有的原子对中,通常有几个反应中心。因此,前馈网络的输出对数值通常非常小。通过加权合成方法,可以缓解由于类分布不平衡而造成的问题。在推理过程中先计算所有原子对之间的反应性分数,然后选择超过阈值的原子对中分数最高的那一个作为反应中心。另外一种方法是选择得分最高的
k
k
k个原子对作为反应中心。这种方法将会产生更多样化的反应路线但相应的需要花费更多的时间。接下来断掉反应中心之间的化学键,将反应产物
G
p
G_{p}
Gp之间的每个子图看做一个合成单体。需要注意的是如果未识别出反应中心,整个生成物
G
p
G_{p}
Gp将被看作为合成单体,然后制定一对一的图转换过程,将每个合成子转换成最终反应物的图结构。
2.3 Reactants Generation via Variational Graph Translation
给定一个化学反应 ( { G i } i = 1 N 1 , G p ) ({\left\{G_{i}\right\}}_{i=1}^{N_{1}},G_{p}) ({Gi}i=1N1,Gp),我们把从 G p {G_{p}} Gp中提取出来的合成子表示为 { S i } i = 1 N 1 \left\{S_{i}\right\}^{N_{1}}_{i=1} {Si}i=1N1。我们将其简化为 ( S , G ) (S,G) (S,G),接下来我们的目标就是学习到一个条件生成模型 p ( G ∣ S ) p(G|S) p(G∣S)。值得注意的是,一个内在的问题是相同的合成子在不同的反应条件下可以转化为不同的反应物,这被称为多峰问题(感觉有点像cycle-gan中的问题,即一张图片只能翻译到另外一张图片,但其实一张图片可以翻译成很多内容风格都想相似但却有不同的图片)。为了减轻这种多模态问题并激发模块获得对反应物不同分布的建模,作者引入了一个地位的潜在变量 z z z来捕获图转换过程中的不确定性。
2.3.1 生成模型
图
G
G
G的生成是基于
S
S
S和
l
a
t
e
n
t
v
e
c
t
o
r
z
latent\;\;vector\;\;z
latentvectorz的条件分布。具体来说,我们首先自回归地生成一系列图变换动作
(
α
1
,
.
.
.
,
α
T
)
({\alpha}_{1},...,{\alpha}_{T})
(α1,...,αT),然后将它们应用到初始合成子图
S
{S}
S上。这里
α
t
{\alpha}_{t}
αt是用作图的修改的单步图变换(即动作)。
T
\mathcal T
T来代表所有图变换动作的集合即:
a
1
,
.
.
.
,
a
T
{a_{1},...,a_{T}}
a1,...,aT,
T
\mathcal T
T为合成子
S
S
S转换为目标反应物
G
G
G的所有轨迹的集合
(
a
1
,
.
.
.
,
a
T
)
({a_{1},...,a_{T}})
(a1,...,aT)。然后,我们将模型
p
(
G
∣
z
,
S
)
p(G|z,S)
p(G∣z,S)的建模转化为对图变换动作序列的联合分布
p
(
t
∣
z
,
S
)
p(t|z,S)
p(t∣z,S)建模。
p
(
G
∣
z
,
S
)
p(G|z,S)
p(G∣z,S)与
p
(
t
∣
z
,
S
)
p(t|z,S)
p(t∣z,S)之间的联系如下图所示:使用这种生成模型,可以通过从分布中采样行动序列,将合成子转化为反应物。
生成过程如下 :
- 令 S i S^{i} Si来表示对 S {S} S施加 a 1 : i {a}_{1:i} a1:i的结果。并且有 S 0 = S S^{0}=S S0=S以及 p ( S i ∣ S i − 1 , z ) = p ( a i ∣ S i − 1 , z ) p(S^{i}|S^{i-1},z)=p(a_{i}|S^{i-1},z) p(Si∣Si−1,z)=p(ai∣Si−1,z)。
- 作者用 M D P ( M a r k o v D e c i s i o n P r o c e s ) MDP( Markov \,\;Decision \;\,Proces) MDP(MarkovDecisionProces)来建模这个过程即 p ( S i ∣ S i − 1 , z ) = p ( S i ∣ S i − 1 , . . . , S 0 , z ) p(S^{i}|S^{i-1},z)=p(S^{i}|S^{i-1},...,S^{0},z) p(Si∣Si−1,z)=p(Si∣Si−1,...,S0,z)。用 马尔科夫决策过程意味着每一次行动仅取决于目前为止已修改的图结构。因此图变换模型可以被以下公式表示: p ( t ∣ z , S ) = p ( a 1 : T ∣ z , S ) = ∏ i = 1 T p ( a i ∣ z , S i − 1 ) \mathbf {p(t|z,S)=p(a_{1:T}|z,S)=\prod_{i=1}^{T}p(a_{i}|z,S^{i-1})} p(t∣z,S)=p(a1:T∣z,S)=∏i=1Tp(ai∣z,Si−1)
- 接下来介绍 a i a_{i} ai的含义:首先我们有 a i = ( a i 1 , a i 2 , a i 3 , a i 4 ) . a_{i}=(a_{i}^{1},a_{i}^{2},a_{i}^{3},a_{i}^{4}). ai=(ai1,ai2,ai3,ai4).假设有 m m m种原子,并且有:1) a i 1 ∈ { 0 , 1 } 2 a^{1}_{i}\in\left\{0,1\right\}^{2} ai1∈{0,1}2预测了图转换过程的终止;2) a i 2 ∈ { 0 , 1 } n a_{i}^{2}\in\left\{0,1\right\}^{n} ai2∈{0,1}n表示第一个需要注意的节点;3) a i 2 ∈ { 0 , 1 } n a_{i}^{2}\in\left\{0,1\right\}^{n} ai2∈{0,1}n表示第二个需要注意的节点;4) a i 2 ∈ { 0 , 1 } b a_{i}^{2}\in\left\{0,1\right\}^{b} ai2∈{0,1}b表示两个节点之间边的类型。则这个分布 p ( a i ∣ z , S i − 1 ) p(a_{i}|z,S^{i-1}) p(ai∣z,Si−1)可以被分解为三个部分:1)终点预测 p ( a i 1 ∣ z , S i − 1 ) p(a_{i}^{1}|z,S^{i-1}) p(ai1∣z,Si−1);2)节点选择 p ( a i 2 : 3 ∣ z , S i − 1 , A i 1 ) p(a_{i}^{2:3}|z,S^{i-1},A_{i}^{1}) p(ai2:3∣z,Si−1,Ai1);3)边标记 p ( a i 4 ∣ z , S i − 1 , a i 1 ) p(a_{i}^{4}|z,S^{i-1},a_{i}^{1}) p(ai4∣z,Si−1,ai1)
- 终点预测:作者按照下式来参数化这个分布:
τ \tau τ代表着 s o f t m a x 函 数 , m t ( ⋅ ) 代 表 着 前 馈 网 络 softmax\;\,函数,m_{t}(\cdot)代表着前馈网络 softmax函数,mt(⋅)代表着前馈网络。在每次转换时,我们先采样 a i ∼ p ( a i 1 ∣ z , S i − 1 ) a_{i}\sim p(a_{i}^{1}|z,S^{i-1}) ai∼p(ai1∣z,Si−1),如果 a i 1 a_{i}^{1} ai1代表着终结,那么整个过程将停止,现有的图结构 S i − 1 S^{i-1} Si−1将会是最终被此模型生成的反应物 G \mathbf G G。 - 节点选择:首先给定一个所有可能在转换中添加的原子的集合(比如碳,氧等原子)
{
v
1
,
.
.
.
,
v
m
}
\left\{v_{1},...,v_{m}\right\}
{v1,...,vm},并且我们把这个集合表示为
V
=
⋃
i
=
1
m
v
i
V=\bigcup_{i=1}^{m}v_{i}
V=⋃i=1mvi。我们先将现存的合成子图结构
S
i
−
1
S^{i-1}
Si−1通过添加新的孤立的节点(原子)来变为
S
~
i
−
1
\tilde S^{i-1}
S~i−1,即
S
I
−
1
=
S
~
i
−
1
⋃
V
S^{I-1}=\tilde S_{i-1}\bigcup V
SI−1=S~i−1⋃V。第一个原子先从
S
i
−
1
S^{i-1}
Si−1中选择,第二个节点(原子)根据选择的第一个原子从
S
~
i
−
1
\tilde S^{i-1}
S~i−1中选择。计算方式如下:
β 1 , β 2 \beta_{1},\beta_{2} β1,β2是掩码它们是掩码,用来消除某些原子被选中的概率。并且 β 1 \beta_{1} β1强迫模型去从 S i − 1 S^{i-1} Si−1中选择节点, β 2 \beta_{2} β2防止第一个节点被再次选择。所以只有第二个节点可以从 V V V中选择,并且它意味着为当前的合成子图结构 S i − 1 S^{i-1} Si−1添加新的原子。所以,节点选择分布 p ( a i 2 : 3 ∣ z , S i − 1 , a i 1 ) \mathbf {p(a_{i}^{2:3}|z,S^{i-1},a_{i}^{1})} p(ai2:3∣z,Si−1,ai1)是综合以上两个条件分布而来的。 - 边标记:边标记分布的参数化建模如下:
整个过程如下所示:
最后,可以通过列举将合成子
S
S
S转化为
G
G
G的所有可能的图转换序列来计算将合成子
S
S
S转化为最终反应物
G
G
G的概率: