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 构象不是唯一的——一个分子可能有多种低能构象,这就给生成带来了挑战。

我的建议:入门阶段用图表示 + SMILES 文本联合建模。兼顾表示能力与训练效率。等熟悉了再上 3D。

1.2 生成任务:模型到底在学什么?

分子生成不是一个单一任务。我按目标把它分成三类:

  1. 从头生成(De novo generation)—— 从随机噪声或种子出发,生成全新结构。
  2. 基于骨架的生成(Scaffold-based generation)—— 给定核心骨架,补全侧链。
  3. 性质优化生成(Property optimization)—— 在生成时约束某性质(比如 LogP、合成可达性)。

这里面,从头生成是最「原教旨」的任务。先采样一个潜空间向量,然后解码成分子。解码器可以基于 RNN、Transformer 或者图生成网络。

举个简单例子。用 RNN 生成 SMILES 时,模型本质上是在学字符序列的条件概率:

P("CCO" | "C") → 预测下一个字符
P("CCO" | "CC") → 再预测下一个

生成时,从起始符开始,逐字符采样,直到遇到结束符。看起来像语言模型,但训练数据和评价指标完全不同——评价一个分子好不好,还得看化学有效性、新颖性、多样性。

关键指标:
  • 有效性(Valid):生成的 SMILES 能否被 RDKit 成功解析。
  • 新颖性(Novel):生成的结构不在训练集里。
  • 多样性(Diverse):批量生成的分子之间结构差异大。
  • 目标性质(Goal):是否达到设计要求的性质。

基于骨架的生成我实际项目用得多。药化团队经常说:「这个母核挺好的,帮我把 R 基团变一变。」这时候模型只需要在指定附着点上生成连接片段,自由度小很多,成功率也高。

性质优化生成最考验模型功底。你不能只生成好看的分子,还得控制脂溶性、毒性、合成难度。常用方法包括强化学习(把性质打分当奖励)、条件变分自编码器(把目标性质当条件输入)、或直接做多目标优化。

避坑提示:我曾在一个项目里单追 LogP 优化,生成了一堆极疏水的分子——活性测出来很好,但水溶性几乎为零,完全没法往下做。后来加了 QED 和合成可达性作联合约束,才把方案拉回来。

1.3 应用场景:分子生成到底能干嘛?

聊完任务,咱们说说落地。

领域 典型应用 对生成模型的要求
药物发现 先导化合物优化、苗头化合物筛选 高有效性、低毒性、合成可行性
材料科学 设计有机光电材料、聚合物、MOF 精确性质控制、批量生成
化学生物学 设计探针分子、共价抑制剂 特定基团保留、立体化学控制

药物发现是分子生成最活跃的战场。传统做法是虚拟筛选千万级库,现在可以先生成一个百万级的目标聚焦库,再筛选。效率提升一个数量级。

我记得有一次接了个激酶抑制剂项目。现有筛选库里的结构几乎都被测遍了,很难找到新骨架。我们用了一个基于图的条件生成模型,在生成时约束必须含某个氢键供体基团。跑了一轮,真拿到了几个新颖且活性在纳摩尔级别的骨架。

材料科学这块,分子不止是「药物」,还可以是OLED发光材料、有机太阳能电池受体。这类任务对性质的精确度要求极高——LogP差0.5,性能可能就差一个量级。这时候多GPU分布式训练的优势就出来了:可以用大批量采样做性质预测,快速反馈给生成模型。

化学生物学更侧重功能基团。比如设计一个光交联探针,必须包含二氮杂环丙烷基团。你不能让模型随机生成,得指定「必须含有某个子结构」。这叫 约束生成,也是我们课程后面要重点讲的内容。

1.4 知识体系一览

下面这张图总结了第一章的核心脉络,帮你快速建立起宏观认知。

第一章 知识体系:分子生成概述 分子生成概览 分子表示 生成任务 应用场景 SMILES / SELFIES 分子图 (Graph) 3D 结构 从头生成 骨架生成 性质优化 药物发现 材料科学 化学生物学 核心:解决了「如何表示分子 → 如何生成新分子 → 如何落地应用」这条链 后续课程将围绕这三个模块展开,并逐步引入多GPU分布式训练技术

嗯,这一章的内容就是这些。从分子表示的三条路线,到三大生成任务,再到实际应用场景——这条链你理清楚了,后面学分布式训练、模型选型、数据并行、模型并行,就有了具体抓手。

下次我们再深入具体模型,先把分子生成的基线模型跑起来。