223

MOSES:分子生成基准评测工具

MOSES 提供标准数据、指标与基线,衡量生成模型的有效性、新颖性与分布相似度。这篇讲清它的指标体系与和 GuacaMol 的互补关系。

MOSES(Molecular Sets,Insilico Medicine 等,Front. Pharmacol. 2020)是与 GuacaMol 并列的分子生成基准平台。它更侧重分布层面的评测,提供了一套标准化数据集、更细的指标体系,以及十来个已实现的基线模型——这一点对方法研究特别有用,不用自己复现基线。

安装与使用

pip install molsets
# 或从源码
git clone https://github.com/molecularsets/moses.git
cd moses && python setup.py install
import moses

train = moses.get_dataset("train")     # ZINC 清洗子集,约 160 万分子
test  = moses.get_dataset("test")
test_scaffolds = moses.get_dataset("test_scaffolds")   # 骨架不重叠的测试集

generated = my_model.sample(30000)
metrics = moses.get_all_metrics(generated, n_jobs=8)
for k, v in metrics.items():
    print(f"{k:20s} {v:.4f}")

指标体系

指标 含义 判读
Valid 有效 SMILES 比例 基本门槛
Unique@1k / @10k 前 1k / 10k 中唯一分子比例 低 = 模式坍塌
Novelty 不在训练集中的比例 过低 = 记忆训练数据
FCD Fréchet ChemNet 距离 越小越好,最综合
SNN 到最近邻的平均相似度 反映与真实分子的接近程度
Frag 片段分布相似性 化学基元是否合理
Scaf 骨架分布相似性 能否产出新骨架的关键指标
IntDiv1 / IntDiv2 生成集合内部多样性 过低说明产出趋同
Filters 通过 MCF / PAINS 等过滤的比例 粗略反映化学合理性

Scaf 在 test_scaffolds 上的表现最值得关注:这个测试集的骨架与训练集不重叠,能检验模型是真的学会了化学规律,还是只在训练骨架附近做微调。很多模型在这一项上明显掉分。

内置基线

MOSES 实现了 CharRNN、VAE、AAE、JT-VAE、LatentGAN、ORGAN、组合生成器和随机 SMILES 采样等基线,可直接训练对比:

python scripts/train.py vae --device cuda:0 \
  --train_load data/train.csv --model_save vae_model.pt
python scripts/sample.py vae --model_load vae_model.pt \
  --n_samples 30000 --gen_save vae_gen.csv
python scripts/eval.py --gen_path vae_gen.csv --test_path data/test.csv

一个耐人寻味的发现:简单的 CharRNN 在多数分布指标上表现相当好,与复杂得多的图生成模型差距不大。这是评估新方法时应有的心理基准——先确认能不能赢过 CharRNN。

与 GuacaMol 的分工

  • MOSES:偏分布学习,指标更细(片段、骨架、内部多样性分开看),内置基线丰富。适合回答「我的生成模型学到的化学分布对不对」。
  • GuacaMol(见 222《GuacaMol》):有目标导向任务,更贴近「能否优化到指定性质」。适合回答「我的优化算法好不好」。
  • 建议两者都跑:只报一个的论文通常是挑了对自己有利的那个。两套指标一起看,才能形成完整判断。

共同的局限

和 GuacaMol 一样,MOSES 的指标全部是分布层面的代理,不涉及活性、选择性、ADMET、合成可行性这些真实项目关心的事。分布指标全绿的模型,用在实际项目里照样可能产出一堆无法合成的分子。基准通过是必要条件,不是充分条件。

上手提示

  • 重点看 test_scaffolds 上的 Scaf 指标,它检验是否真的学会化学规律;
  • 内置基线丰富,新方法先确认能否赢过简单的 CharRNN;
  • 与 GuacaMol 互补,建议两套都跑;
  • 分布指标全绿也不代表在真实项目中可用。

延伸资源