1. 分子生成概述:从 SMILES 到 3D 结构,深度学习带来的变革
分子生成,说白了就是教计算机像化学家一样「创造」新分子。
我刚开始接触这个领域时,觉得这不过是把已知分子改来改去。后来才发现,真正的挑战在于——你怎么让模型从零开始,生成一个既稳定、又可合成、还有特定药效的全新结构。
这一章我们先打地基。把分子生成的核心问题、数据表示方式以及深度学习如何打破传统瓶颈讲清楚。你心里有数了,后续的 Batch Normalization 实践才能落在实处。
1.1 分子的「语言」:从 SMILES 说起
传统分子生成绕不开 SMILES。这是一种用 ASCII 字符串描述分子结构的表示法。你可以把它看成分子的「简化拼音」。
举个例子,苯酚的 SMILES 长这样:
Oc1ccccc1
O 代表羟基氧,c 代表芳香碳,数字 1 是成环标记。看起来简洁,但坑不少。
- 同分异构体歧义:一个分子可以写成多个合法的 SMILES 串,不唯一。
- 缺乏空间信息:SMILES 只描述原子连接顺序,不包含三维坐标。
- 语法敏感:少个括号或者环标记写错,整个序列就废了。
1.2 为什么必须走到 3D 结构
SMILES 本质上丢掉了分子的「形状」。而药物分子与靶点蛋白的结合,偏偏是立体锁钥关系。一个分子是 S 构型还是 R 构型,药效可能差几百倍。
所以,分子生成不能只停留在拓扑层面。你得生成每个原子的 3D 坐标,甚至包括键长、键角、二面角。我个人习惯把分子生成的任务分为三个层次:
| 层级 | 输出 | 典型方法 | 问题 |
|---|---|---|---|
| 1级:拓扑 | SMILES / 分子图 | RNN、GPT、GNN | 无 3D 构象,容易坍塌 |
| 2级:构象 | 3D 坐标(单构象) | E(3) 等变网络、扩散模型 | 需要大量 3D 数据 |
| 3级:系综 | 3D 坐标 + 热运动 | 分子动力学 + 生成模型 | 计算成本极高 |
当前主流的工作集中在第 2 级:生成一个或多个合理的 3D 构象。我见过不少团队直接从第 1 级跳到第 3 级,结果模型训练周期翻了三倍,效果还没 2 级好。嗯,步子迈太大容易扯着。
1.3 深度学习带来了什么变革
传统分子生成靠的是组合化学枚举或者遗传算法暴力搜索。举个例子,你想找五个重原子的分子,可能的组合数已经接近天文数字。暴力搜一遍不现实。
深度学习把问题转换成了:学习训练集中分子的分布,然后从这个分布里采样。
我来列几条关键变化:
- 从规则到数据驱动:不再写死化学规则,模型从数据里「悟」出规律。
- 从离散到连续:SMILES 是离散字符,GNN 把分子变成连续嵌入,反向传播流畅。
- 从 0D/1D 到 3D:E(3) 等变网络让模型能直接处理旋转平移不变的三维数据。
- 从单任务到多目标:同一模型同时优化稳定性、可合成性、对接分数。
1.4 知识框架顺手理一理
下面这张图我画了几次才定稿。它把分子生成从数据表示到模型任务再到评价指标串起来了。你把它截图存着,整个课程的结构就一目了然。
1.5 传统方法 vs 深度学习方法对比
我把几个关键维度拉了一张表,你一眼就能看出差距在哪:
| 对比维度 | 传统方法 | 深度学习方法 |
|---|---|---|
| 表示空间 | SMILES / 分子指纹 | 连续嵌入 + 3D 坐标 |
| 搜索效率 | 天级别(枚举/进化) | 小时级别(采样) |
| 泛化能力 | 依赖先验规则 | 数据驱动,自动学习 |
| 3D 处理 | 后对接/构象搜索 | 端到端 3D 生成 |
| 训练稳定性 | 不适用(无训练) | 依赖 BN / 残差 / 学习率 |
一个关键洞察: 传统方法不需要训练,所以没有训练稳定性问题。深度学习模型在分子生成上的瓶颈,往往不是模型容量,而是训练过程不稳定——这正是 Batch Normalization 的主战场。
1.6 我的一点个人体会
做了几年分子生成项目,我最大的感受是:数据表示选对了,后面省一半力气。如果你还在用 SMILES 做 3D 分子生成,我建议你早点切换到点云或原子坐标表示。
另外,别小看 Batch Normalization 的作用。我在早期尝试用 GNN 做分子生成时,不加 BN 训练到 50 个 epoch 就开始震荡,加上 BN 之后 loss 曲线稳得像条直线。虽然有人觉得 BN 是「基础操作」,但在分子生成这种数据稀疏、分布复杂的场景里,它往往是决定训练成败的关键。