分子生成模型常被笼统讨论,但 VAE、GAN、强化学习、扩散模型解决的是不同的问题。选错工具会让项目在错误的方向上花费大量时间。
五类方法的对比
| 方法 | 核心机制 | 最适合的任务 | 主要弱点 |
|---|---|---|---|
| VAE / 隐空间 | 编码到连续空间 | 局部优化、插值 | 后验坍缩;生成质量一般 |
| GAN | 对抗训练 | 分布匹配 | 训练不稳定;模式崩溃 |
| 自回归 + RL | 逐步生成 + 奖励 | 目标导向优化 | 依赖奖励函数质量 |
| 扩散模型 | 去噪生成 | 三维/条件生成 | 慢;需要更多数据 |
| 遗传算法 | 化学操作的进化 | 可合成性有保证的优化 | 搜索效率取决于算子设计 |
选型框架
# 问自己三个问题:
#
# 【问题一】:有没有明确的优化目标?
# 有(如「提高活性、降低 logP」)
# → 强化学习(REINVENT,见 137)
# → 或隐空间优化(见 149)
# → 或遗传算法
# 没有(只想「生成一批多样的分子」)
# → 分布学习模型(VAE、自回归)
#
# 【问题二】:有没有起始分子?
# 有
# → Mol2Mol、隐空间局部搜索、遗传算法
# → 【成功率最高的场景】
# 没有(只有靶点)
# → de novo 生成 + 对接约束(见 351)
# → 或基于结构的生成(见 162)
# → 【难度高得多】
#
# 【问题三】:有没有三维结构信息要用?
# 有(口袋结构)
# → 【扩散模型】:可以在三维空间生成
# 并直接约束与口袋的互补
# 没有
# → 二维方法即可
#
# 【一个常被忽略的选项】:
# 如果任务是「在已知骨架上枚举取代基」,
# 那么【规则枚举 + 过滤】比任何生成模型都好:
# - 完全可控
# - 可合成性有保证(用已有的砌块)
# - 不需要训练
# - 结果可复现
# → 【很多项目其实不需要生成模型】
各方法的实践要点
# ---- VAE / 隐空间 ----
# 关键问题:后验坍缩
# KL 项把后验推向先验,隐变量不编码信息
# 应对:
# - KL 退火(训练初期降低 KL 权重)
# - 自由比特(free bits)
# - 用 MIM 等替代目标(见 149)
# 判断是否坍缩:
# 把两个分子编码,在隐空间插值,解码中间点
# → 如果中间的分子与两端毫无关系,说明有问题
# ---- GAN ----
# 分子生成中【用得越来越少】
# 原因:
# - 离散数据的梯度传递困难(需要 REINFORCE 或 Gumbel-softmax)
# - 训练不稳定
# - 模式崩溃严重(见 136)
# - 没有明显优于其它方法的场景
# → 除非有特殊理由,【不建议作为首选】
# ---- 自回归 + RL ----
# 关键:奖励函数(见 137)
# 要点:
# - 先验模型作为化学合理性的锚
# - 多样性过滤防止模式崩溃
# - 分阶段增加目标难度
# - 【小规模跑 + 人工检查】的迭代循环
# ---- 扩散模型 ----
# 关键:在什么空间上扩散
# 二维图上:节点类型 + 邻接矩阵(离散扩散)
# 三维坐标上:需要等变架构(见 160)
# 隐空间上:先编码再扩散
# 优势:
# - 【可以条件生成】:给定口袋生成配体
# - 天然支持多样性
# - 训练比 GAN 稳定得多
# 局限:
# - 采样慢(需要多步去噪)
# - 【物理有效性需要额外保证】(见 101)
# ---- 遗传算法 ----
# 关键:变异与交叉算子的设计
# 好的算子 = 化学上有意义的操作
# 换取代基、换环、加/减片段、
# 生物电子等排体替换
# 优势:
# - 【不需要训练】
# - 可用任意黑盒打分函数
# - 【可合成性天然更好】(操作基于真实的化学变换)
# - 易于加入约束
# → 【性价比常常被低估】
# 在很多实际项目中,
# 精心设计的遗传算法优于深度生成模型
所有生成方法的共同要求
| 要求 | 说明 |
|---|---|
| 有效性检查 | RDKit 能否解析;价键是否合理 |
| 去重 | 规范 SMILES 去重 |
| 结构警示过滤 | PAINS、Brenk、反应性基团(见 069《Brenk Alert》) |
| 性质范围过滤 | MW、logP、TPSA 等 |
| 可合成性评估 | SA score、RAscore 或逆合成规划 |
| 多样性检查 | 骨架数、内部多样性(见 136《MOSES 论文精读》) |
| 专利检索 | 工业项目必需(见 153《Chemistry42 JCIM 论文精读》) |
| 化学家审阅 | 不可省略的一步 |
现实的期望管理
- 生成不是瓶颈:现在生成一百万个「看起来合理」的分子是容易的。难的是判断哪些值得合成;
- 模型无法超越它的打分函数:这是所有目标导向生成的天花板(见 137《REINVENT 论文精读》);
- 可合成性是最常被低估的约束:SA score 只是粗糙估计,真正的判断需要逆合成规划或化学家评估;
- 「新颖」不等于「好」:生成的分子与已知分子差别大,可能是因为那片化学空间本来就不好;
- 实验验证的案例仍然有限:阅读论文时应特别关注有没有实际合成与测试(见 170《AI 制药论文阅读框架》);
- 合理的定位:生成模型是「扩大探索范围、加速迭代」的工具,人在环路中的筛选与实验验证仍是必需的。
务实的项目建议
# 如果要在项目中引入分子生成:
#
# 第 1 步:【先确认打分函数】
# 你有可靠的活性预测模型吗?
# 没有 → 先做这个,生成模型没有意义
#
# 第 2 步:【从最受约束的场景开始】
# 先做 Mol2Mol(已有分子的改造)
# 而非 de novo
# → 成功率高,能建立信心与流程
#
# 第 3 步:【建立完整的过滤管线】
# 生成 → 过滤 → 排序 → 人工审查
# 记录每一步的通过率
#
# 第 4 步:【小规模实验验证】
# 合成 5~10 个,测活性
# → 校准整个流程
#
# 第 5 步:【迭代】
# 用实验数据改进打分函数
# → 【这个闭环才是价值所在】
#
# 【常见的错误路径】:
# 直接上最新的生成模型 →
# 生成一万个分子 →
# 发现没法判断哪个好 →
# 项目停滞
关键要点
- 先问「有没有明确目标、有没有起始分子、有没有三维结构」,再选方法;
- 遗传算法的性价比常被低估——不需训练、可合成性天然更好、可用黑盒打分;
- GAN 在分子生成中已基本被淘汰;很多项目其实规则枚举就够了;
- 生成不是瓶颈,判断哪些值得合成才是——没有可靠打分函数就不要上生成模型。
延伸资源
- REINVENT:137《REINVENT 论文精读》、138《REINVENT4 文档精读》;MolMIM:149《MolMIM 论文精读》;扩散模型:162《扩散模型在药物设计中》;
- GuacaMol:135《GuacaMol 论文精读》;MOSES:136《MOSES 论文精读》;实战:347《用 REINVENT4 生成新分子》、351《在分子生成中加入 Docking Score 约束》。