当前位置:网站首页>2018 arXiv preprint | MolGAN: An implicit generative model for small molecular graphs
2018 arXiv preprint | MolGAN: An implicit generative model for small molecular graphs
2022-07-26 21:17:00 【发呆的比目鱼】
2018 arXiv preprint | MolGAN: An implicit generative model for small molecular graphs

Paper: https://arxiv.org/abs/1805.11973
Code: https://github.com/yongqyu/MolGAN-pytorch
MolGAN: 小分子图的隐式生成模型
图结构数据的深度生成模型为化学合成问题提供了一个新的角度:通过优化可微分的模型,直接生成分子图,有可能避开昂贵的搜索过程在离散和广阔的空间的化学结构。因此作者提出MolGAN,一种用于小分子图的隐式、无似然生成模型,它规避了先前基于似然方法的昂贵图匹配过程或节点排序启发式的需要。作者采用生成对抗网络(GANs)直接操作图结构数据。该方法与强化学习目标相结合,以鼓励产生具有特定期望化学性质的分子。在QM9化学数据库的实验中,证明了该模型能够产生接近100%的有效化合物。
介绍

分子图
最近,直接在图空间中操作被证明是分子数据生成建模的一种可行的替代方案,其附加好处是所有生成的输出都是有效的图形。
图表示形式:
将一个分子表示为一个无向图。对于一个具有N个节点一个分子图可以由如下两个矩阵表示:
- 邻接矩阵: A ∈ R N × N × Y A \in R^{N \times N \times Y} A∈RN×N×Y。 Y Y Y代表着分子图中具有Y种共价键(如单键、双键以及三键)。 A i , j ∈ R Y A_{i,j} \in R^Y Ai,j∈RY代表着原子i , j i,ji,j之间的共价键类型(用one-hot向量来表示)。
- X = [ x 1 , . . . x N ] T ∈ R N × T X=[x_1,...x_N]^T \in R^{N \times T} X=[x1,...xN]T∈RN×T是节点特征矩阵。每个原子对应于一个节点 v i ∈ ν v_i \in \nu vi∈ν;这个节点用一个 T T T维的one-hot向量 x i x_{i} xi
隐式生成模型与似然生成模型
似然生成模型的优化过程更加稳定并且简单,但显式地评估所有可能节点排列的可能性的计算量很大,也就是似然的方法很难满足置换不变性。
生成对抗网络的方法则完全解决了这个问题,因为很多图卷积方法是置换不变的,可以用这些图卷积来构建我们的判别器。
模型
模型架构
- 生成器: N = 9 N = 9 N=9, T = 5 T = 5 T=5 , Y = 4 Y = 4 Y=4,并且先根据正态分布采样一个32维的潜在表示 z ∼ N ∈ ( 0 , 1 ) z \sim N \in(0,1) z∼N∈(0,1)。生成器是三层 M L P [ 128 , 256 , 512 ] MLP[128 , 256 , 512] MLP[128,256,512],并且将 t a n h tanh tanh作为每层的激活函数。最后一层被线性投影以匹配X和A维数,并利用 s o f t m a x softmax softmax来进行正则化。
- 判别器: 判别器与反馈网络架构:两者都使用两层的 R e l a t i o n a l G C N Relational GCN RelationalGCN,但并不共享参数。将图网络的输出经过处理得到图表示向量,并将得到的图表示向量输入一个两层的 M L P [ 128 , 1 ] MLP[128,1] MLP[128,1]来得到最终的输出。 M L P MLP MLP中判别器采用 t a n h tanh tanh作为激活函数,而反馈网络采用 s i g m o i d sigmoid sigmoid作为激活函数。
生成器
生成器的目标函数为:
其中 L W G A N L_{WGAN} LWGAN是对抗训练损失, R L RL RL是强化学习损失,KaTeX parse error: Undefined control sequence: \lamda at position 1: \̲l̲a̲m̲d̲a̲是两损失比重。
对于生成过程:采样 z z z送入生成器生成A与X,接下来为了得到分子图,采取离散稀疏化送入判别器与奖励网络。但这样将使得生成器失去用来更新参数的梯度。作者采用了三种方法来解决这个问题:
- 不采用离散稀疏化,直接将生成的概率矩阵送入判别器与奖励网络;
- 将X与A与Gumbel噪声相加然后送入判别器与奖励网络;
- 利用link中提到的方法来获取梯度
X ~ i , j = X i , j + G u m b e l ( μ = 0 , β = 1 ) A ~ = A i j y + G u m b e l ( μ = 0 , β = 1 ) \tilde{X}_{i,j} = X_{i,j}+Gumbel(\mu=0, \beta=1) \\ \tilde{A}=A_{ijy}+Gumbel(\mu=0,\beta=1) X~i,j=Xi,j+Gumbel(μ=0,β=1)A~=Aijy+Gumbel(μ=0,β=1)
判别器与奖励网络
- 奖励网络是用来近似奖励函数,并利用强化学习来使得模型向不可微的方向进行优化。数据集中的图和生成的图都是奖励网络的输入,但与判别器不同的是,奖励网络要给每个分子打分(比如生成的分子溶于水的可能性有多大,真实的分数由RDKit提供)。并且当生成的分子在化学上无效时,整个奖励网络将输出0。
- 判别器利用WGAN来训练,即:

- 判别器 D Φ D_{\Phi} DΦ与奖励函数 R ^ ψ \hat{R}_{\psi} R^ψ将图结构作为输入并输出一个标量,并且两者采用相同的架构,但不共享参数。先是由一系列的图卷积Relational GCN:

经过若干层的图卷积后,由下式得到图表示向量:
将得到的 h g h_g hg作为一个MLP的输入得到一个标量。前向传播的过程由此结束。
数据集
- QM9: N=9 最大节点数目; T = 5 原子类型数目,即:(C, O, N, F, and one padding symbol);Y = 4 边类型数目,即:(single, double, triple and no bond) 。
评价指标
- Validity: 生成的分子中符合化学规定的分子的数量与总生成数量之比;
- Novelty: 生成的有效的分子中并不属于原数据集(即新生成的)的分子的数量与总的有效分子数量之比;
- Uniqueness: 生成的分子不在数据集中的分子数与有效的分子数之比。这个指标反映了以衡量抽样过程中样本的变化程度。
- Druglikeness: 化合物成为药物的可能性有多大
- QED:用期望值加权几何平均值来量化化合物特性,捕捉几种药物属性的潜在数据分布。
- Solubility: 表示分子亲水性的程度;对数辛醇-水分配系数(LogP):其定义为一个溶质在两种溶剂中浓度比值的对数。
- Synthetizability: 可以量化一个分子合成的难易程度
- **SA score: ** 是一种用概率方法估计综合易用性的方法。
实验结果

MolGAN的一个局限是对于模型崩溃的敏感性。RL与GAN的目标函数都不鼓励产生多样的非独特的输出,因此模型被拉向一个只涉及很少样本可变性的解决方案,如果训练没有及早的停止,最终将导致仅产生少量不同的分子。
边栏推荐
- Logical vulnerability - arbitrary account registration
- Search Yiwu shopping (PAI Li Tao) API by image
- Matlab draw short-term energy diagram
- 仅需一个依赖给Swagger换上新皮肤,既简单又炫酷~
- The principle of normal equation method and its difference from gradient descent method
- Pytorch 使用RNN模型构建人名分类器
- 实际权威来自信息优势
- Pytorch squeeze() unsqueeze() 用法
- [MySql]substr用法-查询表的某个字段的具体位数的值
- Go --- identifiers and keywords in go language
猜你喜欢
随机推荐
easyui的combobox默认选中第一个选项
07 df 命令
Oppo self-developed large-scale knowledge map and its application in digital intelligence engineering
MOS 管示意图
Go----Go 语言中的标识符和关键字
Join method in JS
C# 数据类型_摘自菜鸟教程
Operating guidelines and suggestions for spot gold (Part 1)
Pytorch 使用RNN模型构建人名分类器
也谈数据治理
Search Yiwu shopping (PAI Li Tao) API by image
TASK04|分类分析
LDAP——实现用户统一登录管理
Happens-Before原则深入解读
吃透负载均衡
Can you use redis? Then come and learn about redis protocol
仅需一个依赖给Swagger换上新皮肤,既简单又炫酷~
寻找数字零售的发展新方向,才是保证数字零售可以进入到全新发展阶段的关键
Pytoch uses RNN model to build person name classifier
Oppo self-developed large-scale knowledge map and its application in digital intelligence engineering









