本文主要是介绍Multi-Objective Molecule Generation using Interpretable Substructures,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2021/7/22
摘要:药物设计问题旨在发现满足目标化学性质要求的新分子结构,当面对多性质优化问题时这项工作便变得极其困难。本文提出了一种解决这种复杂性的方法,通过一个子结构语料库来组成分子,称之为分子基本准则,这些子结构是从分子中确定的可能对某个属性有贡献的子结构,这样的方法属于“基于分子碎片”的设计方法。
实现自动生成分子的模型包括两个步骤:
- 在性质预测模型的帮助下提取出用于构建分子的分子碎片,这一步看作一个离散优化问题,采用蒙特卡洛树搜索方法来求解;
- 组装出目标分子。使用强化学习对混合模型进行微调,以确保生成的分子保留所有目标属性。
与其他方法相比,生成模型不是从零开始构建分子,而是从已经涉及到特定属性的自动提取的基本原理中的碎片组装分子。
P ( G ) = ∑ S P ( G ∣ S ) P ( S ) P(\mathcal{G})=\sum_{\mathcal{S}} P(\mathcal{G} \mid \mathcal{S}) P(\mathcal{S}) P(G)=∑SP(G∣S)P(S)
问题构成:
Find(寻求一个分子): G = ( V , E ) \mathcal{G}=(\mathcal{V},\mathcal{E}) G=(V,E)
subject to(性质约束): r i ( G ) ≥ δ i ; i = 1 , ⋯ , M r_{i}(\mathcal{G}) \geq \delta_{i} ; \quad i=1, \cdots, M ri(G)≥δi;i=1,⋯,M
r i ( G ) r_{i}(\mathcal{G}) ri(G)为性质预测模型的输出结果,如随机森林等,每个 i i i为一个目标性质。
其中rationale碎片 S \mathcal{S} S 来自于语料库 V S [ M ] V_{\mathcal{S}}^{[M]} VS[M],然后生成分子 G \mathcal{G} G
生成模型为:
P ( G ) = ∑ S P ( G ∣ S ) P ( S ) P(\mathcal{G})=\sum_{\mathcal{S}} P(\mathcal{G} \mid \mathcal{S}) P(\mathcal{S}) P(G)=∑SP(G∣S)P(S)
-
Rationale Extraction 提取得到 V S [ M ] V_{\mathcal{S}}^{[M]} VS[M]
-
Graph Completion P ( G ∣ S ) P(\mathcal{G} \mid \mathcal{S}) P(G∣S)
-
Rationale Distribution P ( S ) P(\mathcal{S}) P(S)
P(S)的分布是根据 P ( G ∣ S ) P(\mathcal{G} \mid \mathcal{S}) P(G∣S)生成的完整分子 G \mathcal{G} G的性质得到的。
为了满足化学合理性,这种基于碎片的生成方法都是先生成一个子结构的库,从库中提取碎片来组合生成新的分子。
本文中碎片生成的过程中,考虑了多个目标性质的约束,对于多目标约束的处理方法是先分解成单目标问题,再组合搜索得到多目标碎片解,相比之前看过的单纯通过概率来使用蒙特卡洛树搜索建立的语料库,到底孰优孰劣?初步理解是,单纯通过概率的可能会导致生成的分子结构还是很普通,而且可能生成很多的与目标性质没什么关系的分子结构,容易陷入局部最优;与目标性质相关联之后会不会又导致搜索空间不那么大,但是其实在生成碎片结构的过程就已经相当于一个筛选过程了,搜索的空间已经与目标性质高度相关,这样子搜索的效率会更高。
VAE的东西还是不是很懂,赶紧补一补。另外,蒙特卡洛搜索的依据我觉得有点像是贪心法,我敲我怎么一直对这个算法朦朦胧胧的,都得赶紧补啊shit!
这篇关于Multi-Objective Molecule Generation using Interpretable Substructures的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!