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, radius2, nbits2048, top_k100): query_mol Chem.MolFromSmiles(query_smiles) query_fp AllChem.GetMorganFingerprintAsBitVect(query_mol, radius, nBitsnbits) scored [] for smi in library_smiles: mol Chem.MolFromSmiles(smi) if mol is None: continue fp AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBitsnbits) sim DataStructs.TanimotoSimilarity(query_fp, fp) scored.append((smi, sim)) scored.sort(keylambda x: x[1], reverseTrue) 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 预测本质上是小规模监督学习问题难点在于公开数据少且噪声大——每个性质往往只有几千条可靠数据。实践上有几个关键点用图神经网络GIN、MPNN建模分子图比手工描述符的泛化能力更稳大规模无监督预训练 小数据微调是标配先在几千万分子的自监督任务上训练再在具体性质上微调集成不确定性估计如 Deep Ensemble 或 MC Dropout对置信度低的预测给出预警避免模型在分布外分子上瞎猜。下面是一张三条技术路线的对比| 维度 | 虚拟筛选 | 分子生成 | ADMET 预测 | | --- | --- | --- | --- | | 核心任务 | 从既有库中排序检索 | 设计全新分子结构 | 预测物化与体内性质 | | 主流模型 | 对接替代模型、分子指纹、表征检索 | VAE、扩散模型、强化学习 | GNN 预训练微调 | | 数据依赖 | 蛋白结构或已知活性分子 | 大规模分子库 打分函数 | 小规模高质量标注数据 | | 输出 | 候选分子排序列表 | 新 SMILES / 3D 构象 | 性质数值与置信度 | | 典型瓶颈 | 打分函数精度、计算成本 | 可合成性、多目标权衡 | 数据稀缺、分布外泛化 |工程落地建议第一别指望单个模型包打天下真实管线是级联漏斗快速指纹检索粗筛到十万级表征模型精排到一万级对接或 3D 模型再排到几百最后人工评审出几十个做实验。每一级的精度和成本要匹配。第二重视负样本的构建。活性预测任务里哪些分子确定没活性往往比哪些有活性更难拿到直接用随机分子当负样本会让模型学到假规律建议使用性质相似但未报道活性的 decoy 分子。第三湿实验闭环比模型精度更重要。每一轮实验数据都应该回流训练集主动学习按不确定性挑下一批要测的分子通常比一次性堆大模型收益更高。总结与展望AI 在药物发现里已经不是锦上添花而是实打实缩短了苗头到候选的周期。虚拟筛选解决找得快