AI药物发现:虚拟筛选、分子生成与临床前预测

📅 2026/7/21 12:57:05 👁️ 阅读次数 📝 编程学习
AI药物发现:虚拟筛选、分子生成与临床前预测

AI药物发现:虚拟筛选、分子生成与临床前预测

一款新药从立项到上市,平均要花十年以上、烧掉二十多亿美元,其中大把时间和金钱消耗在早期阶段:从海量分子里找出有活性的苗头化合物,再一轮轮优化成候选药物。传统做法靠高通量筛选(HTS)和药化专家的经验,成本高、周期长、命中率低。近几年机器学习在这个领域真正落了地——不是概念验证,而是实打实地把虚拟筛选、分子生成、性质预测嵌进了药企的研发管线。这篇文章按研发流程的三个关键环节,聊聊背后的技术方案和工程实践。

虚拟筛选:从百万级分子库中快速锁定苗头

虚拟筛选的目标很直接:给定一个靶点蛋白,从几十万到上亿个小分子中快速排出优先级,把最值得做湿实验的几十个分子挑出来。技术路线大致分两类。

第一类是基于结构的方法,核心是分子对接(docking),用 AutoDock Vina、Glide 这类工具模拟小分子与蛋白口袋的结合构象并打分。问题在于单个分子对接要几秒到几分钟,面对亿级库算力吃不消。现在的做法是用深度学习做打分函数的替代模型:先用传统对接跑一小批分子拿到标签,再训练一个 3D CNN 或等变图神经网络(如 E(3)-GNN)预测结合亲和力,推理速度比物理对接快几个数量级。

第二类是基于配体的方法,不依赖蛋白结构,只用已知活性分子去检索相似物。经典做法是 Morgan 指纹 + Tanimoto 相似度,配合 RDKit 几行代码就能跑:

from rdkit import Chem from rdkit.Chem import AllChem, DataStructs def screen_by_fingerprint(query_smiles, library_smiles, radius=2, nbits=2048, top_k=100): query_mol = Chem.MolFromSmiles(query_smiles) query_fp = AllChem.GetMorganFingerprintAsBitVect(query_mol, radius, nBits=nbits) scored = [] for smi in library_smiles: mol = Chem.MolFromSmiles(smi) if mol is None: continue fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=nbits) sim = DataStructs.TanimotoSimilarity(query_fp, fp) scored.append((smi, sim)) scored.sort(key=lambda x: x[1], reverse=True) return scored[:top_k]

指纹方法快但表达力有限,更现代的做法是用预训练的分子表征模型(如 MolBERT、Uni-Mol)把分子编码成向量,再在近向量空间里做检索,对骨架跃迁(scaffold hopping)的容忍度明显更好。

分子生成:让模型直接设计新结构

虚拟筛选只能在已有分子里挑,而化学空间的理论规模估计在 10^60 量级,已合成的分子只是沧海一粟。生成模型的价值在于跳出既有库,直接设计满足条件的新结构。

主流生成范式几经迭代:早期是 SMILES 字符串 + RNN/VAE,把分子当文本生成,缺点是容易产生语法错误或不可合成的结构;后来图生成模型(JT-VAE、GraphAF)直接在分子图上做自回归或流式生成,化学有效性大幅提升;近两年扩散模型成为主流,在 3D 坐标空间里生成分子构象,甚至可以直接在蛋白口袋条件下做结构生成(如 DiffSBDD、TargetDiff),让生成的分子天然适配靶点空腔。

生成只是第一步,关键在于多目标优化:生成的分子要同时满足活性高、可合成、类药性好。工程上常用强化学习或贝叶斯优化,把打分函数(对接分数、QED 类药性评分、SA 合成可达性评分)作为奖励信号,引导生成模型往目标区域采样。

临床前预测:ADMET 性质建模

很多候选分子不是死在活性上,而是死在吸收、分布、代谢、排泄和毒性(ADMET)上。如果能在合成之前预测这些性质,可以砍掉大量注定失败的实验。

ADMET 预测本质上是小规模监督学习问题,难点在于公开数据少且噪声大——每个性质往往只有几千条可靠数据。实践上有几个关键点:

  1. 用图神经网络(GIN、MPNN)建模分子图,比手工描述符的泛化能力更稳;
  2. 大规模无监督预训练 + 小数据微调是标配,先在几千万分子的自监督任务上训练,再在具体性质上微调;
  3. 集成不确定性估计(如 Deep Ensemble 或 MC Dropout),对置信度低的预测给出预警,避免模型在分布外分子上瞎猜。

下面是一张三条技术路线的对比:

| 维度 | 虚拟筛选 | 分子生成 | ADMET 预测 | | --- | --- | --- | --- | | 核心任务 | 从既有库中排序检索 | 设计全新分子结构 | 预测物化与体内性质 | | 主流模型 | 对接替代模型、分子指纹、表征检索 | VAE、扩散模型、强化学习 | GNN + 预训练微调 | | 数据依赖 | 蛋白结构或已知活性分子 | 大规模分子库 + 打分函数 | 小规模高质量标注数据 | | 输出 | 候选分子排序列表 | 新 SMILES / 3D 构象 | 性质数值与置信度 | | 典型瓶颈 | 打分函数精度、计算成本 | 可合成性、多目标权衡 | 数据稀缺、分布外泛化 |

工程落地建议

第一,别指望单个模型包打天下,真实管线是级联漏斗:快速指纹检索粗筛到十万级,表征模型精排到一万级,对接或 3D 模型再排到几百,最后人工评审出几十个做实验。每一级的精度和成本要匹配。

第二,重视负样本的构建。活性预测任务里"哪些分子确定没活性"往往比"哪些有活性"更难拿到,直接用随机分子当负样本会让模型学到假规律,建议使用性质相似但未报道活性的 decoy 分子。

第三,湿实验闭环比模型精度更重要。每一轮实验数据都应该回流训练集,主动学习(按不确定性挑下一批要测的分子)通常比一次性堆大模型收益更高。

总结与展望

AI 在药物发现里已经不是锦上添花,而是实打实缩短了苗头到候选的周期。虚拟筛选解决"找得快"