1. 分子生成概述:分子表示、生成任务、应用场景
好,我们开始第一讲。
分子生成,说白了就是让计算机自己「创造」新分子。不是从现有库里挑,是从头设计。这活儿以前靠化学家直觉加运气,现在靠模型加算力。
我个人习惯把这章拆成三个核心问题:分子长什么样(表示)、我们要生成什么(任务)、生成出来有什么用(应用)。咱们挨个聊。
1.1 分子表示:计算机眼中的化学世界
计算机不认识结构式,只认识数字和符号。所以第一步,得把分子翻译成它能处理的形式。
最常见的三种表示方式:
| 表示方式 | 本质 | 典型格式 | 我的看法 |
|---|---|---|---|
| 序列表示 | 用字符串描述连接顺序 | SMILES, SELFIES | 直观,但容易丢失空间信息 |
| 图表示 | 原子=节点,键=边 | 分子图 (Graph) | 最自然,生成模型主流 |
| 3D 结构 | 原子坐标+构象 | .xyz, .sdf | 数据量大但信息最全 |
SMILES 是最常见的序列表示。比如乙醇:
CCO
就三个字符。但你想想看,同分异构体怎么办?有些分子 SMILES 串长得像乱码,可读性很差。我遇到过几次 SMILES 解析出错的坑,后来改用 SELFIES——它天然保证语法正确,生成的时候基本不会出「非法字符串」。
图表示就更直观了。每个原子是一个节点,化学键是边。节点特征包括原子类型、价态、电荷;边特征包括键级、是否芳香环。这样做图卷积、图生成,逻辑上很顺。
为什么要用图?因为分子本质上就是个图。你拿图生成模型去学,很自然就能保持连通性和化学价规则。
3D 表示加入了坐标信息。比如一个水分子的结构:
3
water
O 0.0000 0.0000 0.1173
H 0.7572 0.0000 -0.4692
H -0.7572 0.0000 -0.4692
这种格式对力场计算、对接模拟非常关键。不过 3D 构象不是唯一的——一个分子可能有多种低能构象,这就给生成带来了挑战。
1.2 生成任务:模型到底在学什么?
分子生成不是一个单一任务。我按目标把它分成三类:
- 从头生成(De novo generation)—— 从随机噪声或种子出发,生成全新结构。
- 基于骨架的生成(Scaffold-based generation)—— 给定核心骨架,补全侧链。
- 性质优化生成(Property optimization)—— 在生成时约束某性质(比如 LogP、合成可达性)。
这里面,从头生成是最「原教旨」的任务。先采样一个潜空间向量,然后解码成分子。解码器可以基于 RNN、Transformer 或者图生成网络。
举个简单例子。用 RNN 生成 SMILES 时,模型本质上是在学字符序列的条件概率:
P("CCO" | "C") → 预测下一个字符
P("CCO" | "CC") → 再预测下一个
生成时,从起始符开始,逐字符采样,直到遇到结束符。看起来像语言模型,但训练数据和评价指标完全不同——评价一个分子好不好,还得看化学有效性、新颖性、多样性。
- 有效性(Valid):生成的 SMILES 能否被 RDKit 成功解析。
- 新颖性(Novel):生成的结构不在训练集里。
- 多样性(Diverse):批量生成的分子之间结构差异大。
- 目标性质(Goal):是否达到设计要求的性质。
基于骨架的生成我实际项目用得多。药化团队经常说:「这个母核挺好的,帮我把 R 基团变一变。」这时候模型只需要在指定附着点上生成连接片段,自由度小很多,成功率也高。
性质优化生成最考验模型功底。你不能只生成好看的分子,还得控制脂溶性、毒性、合成难度。常用方法包括强化学习(把性质打分当奖励)、条件变分自编码器(把目标性质当条件输入)、或直接做多目标优化。
1.3 应用场景:分子生成到底能干嘛?
聊完任务,咱们说说落地。
| 领域 | 典型应用 | 对生成模型的要求 |
|---|---|---|
| 药物发现 | 先导化合物优化、苗头化合物筛选 | 高有效性、低毒性、合成可行性 |
| 材料科学 | 设计有机光电材料、聚合物、MOF | 精确性质控制、批量生成 |
| 化学生物学 | 设计探针分子、共价抑制剂 | 特定基团保留、立体化学控制 |
药物发现是分子生成最活跃的战场。传统做法是虚拟筛选千万级库,现在可以先生成一个百万级的目标聚焦库,再筛选。效率提升一个数量级。
我记得有一次接了个激酶抑制剂项目。现有筛选库里的结构几乎都被测遍了,很难找到新骨架。我们用了一个基于图的条件生成模型,在生成时约束必须含某个氢键供体基团。跑了一轮,真拿到了几个新颖且活性在纳摩尔级别的骨架。
材料科学这块,分子不止是「药物」,还可以是OLED发光材料、有机太阳能电池受体。这类任务对性质的精确度要求极高——LogP差0.5,性能可能就差一个量级。这时候多GPU分布式训练的优势就出来了:可以用大批量采样做性质预测,快速反馈给生成模型。
化学生物学更侧重功能基团。比如设计一个光交联探针,必须包含二氮杂环丙烷基团。你不能让模型随机生成,得指定「必须含有某个子结构」。这叫 约束生成,也是我们课程后面要重点讲的内容。
1.4 知识体系一览
下面这张图总结了第一章的核心脉络,帮你快速建立起宏观认知。
嗯,这一章的内容就是这些。从分子表示的三条路线,到三大生成任务,再到实际应用场景——这条链你理清楚了,后面学分布式训练、模型选型、数据并行、模型并行,就有了具体抓手。
下次我们再深入具体模型,先把分子生成的基线模型跑起来。