《Deep Learning for Molecules and Materials》(Andrew White)是一本免费在线的交互式教材,把深度学习方法与分子/材料问题系统地对应起来。它填补了「通用深度学习课程」与「分子专属知识」之间的空白。
教材的结构
| 部分 | 内容 | 对药物发现的价值 |
|---|---|---|
| 机器学习基础 | 回归、分类、正则化 | 基础 |
| 分子表示 | SMILES、指纹、图、三维 | 核心 |
| 图神经网络 | 消息传递、GCN、GNN 变体 | 核心 |
| 等变神经网络 | 对称性、群论基础、实现 | 最有特色的部分 |
| 生成模型 | VAE、GAN、流模型、扩散 | 高 |
| 可解释性 | 归因方法 | 中 |
| 不确定性 | 贝叶斯方法、集成 | 高 |
| 深度学习在化学中的应用 | 各类任务案例 | 高 |
最有特色的部分:等变神经网络
# 【这是这本教材相对其它资源的最大优势】
#
# 多数深度学习教材不讲对称性,
# 而它对分子的三维建模是核心概念(见 160)
#
# 教材讲清了:
# □ 群与群作用的基本概念
# □ 不变性 vs 等变性的严格定义
# □ 为什么架构保证优于数据增强
# □ 【具体的实现方式】:
# - 只用不变量(距离、角度)
# - 沿相对位置向量更新坐标
# - 球谐函数与张量积(更完整但复杂)
# □ 各种等变架构的对比
#
# 【学习建议】:
# 不必深究群论的数学细节,
# 但必须理解:
# 1) 为什么需要等变性
# 2) 【怎么验证自己的实现是等变的】
#
# 验证代码(应该成为每次实现的单元测试):
import torch
def test_equivariance(model, h, x, edge_index, tol=1e-4):
"""随机旋转平移后检查输出"""
torch.manual_seed(0)
A = torch.randn(3, 3)
Q, _ = torch.linalg.qr(A)
if torch.det(Q) < 0:
Q[:, 0] = -Q[:, 0]
t = torch.randn(3)
h1, x1 = model(h, x, edge_index)
h2, x2 = model(h, x @ Q.T + t, edge_index)
inv_err = (h1 - h2).abs().max().item()
equi_err = (x1 @ Q.T + t - x2).abs().max().item()
print(f"不变性误差 {inv_err:.2e}, 等变性误差 {equi_err:.2e}")
assert inv_err < tol and equi_err < tol, "对称性被破坏"
# 【常见的实现错误】:
# 1) 用了绝对坐标 → 破坏平移不变性
# 2) 等变层后接普通 MLP 处理坐标 → 破坏等变性
# 3) 用了坐标的某个分量作特征 → 破坏旋转不变性
# → 这个测试能立刻发现
交互式的学习方式
- 每章都有可运行的代码:基于 Jupyter,可以在浏览器中直接运行或下载;
- 从零实现关键组件:这是最有价值的部分——自己实现一遍消息传递或等变层,理解深度远超读论文;
- 用真实的分子数据:而非玩具数据集;
- 持续更新:作为在线教材,会跟进新方法;
- 免费开放:无门槛。
建议的学习重点
# 【如果时间有限,按这个顺序】
#
# 优先级 1(必读):
# □ 分子表示章节
# → 理解各种表示的信息含量与适用场景
# □ 图神经网络章节
# → 消息传递的机制
# □ 【等变神经网络章节】
# → 这是最难在别处学到的
#
# 优先级 2(重要):
# □ 不确定性章节
# → 实际项目中必需(见 166)
# □ 生成模型章节
# → 如果做分子设计
#
# 优先级 3(选读):
# □ 可解释性
# □ 材料相关的内容
# □ 强化学习
#
# 【配套练习建议】:
# 1) 跟着实现一个消息传递网络
# 2) 【实现一个等变层并通过对称性测试】
# 3) 用它做一个分子性质预测任务
# 4) 【与 ECFP + LightGBM 基线比较】
# → 这一步教材不会强调,但实践中最重要(见 131)
# 【教材没有充分覆盖的内容】:
# □ 【评测设计的陷阱】(见 051、167、169)
# 教材侧重方法本身,对数据划分、
# 基线公平性、泄漏问题的讨论不多
# □ 药物发现的领域约束
# 成药性、可合成性、专利
# □ 传统方法(对接、MD、FEP)
# → 这些需要从别的资源补
与其它学习资源的分工
| 资源 | 侧重 |
|---|---|
| 本教材 | 分子深度学习的方法与实现 |
| MIT 6.S191(见 007《MIT 6.S191 深度学习课程》) | 通用深度学习基础 |
| CS224W(见 006《Stanford CS224W 图神经网络》) | 图学习的理论深度 |
| DeepChem(见 004《DeepChem 教程体系入门》) | 快速上手与流程 |
| TeachOpenCADD(见 012《TeachOpenCADD 教程》) | 完整的 CADD 流程 |
| Practical Cheminformatics(见 011《Practical Cheminformatics 博客》) | 实践经验与批判视角 |
| RDKit Cookbook(见 013《RDKit Cookbook》) | 化学信息学操作 |
一个建议的组合:用本教材学方法与实现,用 Practical Cheminformatics 补批判性视角与实践陷阱——前者告诉你「怎么做」,后者告诉你「什么时候不该信」。
学习成果的检验
- 能从零实现一个消息传递层,并解释每一步在做什么;
- 能实现一个等变层并通过对称性测试;
- 能说出不同分子表示的信息含量差异,以及什么任务该用哪种;
- 能给模型加上不确定性估计并检验其校准(见 166《不确定性估计》);
- 最重要的:能判断一个分子深度学习方法的宣称是否可信——这需要结合评测设计的知识(见 169《Benchmark 陷阱》、170《AI 制药论文阅读框架》)。
关键要点
- 等变神经网络章节是它最大的优势——这部分内容在别处很难系统学到;
- 从零实现关键组件比读论文的理解深度高得多;
- 教材对评测陷阱与领域约束覆盖不足,需要从别的资源补;
- 建议组合:用它学方法与实现,用 Practical Cheminformatics 补批判视角。
延伸资源
- CS224W:006《Stanford CS224W 图神经网络》;MIT 6.S191:007《MIT 6.S191 深度学习课程》;
- Practical Cheminformatics:011《Practical Cheminformatics 博客》;等变网络:160《等变神经网络》;GNN:159《图神经网络 GNN》。