简介这份PDF资料是Jon Paul Janet在AstraZeneca生物制药研发部门所做的机器学习化学应用报告面向化学、药物研发与材料设计领域的学习者和研究者帮助其理解机器学习如何介入化学结构与功能关系的研究。内容以CASP 13蛋白质折叠预测竞赛中AlphaFold的突破为引串联多目标药物设计、分子结构预测、材料设计、反应预测与数据驱动实验设计等应用场景并给出对化学机器学习现状与趋势的判断。资源包共1个PDF文件大小约41.44MB页面以幻灯片形式组织含目录、章节要点与案例图示便于按主题快速翻阅和引用。目前已有222人学习适合希望建立该交叉领域整体认知、或为课题与研发工作寻找方法参考的读者。1. 化学空间是 10^60为什么机器学习成了唯一能走通的路一个反直觉的事实化学家面对的可能分子空间大约有 10^60 量级而人类至今合成并记录在案的化合物不过 10^8 上下。换句话说我们连这个空间的十亿亿亿分之一都没摸到。传统做法是「设计—合成—测试」的串行循环一轮下来几天到几周量子化学计算能把单点能量算准但代价是小时级而机器学习模型一旦训练完成给出一个性质预测只要秒级。这条从「天/周」到「小时」再到「秒」的链条正是《Machine Learning in Chemistry now and in the future》这份讲义想讲清楚的核心逻辑。它不教你调包而是回答一个更底层的问题为什么化学这个学科恰好长成了机器学习最合适的土壤以及这套方法在真实的多目标药物设计里到底怎么落地、会在哪里翻车。2. 为什么化学数据天生适配机器学习结构与性质的映射假设2.1 化学的核心命题就是「结构决定性质」整份讲义反复回到一个前提化学科学强调结构与功能之间的关系无论生物化学还是材料化学都是如此。这句话听起来像常识但它恰恰是机器学习能在化学里 work 的根本原因。机器学习本质上是在拟合一个从输入到输出的映射函数而化学家几百年来的工作本质上也是在建立「分子结构 → 物理化学性质」的映射。两者目标同构所以当算法能力足够时化学问题天然就是一个监督学习问题输入是分子表示输出是活性、毒性、溶解度、结合亲和力。常见的实现思路是把分子编码成模型能吃的形式比如分子指纹、SMILES 字符串、或者图结构。这里的关键设计动机是化学家相信「相似的结构有相似的性质」这个平滑性假设正是模型能泛化的前提。如果结构微小扰动导致性质剧烈跳变任何基于连续函数的模型都会失效。讲义里没有展开这一点但从它强调「结构与功能关系」的措辞能反推出作者是把这条平滑性当作隐含公理在用。2.2 从实验到模拟再到模型三级加速的代价结构讲义用一张流程图把化学研究的三种手段并列实验、模拟、模型。实验对应「天到周」模拟求解 HΨ EΨ 这类电子结构方程对应「小时」模型对应「秒」。这个时间尺度的对比不是修辞而是整个领域的经济学基础。药物发现里一个化合物从设计到拿到实验活性数据周期以周计成本以千计而一个训练好的模型可以在几秒内对百万级虚拟库做打分排序。但这里有个容易被忽略的取舍模型的速度是用精度换来的。模拟方法有明确的物理方程约束误差来源相对可控模型是数据驱动的它的可信区间完全取决于训练数据覆盖了多大的化学空间。讲义把三者并列而不是替代暗示的正是这个分层策略——用模型做粗筛把昂贵的模拟和实验留给模型最有把握的那一小部分候选。我一般会这么理解模型不是替代实验而是把实验预算花在刀刃上。2.3 算法迁移为什么卷积、Transformer、图网络都能搬进化学讲义列了一张对照表把计算机视觉、自然语言处理、图学习三类方法与化学任务对应起来。卷积网络对应的是把分子当作图像或网格处理比如电子密度、显微图像Transformer 对应的是把 SMILES 当作「化学语言」做序列建模反应预测就是典型场景图卷积对应的是把分子天然看作原子为节点、化学键为边的图这是最贴合化学直觉的表示。这个迁移之所以成立底层原因是这三类结构在化学里都有真实对应物分子有局部邻域对应卷积的感受野、有序列化的字符串表示对应语言的 token 序列、有显式的图拓扑对应图网络的消息传递。讲义引用的几项工作分别验证了这三条路径。值得注意的是图表示在化学里比在视觉里更「正统」——因为分子本来就是图不需要像图像那样人为定义邻域。这也是为什么后来的分子性质预测模型大多收敛到图神经网络这条线上。3. 多目标设计药物分子为什么不能只优化一个指标3.1 单目标优化的陷阱活性上去了毒性也上去了讲义用「多目标设计」作为案例研究的核心这不是随便选的题目。药物发现里一个候选分子要同时满足活性、选择性、溶解度、代谢稳定性、毒性、合成可行性等一堆指标而且这些指标之间经常互相拉扯。你把亲脂性调高膜通透性可能变好但溶解度和肝毒性往往同时恶化。这就是典型的帕累托前沿问题不存在一个在所有维度都最优的分子只存在一组「不牺牲任何一个指标就无法再改进另一个」的折中解。如果把它当成单目标回归来做模型会给你一个活性极高的分子然后你在实验阶段发现它毒性爆表前面所有投入打水漂。讲义强调多目标本质上是在说化学优化的目标函数天生是多维的任何把它压成一维加权和的做法都在偷偷引入你对权重的先验假设而这个假设往往是错的。3.2 帕累托前沿与标量化两种处理多目标的思路处理多目标优化有两条主流路线。一条是直接学帕累托前沿让模型输出一组非支配解交给化学家挑选另一条是标量化把多个目标加权求和或做约束优化转成单目标问题。前者的好处是不需要预先指定权重坏处是前沿的表示和采样在髙维目标空间里很困难后者实现简单但权重怎么定是个玄学而且线性加权只能找到帕累托前沿的凸包部分凹进去的区域会被漏掉。常见的实现思路是用贝叶斯优化框架把每个目标建模成高斯过程然后用采集函数如期望改进在「探索」和「利用」之间平衡。下面这段伪代码展示了一个简化的多目标采集逻辑重点看它如何同时考虑多个目标的预测均值和不确定性import numpy as np def expected_improvement_multi(mu, sigma, best, xi0.01): 单目标 EI作为多目标采集的基础单元 mu: 模型预测均值 (n_samples,) sigma: 预测标准差 (n_samples,) best: 当前已观测到的最优值 xi: 探索余量越大越偏向探索 from scipy.stats import norm imp mu - best - xi z imp / (sigma 1e-9) ei imp * norm.cdf(z) sigma * norm.pdf(z) ei[sigma 1e-9] 0.0 # 方差为零的点不提供信息 return ei def scalarized_acquisition(mu_matrix, sigma_matrix, weights): 把多目标压成加权标量逐目标算 EI 再加权 mu_matrix: (n_samples, n_objectives) sigma_matrix: 同形状 weights: 各目标权重和为 1 n_obj mu_matrix.shape[1] total np.zeros(mu_matrix.shape[0]) for j in range(n_obj): best_j mu_matrix[:, j].max() # 简化用当前预测最优近似历史最优 total weights[j] * expected_improvement_multi( mu_matrix[:, j], sigma_matrix[:, j], best_j) return total这段代码的关键在于weights这个参数它把多目标问题降维成单目标代价是你必须事先声明各目标的重要性。实际项目里这个权重往往来自项目组的讨论而不是数据本身所以它天然带有主观性。xi参数控制探索强度设得太小模型会一直围着已知最优点打转设得太大则采样发散、浪费实验预算。这两个参数就是多目标设计里最容易翻车的地方后面避坑章节会细说。3.3 主动学习闭环模型提建议实验做裁判数据回流再训练多目标设计真正跑起来靠的是一个闭环模型在虚拟库里挑出候选 → 化学家合成并测试 → 实测数据回流 → 模型更新 → 再挑下一批。讲义把这个循环放在案例研究的中心位置因为单次预测再准也没用价值在于用尽量少的实验轮次逼近帕累托前沿。这个思路在业界叫主动学习或设计-制造-测试-分析循环。闭环设计里有个容易被低估的细节每轮该选多少个候选。选太少信息增益不够轮次拉长选太多实验成本压不住而且模型在低置信区域的预测可能集体翻车。常见的做法是按模型不确定度分层采样把候选分成「高置信高价值」和「高不确定高信息」两堆前者保证短期产出后者保证长期探索。这个平衡没有通用公式得按项目预算和周期调。4. 从分子表示到模型训练几个决定成败的实现细节4.1 分子表示的选择直接决定模型上限同一个分子可以有多种表示SMILES 字符串、分子指纹如 Morgan 指纹、图结构、3D 构象。讲义在讲算法迁移时隐含了一个判断——表示的选择要和任务匹配。做反应预测SMILES 序列加 Transformer 很自然因为反应本身就是「反应物字符串 → 产物字符串」的翻译问题做性质预测图神经网络更合适因为它保留了拓扑信息做构象相关的任务就必须上 3D 坐标。这里有个血泪经验很多人图省事直接用指纹加全连接网络在小数据集上效果还行但一旦数据量上去、任务变复杂指纹的固定长度和哈希碰撞就成了瓶颈。指纹是把分子压成一个定长向量压缩过程中丢掉了哪些信息你是不知道的这就是个黑匣子。图表示虽然训练慢但信息保留更完整可解释性也更好——你能回溯到具体哪个子结构贡献了预测。4.2 数据划分随机划分在化学里为什么是自欺欺人这是讲义没有明说、但整个领域都踩过的坑。化学数据如果按随机方式划分训练集和测试集同一个骨架的类似物可能同时出现在两边模型实际上是在「背答案」测试指标虚高。真实场景里你要预测的往往是训练集里没见过的骨架这叫分布外泛化。正确的做法是按骨架划分scaffold split或按时间划分。按骨架划分保证测试集的分子骨架在训练集里没出现过这样测出来的指标才反映真实的泛化能力。我见过太多项目报告里 R² 高达 0.9一上真实候选库就崩回头一查全是随机划分惹的祸。这个细节决定了你对模型能力的判断是否可信比调超参重要得多。4.3 不确定度估计模型说「不知道」比说「知道」更有价值在主动学习闭环里模型不仅要给预测值还要给置信度。如果模型对某个候选的预测方差很大说明它没在训练数据里见过类似结构这时候要么补数据要么把这个候选交给实验去验证——这正是探索的价值所在。讲义把多目标设计和机器学习结合背后依赖的就是这种「带不确定度的预测」。常见的实现思路是用集成模型多个模型预测的方差作为不确定度或贝叶斯神经网络。集成方法实现简单、效果稳定代价是训练成本翻几倍。高斯过程在小数据上给的不确定度最靠谱但扩展到大数据就吃不消。选哪种取决于你的数据规模和算力预算没有银弹。5. 避坑与排查化学机器学习项目里最常见的五个翻车现场5.1 测试指标漂亮真实候选全军覆没现象交叉验证 R² 0.9 以上模型部署后对真实虚拟库打分挑出来的分子实验活性惨不忍睹。原因数据划分用了随机切分训练集和测试集共享骨架模型在背答案。解决改用骨架划分或时间划分重新评估如果指标大幅下降说明之前的模型根本没有泛化能力需要补多样化的训练数据或换更强的表示。5.2 多目标权重拍脑袋优化结果偏向单一指标现象优化出来的分子活性极高但毒性也高或者溶解度达标但完全无法合成。原因标量化时权重设置不合理某个目标权重过大模型把所有资源都压在那个维度上。解决不要用固定权重改用帕累托前沿方法输出一组折中解让化学家按项目阶段挑选如果必须标量化至少做权重敏感性分析看结果对权重有多敏感。5.3 模型对分布外分子给出高置信错误预测现象模型对某些结构新颖的候选给出很窄的置信区间但预测完全错误。原因不确定度估计失效集成模型里的各个子模型在分布外区域犯了同样的错方差反而很小。解决引入基于距离的分布外检测如计算候选到训练集最近邻的距离对远离训练分布的候选强制降权或标记为「需实验验证」不要盲信模型自报的置信度。5.4 数据泄漏预处理阶段就把测试信息漏进训练现象模型效果好得不真实换一批数据就崩。原因在划分数据集之前做了全局标准化、全局特征选择或全局缺失值填充测试集的统计信息渗进了训练过程。解决把所有预处理步骤放进管道只在训练集上 fit再 transform 测试集。这个坑在化学数据里尤其隐蔽因为特征工程往往涉及整个数据集的分布统计。5.5 忽略合成可行性模型推荐的分子造不出来现象模型挑出的候选在计算上完美但化学家一看就说「这个合成不了」。原因优化目标里没有合成可行性这一项模型在化学空间里自由漫游跑到了合成上不可达的区域。解决把合成可行性作为约束或额外目标纳入优化或者用逆合成规划工具对候选做过滤只保留有可行路线的分子再进入下一轮。6. 设计取舍为什么「模型 实验」的分层策略比纯模型更靠谱回到讲义开头那个 CASP 的例子。蛋白质折叠预测在竞赛指标上被宣布「基本解决」但化学药物设计远比这复杂——蛋白质折叠有明确的物理目标能量最低构象而药物设计的目标是多维的、带主观权重的、且随项目阶段变化的。这个差异决定了化学里的机器学习不能照搬「端到端替代」的思路而必须走分层策略模型负责在 10^60 的空间里做粗筛和排序模拟负责对少量候选做物理校验实验负责最终裁决。这个分层背后是一个成本-精度的权衡表层级单次成本精度适用阶段机器学习模型秒级依赖数据覆盖百万级虚拟库粗筛量子化学模拟小时级物理约束较可靠百级候选精算实验验证天到周真实基准十级候选定论每一层的输出都是下一层的输入模型的价值不在于替代后两层而在于把后两层要处理的候选数量压缩几个数量级。这个思路的代价是模型的误差会向下游传播如果粗筛阶段漏掉了真正的好分子后面再精确也找不回来。所以模型召回率比精确率更重要——宁可多放一些候选进模拟也别把潜力分子筛掉。验证这套策略是否 work最直接的方法是做回溯测试拿一批已知的、最终成功的药物分子看模型在它们还没被发现的年代能不能把它们排进候选列表的前列。如果排不进去说明模型的化学空间覆盖有系统性盲区。这个测试比任何交叉验证指标都更能说明问题因为它模拟的正是真实发现场景。从那以后我每次评估一个化学机器学习方案都会先问三个问题数据怎么划分的、不确定度怎么估的、合成可行性有没有纳入约束。这三个问题答不上来指标再漂亮我也不敢信。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?