1. 分子生成概述:从 SMILES 到 3D 结构,深度学习带来的变革

分子生成,说白了就是教计算机像化学家一样「创造」新分子。

我刚开始接触这个领域时,觉得这不过是把已知分子改来改去。后来才发现,真正的挑战在于——你怎么让模型从零开始,生成一个既稳定、又可合成、还有特定药效的全新结构。

这一章我们先打地基。把分子生成的核心问题、数据表示方式以及深度学习如何打破传统瓶颈讲清楚。你心里有数了,后续的 Batch Normalization 实践才能落在实处。

1.1 分子的「语言」:从 SMILES 说起

传统分子生成绕不开 SMILES。这是一种用 ASCII 字符串描述分子结构的表示法。你可以把它看成分子的「简化拼音」。

举个例子,苯酚的 SMILES 长这样:

Oc1ccccc1

O 代表羟基氧,c 代表芳香碳,数字 1 是成环标记。看起来简洁,但坑不少。

  • 同分异构体歧义:一个分子可以写成多个合法的 SMILES 串,不唯一。
  • 缺乏空间信息:SMILES 只描述原子连接顺序,不包含三维坐标。
  • 语法敏感:少个括号或者环标记写错,整个序列就废了。
我曾经踩过的坑: 用 SMILES 做分子生成模型,训练时 loss 降得漂亮,一采样全是一堆开环链。后来发现模型学会了「偷懒」,只生成局部语法正确的片段,整个分子根本不闭合。你想想看,这种「看起来对」的东西在化学上一文不值。

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 深度学习带来了什么变革

传统分子生成靠的是组合化学枚举或者遗传算法暴力搜索。举个例子,你想找五个重原子的分子,可能的组合数已经接近天文数字。暴力搜一遍不现实。

深度学习把问题转换成了:学习训练集中分子的分布,然后从这个分布里采样。

我来列几条关键变化:

  1. 从规则到数据驱动:不再写死化学规则,模型从数据里「悟」出规律。
  2. 从离散到连续:SMILES 是离散字符,GNN 把分子变成连续嵌入,反向传播流畅。
  3. 从 0D/1D 到 3D:E(3) 等变网络让模型能直接处理旋转平移不变的三维数据。
  4. 从单任务到多目标:同一模型同时优化稳定性、可合成性、对接分数。
说个我项目里的实例: 之前用遗传算法优化某个激酶抑制剂,跑了 2000 代才找到 3 个候选。后来换用基于 GNN 的生成模型,在同样显卡资源下,一晚就能出 200 个高打分候选。虽然里面有 30% 是假阳性,但候选池数量级是碾压的。

1.4 知识框架顺手理一理

下面这张图我画了几次才定稿。它把分子生成从数据表示到模型任务再到评价指标串起来了。你把它截图存着,整个课程的结构就一目了然。

分子生成的深度学习框架 数据表示 SMILES / 分子图 3D 坐标 / 点云 生成策略 自回归 / VAE 扩散 / GAN 核心模型 GNN / Transformer E(3) 等变网络 工程组件 Batch Normalization 损失函数 / 采样 分子从头生成 全新分子骨架设计 无需模板分子 结构优化 局部修饰 / 骨架跳转 多目标优化 构象生成 3D 坐标预测 构象系综采样 数据困境 数据稀疏 / 标注昂贵 训练稳定性 梯度爆炸 / 分布偏移 评价指标 有效性 / 新颖性 / 对接 本课程核心:Batch Normalization 在分子生成中的实践

1.5 传统方法 vs 深度学习方法对比

我把几个关键维度拉了一张表,你一眼就能看出差距在哪:

对比维度 传统方法 深度学习方法
表示空间 SMILES / 分子指纹 连续嵌入 + 3D 坐标
搜索效率 天级别(枚举/进化) 小时级别(采样)
泛化能力 依赖先验规则 数据驱动,自动学习
3D 处理 后对接/构象搜索 端到端 3D 生成
训练稳定性 不适用(无训练) 依赖 BN / 残差 / 学习率

一个关键洞察: 传统方法不需要训练,所以没有训练稳定性问题。深度学习模型在分子生成上的瓶颈,往往不是模型容量,而是训练过程不稳定——这正是 Batch Normalization 的主战场。

1.6 我的一点个人体会

做了几年分子生成项目,我最大的感受是:数据表示选对了,后面省一半力气。如果你还在用 SMILES 做 3D 分子生成,我建议你早点切换到点云或原子坐标表示。

另外,别小看 Batch Normalization 的作用。我在早期尝试用 GNN 做分子生成时,不加 BN 训练到 50 个 epoch 就开始震荡,加上 BN 之后 loss 曲线稳得像条直线。虽然有人觉得 BN 是「基础操作」,但在分子生成这种数据稀疏、分布复杂的场景里,它往往是决定训练成败的关键。