文献总结|使用循环神经网络为药物发现生成指定的分子库

Category 碎碎念

本文介绍 2018 年发表在 ACS Central Science 上的一篇文献,文章原题目为 Generating Focused Molecule Libraries for Drug Discovery with Recurrent Neural Networks。文章利用基于 LSTM 的循环神经网络构建了分子生成模型,在输入具有特定活性化合物训练集后,该模型能够产生新分子库,新分子库中的许多分子具有与训练集相似的活性。

doi.org/10.1021/acscentsci.7b00512

引言

在通常的分子任务中,计算机需要完成

  1. 生成分子;
  2. 给分子打分并根据结果过滤;
  3. 基于此前步骤中获得的知识,寻找更优分子。

针对于目标(1),常见方式包括

  • 基于预先定义的原子团或片段构建分子在 → 分子可能难以合成;
  • 基于专门的编码规则进行虚拟反应 → 反应难以预测。

针对于目标(2),可以使用靶点对接或机器学习过滤去不需要的基团,这会需要用到靶点预测与定量构效关系(QSAR)。针对于目标(3),传统的方式包括遗传算法和蚁群优化。此外还有新提出的逆 QSAR 方法,传统的 QSAR 将结构映射到性质,逆 QSAR 将性质映射到结构,但这种映射关系常常是一对多的,带来了许多问题。

在这篇文章中,作者提出了一种完全由数据驱动的从头药物没计方法。基于循环神经网络(Recurrent Neural Network, RNN),模型通过学习训练集生成概率分布,并从该分布中取样生成新实例,生成的新实例与训练集数据具有相似特征。

方法

模型

文章决定使用 SMILES 作为分子的编码方式,并以 \n 作为每个分子编码的结束符。

对于给定的词序列 \((w_1,w_2,\cdots,w_i)\),语言模型能够预测第 \(i+1\) 个词 \(w_{i+1}\) 的概率分布,同时还能识别其中的语法错误和语义错误。就其本质而,在步骤 \(t_i\in T\) 中,对于给定的字符 \(s_i\) 序列 \(S\),语言模型通过计算概率(马尔可夫链)

$$P_\theta(S)=P_\theta(s_1)\prod_{t=2}^TP_\theta(s_t|s_{t_1},\cdots,s_1)$$

预测下一个字符,其中 \(\theta\) 是从训练集中学习到的参数。

对于上述 \(P_\theta\) 的计算,文章主要应用了 RNN。RNN 得到输入向量序列 \(\boldsymbol{x}_{1:n}=(\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_n)\) 和初始状态向量 \(\boldsymbol{h}_0\),输出状态向量序列 \(\boldsymbol{h}_{1:n}=(\boldsymbol{h}_1,\boldsymbol{h}_2,\cdots,\boldsymbol{h}_n)\) 和输出向量序列 \(\boldsymbol{y}_{1:n}=(\boldsymbol{y}_1,\boldsymbol{y}_2,\cdots,\boldsymbol{y}_n)\),可以表达为

$$\mathrm{RNN}(\boldsymbol{h}_0,\boldsymbol{x}_{1:n})=\boldsymbol{h}_{1:n},\boldsymbol{y}_{1:n}$$

RNN 中的迭代函数 \(R\) 获取状态向量 \(\boldsymbol{h}_i\) 和输入向量 \(\boldsymbol{x}_{i+1}\),然后输出新的状态向量 \(\boldsymbol{h}_{i+1}\)。另一个函数 \(O\) 将状态向量 \(\boldsymbol{h}_i\) 映射为输出 \(\boldsymbol{y}_i\)(激活函数)。

$$\begin{align} &\boldsymbol{h}_i=R(\boldsymbol{h}_{i_1},\boldsymbol{x}_i)\\ &\boldsymbol{y}_i=O(\boldsymbol{h}_i) \end{align}$$

RNN

预先将分子编码转换为 one-hot 模式,在该模型中,通过计算(softmax 函数)

$$P_\theta(s_{t+1}|s_t,\cdots,s_1)=\frac{\exp(y^k_t)}{\sum^K_{k'=1}\exp(y^{k'}_t)}$$

得到序列的下一个字符 \(s_{t+1}\),再将该字符加入到输入向量中,继续得到 \(y_{t+1}\),从而得到 \(s_{t+2}\),用这种迭代的方式生成分子的描述序列。

symbol generation

迁移学习

文章的两个目标是生成尽可能大的多样分子数据用于虚拟筛选和针对特定靶点生成可能具有活性的分子数据。对于第一个目标,首先使用一个较大的训练集训练模型,使模型学会 SMILES 语法后,让模型生成大量分子数据。对于第二个目标,就需要用到迁移学习,使用更小的具有某特征的数据集训练再次训练模型,该操作称为 fine-tune,模型就能从中学习到特征,生成对某靶点可能具有活性的分子。

数据

140 万个分子的 SMILES 数据来自于 ChEMBL 数据库。

评价指标

$$\mathrm{EOR}=\frac{n/|G_N|}{m/|R_M|}$$

其中 \(R_M\) 为只经过较大数据集训练的模型生成的分子集,\(G_N\) 为经过 fine-tune 后模型生成的分子集,用 \(T\) 表示测试集,\(m=|G_N\cap T|\)\(n=|R_M\cap T|\),EOR 表示相对于普通模型,经过 fine-tune 后的模型有多好。

结果

生成新分子

在使用大数据集训练模型后,让模型生成 50,000,000 个SMILES 符号,这些符号构成了 976,327 个分子,其中 97.7% 通过了 CDK 工具的合法性检测,说明模型学会了 SMILES 语法。在剔除重复与非法分子后,最终得到了 847,955 个新分子。

接着使用 RDKit 库(version 2016.03.1)调查了生成的分子的物理化学性质,绘制了 t-SNE((t-distributed stochastic neighbor embedding)数据降维图。

t-SNE of novel molecules

可以看出生成分子集与训练集有很大的重叠,二者物理化学性质相似,该模型学习到了训练集中的特征。

针对特定靶定生成活性分子库

针对于 5-HT2A 受体,在 ChEMBL 数据库中选择 pIC50 > 7 的 732 个分子作为训练集,用于 fine-tune 之前已经训练好的模型。随着 fine-tune 的 epochs 不断增加,生成分子中具有活性的分子占比随之增加。

epochs

此外,文章中还针金黄色葡萄球菌生成了具有活性的分子,使用 1000 个数据得到预训练的模型后,只需要使用 50 个数据进行 fine-tune 操作也能得到可观的结果,这有利于在数据较少的情况下生成特定特征的分子。

fine-tune table

模拟「设计-合成-测试」的循环

从头药物设计的流程包括药物的设计、合成、活性性测的循环,不断重复直至寻找到新的药物。这篇文章中使用模型模拟了这一流程,也就是分子生成(合成)→ 基于靶点预测选择更优分子(虚拟筛选)→ 使用更优分子训练模型(设计)。

在经过 8 次循环后,模型生成了与测试集(7001 个分子)中相同 416 个分子,得到了 59.6 的 EOR,比使用 fine-tune 直接训练模型的结果更高。

结论

文章利用循环神经网络构建了分子生成模型,该模型能够生成与训练集具有类似特征的分子。文章还使用了 fine-tune 的操作,在使用大数据集训练模型后,使用较小的数据集就能生成有针对性的分子。最后,文章将生成模型与靶点预测模型相结合,使用靶点预测的结果再训练生成模型,实现了从头药物设计流程的闭环。