想象你正在找一套理想的公寓:交通方便、房子够大、租金不贵、阳光充足。这四条要求看起来都不离谱,但真正找过房的人都知道——离地铁近的小区租金贵,面积大的房子总价高,阳光好的户型又不常有。“选房困难症”的本质,不是你不懂自己要什么,而是多个美好目标之间天然在互相拆台。 药物设计遇到了同样的难题:一个候选分子不仅要有效,还要能被吸收、不被迅速代谢、不易引起心脏毒性……这些ADMET性质就像公寓的面积、租金、位置和采光,彼此纠缠、相互制约。幸运的是,科学家们从选房哲学里提炼出一套系统方法:多目标优化、帕累托前沿、约束满足、迭代循环。当AI加入这场寻房之旅,它不再只是“随便帮你看看”,而是一个精通全城的资深中介,能每天为你生成全新的候选清单。 本文用一个贯穿始终的“找房故事”,把ADMET性质优化这个AI制药核心讲透——从目标冲突,到前沿取舍,再到实验验证的闭环。
对AI制药从业者而言,掌握ADMET优化方法,意味着能在候选分子早期就规避“后期失败”的巨坑,从源头提升研发效率与命中率,这是AI制药落地的关键价值之一。
可视化演示
展示药物分子在活性与ADMET性质(溶解度、毒性、生物利用度)间的多目标优化,帕累托前沿引导分子优化方向,权衡活性与药代性质。
本节配有交互动效(进入视口后自动加载,约 3KB)。
ADMET多目标帕累托优化 候选分子分布 帕累托前沿 min f=w·(1-Act)+(1-w)·(1-ADMET) 前沿引导优化方向
目标冲突根源
第一次看房,你会列一张“理想清单”:步行到地铁站5分钟、面积90平方米、月租五千、朝南带阳台。中介微微一笑:这样的房子不存在。时间一长你就明白,“好房子”不是一个点,而是一片相互妥协的区间——目标之间天然冲突。
在药物优化中,这份“理想清单”就是ADMET性质:溶解度、透膜性、代谢稳定性、血浆蛋白结合率、hERG安全窗口。药效活性是所有清单里最硬的一条,相当于“户型必须合理”。一个分子若活性不达标,其他性质再好也直接出局;但在活性达标的候选物里,各ADMET性质之间依然存在激烈内耗。
举例说,提高亲脂性(logP)往往有助于渗透细胞膜,但亲脂性过高会让水溶性下降,并可能提高代谢清除率和hERG结合风险;反过来,引入极性基团虽然改善溶解度,却可能让分子变成外排转运蛋白的底物,导致细胞内的药物浓度不足。这种“按下葫芦浮起瓢”的现象,在药物化学中被称为多目标冲突。把候选分子和m个ADMET打分统一形式化,就得到多目标优化问题的经典表达式:
就像你最终不会执着于“全都最好”的公寓,而是学会给目标排序:先保证硬指标,再在不那么关键的指标上取得平衡。多目标优化要做的正是这件事——明确冲突,然后在多个目标之间找到合理折中。
- 候选分子所在空间\(\mathcal{X}\) 代表可探索的化学分子空间,\(x \in \mathcal{X}\) 表示从中取出一个候选分子,它是结构不确定的待优化对象。
- m 个 ADMET 目标\(f_1, f_2, \dots, f_m\) 分别对应溶解度、渗透性、代谢稳定性等 m 个打分器,每个打分器把分子 x 映射成一个可比较的数值。
- 同步最大化\(\max_{x}\) 要求我们在选择 x 时让这些分数尽量大;但因为冲突,只能追求整体协调,而不是把所有目标都推到极限。
帕累托前沿引导
中介听你抱怨三次后,会拿出一个文件夹:“这几套是当前最值得考虑的。”A套:离公司近但面积小;B套:面积大但没电梯;C套:采光好但价格贵30%。你问哪套是“最好”的?中介摇头:它们各有所长,任何一套想再改进某一项,就必须牺牲另一项。这个文件夹,就是看房界的帕累托前沿。
帕累托前沿是多目标优化最核心的概念:一组“非支配解”的集合。在药物优化中,一个分子若能以同等活性、更好代谢稳定性出现在你面前,那么原来的分子就是冗余的。这种“全面领先”的关系,数学上叫支配:
在实际AI制药管线中,模型会一次性生成成千上万个候选分子,进行活性与ADMET打分,然后通过非支配排序去掉被支配者,只保留前沿集合。帕累托前沿不会告诉你“哪套公寓最好”,但它帮你把几百套房子压缩成一份精致短名单,让药物化学家把注意力集中在少数高价值候选上。
- “不差于”条件\(\forall i\; f_i(u) \geq f_i(v)\) 表示对于所有 m 个目标,分子 u 的分数都不低于 v,这是成为支配者的前提。
- “至少更优”条件\(\exists j\; f_j(u) > f_j(v)\) 表示至少在一个目标上 u 严格好于 v,避免了两者完全等同的平凡情况。
- 支配与前沿两个条件同时满足时,u 支配 v;把所有“不被任何人支配”的分子连起来,就得到帕累托前沿。
约束满足策略
你再怎么纠结,也不会考虑月租一万五或通勤两小时的房子,这些是硬性红线,直接淘汰。找房顾问称其为“硬约束”;而“最好有电梯”“最好有停车位”这类要求,则是可以扣分但不直接淘汰的“软约束”。
ADMET中的硬约束可以是:化合物库只接受计算预测的hERG IC50 > 30 μM的分子。软约束则可能是:溶解度尽量高于50 μg/mL、代谢清除率尽量低。硬约束负责收窄搜索空间,软约束负责引导评分。两者结合,就构成了约束满足策略:
约束满足策略中,AI模型会保留“只超一点点”的候选,因为它们距离可行域很近,经过一轮小改动可能就能满足约束。这比传统一刀切淘汰更有探索性——本质上就是把“底线”和“偏好”变成一套可计算、可优化的打分规则。
- 核心目标\(g(x)\) 是主优化目标,比如最大化活性或综合成药性评分,这是整个优化要优先保障的方向。
- 约束函数\(c_i(x)\) 是第 i 个约束条件,当分子满足约束时取负值或零,违反时取正值,代表违反程度。
- 惩罚项\(\max(0, c_i(x))\) 只保留“超额违反”的部分,乘上系数 \(\lambda_i\) 后累加进目标函数,实现“越线越扣分”。
迭代优化循环
看房不可能一次到位。你第一次看了10套,选中2套实地验房,发现B栋临街噪音大、C栋卫生间渗水。你带新信息回去告诉中介:“噪音大可以接受,但渗水绝对不行。”中介重新筛选后,第二轮推荐就精准很多。看房、验房、反馈,构成一个迭代循环,这才是选房成功率上升的根本原因。
AI制药中的迭代优化循环如出一辙:①计算预测——模型对候选分子的活性与ADMET性质打分;②化学合成——挑评分高的一小批分子进入实验室;③生物测试——体外实验测出真实数据,与预测对比;④模型更新——把差异作为新样本回传给模型,重新训练或微调。四步转一圈,就完成了一个“预测-实验学习”周期:
每次迭代都会增加少量高质量实验数据,模型对化学空间的认知越来越准。早期模型建议的分子成功率低,但经过3-5轮迭代,命中率常常显著上升。就像你和中介沟通越细,推荐的公寓越合心意——实验往返的每一轮都在告诉AI“这个方向好,继续”或“这个性质是红线,别再碰”。
- 预测均值\(\mu(x)\) 是模型对候选分子 x 目标值的平均估计,代表“目前认为它有多好”。
- 不确定性\(\sigma(x)\) 是预测的标准差,代表“对这个判断有多大把握”,实验数据越少的区域,不确定性往往越高。
- 平衡权重\(\beta\) 是探索系数,想让模型多看未测区域就调大,想让模型聚焦已验证优势区就调小。
- 逐步寻优\(\arg\max\) 表示选择能让括号内整体值最大的分子,作为下一轮测试首选。
先导化合物优化
当候选清单缩小到两三套房子后,下一步不是继续找新房,而是把选定的一套毛坯房精装修:拆掉卧室隔墙以扩大客厅,换掉老窗户改善隔音,给阳台做雨棚增加储物。每一个改动都有明确目的,但改动往往牵一发动全身。
先导化合物优化就是这间毛坯房的装修过程。药物化学家常从帕累托前沿中选一个活性强但某个ADMET性质逊色的先导分子,通过骨架跃迁(更换核心母核)、基团替换(如芳环上的氟代、甲基替换)、代谢位点修饰(封闭易被CYP酶作用的位点)来系统调节性质:
例如,将代谢易感的苄位氢替换为氟原子,常能降低CYP氧化速率从而延长半衰期,但氟原子的强吸电子效应可能改变pKa,影响溶解度。因此每次改动都要用ADMET预测模型验证,而不是凭经验一步到位——就像装修时要反复量尺寸,最后才能把一个“差点合格”的候选逐步装修成各项性质都可接受的临床前候选物。
- 原分子与改造分子\(M\) 是改造前的先导化合物,\(M'\) 是经过基团替换或骨架跃迁后的新分子,两者共享大部分核心骨架。
- 改动基团集合\(\mathcal{G}\) 是这次优化中所有被改动的基团或片段的集合,每次修改都可以拆解为多个局部变化的叠加。
- 单点性质差异\(f_g(M') - f_g(M)\) 表示改动基团 g 对某个可计算性质(如logP、TPSA)造成的数值变化,可正可负。
- 加权汇总\(w_g\) 是不同改动对整体ADMET目标的重要程度,最终把所有变化加权求和,得到综合收益 \(\Delta S\)。
AI启发式搜索
中介最值钱的本事不是带你逛完所有房源,而是持续搜寻“市场上还没人挂出来的下一套房”。他会记住你的偏好,根据这些规律去联络业主、发现新渠道。AI的多目标搜索算法,就是这位中介的选房雷达。
在AI制药中,常用启发式搜索包括:遗传算法(把分子片段抽象成“基因”,通过选择、交叉、变异产生新分子)、强化学习(把分子生成看作序列决策问题,以ADMET与活性打分为奖励)、以及各种基于图神经网络的生成模型。它们共同的目标,是在巨大的化学空间中高效搜索高分区。遗传算法的经典选择概率公式如下:
为避免AI只推荐“同一个小区的房子”,算法还会引入多样性惩罚:当候选分子之间的骨架或指纹相似度太高,得分会被削弱。这样每代生成会覆盖多个分子家族,帕累托前沿的探索更全面。AI制药不会替你决定最终买哪套房,但会保证候选文件夹里永远有新鲜选择。
- 适应度排名\(r_i\) 是候选分子在混合打分(活性 + ADMET)中的排名或得分,代表“这套房适合你的程度”。
- 选择压力\(\alpha\) 是指数参数,α 越大,优秀分子和普通分子的选中概率差距越大,算法越“激进”。
- 归一化分母\(\sum_{j=1}^{N} r_j^{\alpha}\) 把所有分子的加权分数求和,目的是把选择概率标准化到 0 到 1 之间。
- 选择概率\(P_i\) 表示第 i 个分子被选中参与下一代“繁殖”的概率,概率越大,其结构特征越容易被保留和继承。
实验验证闭环
看房最后一步是验房:查墙体裂缝,开龙头测水压,深夜听隔音效果。中介说得再天花乱坠,房子还是要亲自住一段才知道。越是关键决策,越需要实测数据兜底。
ADMET预测再准,也仍是计算模型的推测。分子能否推进,必须经过实验验证:溶解度可用摇瓶法测定,代谢稳定性用肝微粒体实验,渗透性用Caco-2细胞实验,hERG风险用电生理或荧光法检测。这些体外数据构成成药性评估的证据链。迭代验证是否在收敛,可以用一个简单指标来度量:
把验证结果回传到模型更新循环后,迭代命中率通常随轮次上升。如果某类分子总在代谢稳定性实验上失败,模型会自动学习这一教训,下一轮生成时主动抑制这类结构。验房之后你可能仍会搬进去,但你已经清楚它的不足——药物研发也一样,没有完美分子,只有通过迭代确认“所有红线指标都可接受”的候选物。
- 分母作分母\(N_{\text{合成测试}}\) 是这一轮实际挑选出来合成并完成体外测试的分子总数,代表探索投入。
- 分子作分子\(N_{\text{验证通过}}\) 是实验各项指标均达标、进入下一轮优化的分子数,代表有效产出。
- 命中率两者相除再乘100%,得到该轮迭代的命中率;命中率随着模型更新逐步抬升,说明预测质量在持续进化。
AI 应用场景
激酶抑制剂:跨过hERG红线
阶段:先导化合物优化阶段
解决的问题:某团队开发新型EGFR抑制剂,初始候选物活性出色(IC50约2 nM),但hERG通道抑制风险高、代谢稳定性差。传统做法靠化学家经验反复试错,往往改好hERG又丢掉活性,周期长、成功率低。
具体案例:团队将“hERG IC50 > 30 μM”设为硬约束,活性与肝微粒体稳定性设为两个优化目标。AI模型用帕累托前沿引导骨架筛选,每轮生成约40个候选分子,合成20个左右进入实验。三轮迭代后,命中率从初轮不足15%提升到40%,最终候选物保持了亚纳摩尔级活性,hERG抑制风险大幅下降。
中枢神经系统药物:穿透血脑屏障的双重考验
阶段:性质优化与候选筛选阶段
解决的问题:中枢神经系统药物既要穿过血脑屏障到达靶点,又要抵抗P-糖蛋白外排,同时代谢稳定性不能太差。传统研发中这三项经常顾此失彼,单目标强化某一项会导致其他指标快速恶化。
具体案例:研究团队用多目标生成模型,在目标函数中同时加入血脑屏障渗透率、P-糖蛋白底物概率和代谢清除率三项预测分数。通过软约束加权,模型把“P-糖蛋白底物风险”作为惩罚项,每一轮生成后自动过滤高风险评分。经过4轮“预测—合成—测试”闭环,候选分子的脑/血浆浓度比提升近5倍,代谢稳定性同步改善。
Python 演示
import random random.seed(42) class ADMETOptimizer: """面向ADMET性质的小型多目标优化演示""" def __init__(self, n=24): self.n = n self.fp = [] # 分子指纹简化: logp, tpsa, hbd for _ in range(n): logp = round(random.uniform(-1.0, 5.0), 2) tpsa = round(random.uniform(20.0, 140.0), 1) hbd = random.randint(1, 6) self.fp.append((logp, tpsa, hbd)) def solubility(self, i): logp, _, _ = self.fp[i] return max(0.0, 1 - abs(logp - 1.8) / 5.0) def permeability(self, i): logp, tpsa, _ = self.fp[i] return max(0.0, 1 - (abs(logp - 3.2) / 4.0 + tpsa / 250.0)) def stability(self, i): _, _, hbd = self.fp[i] return max(0.0, 1 - hbd / 8.0) def objectives(self, i): return (self.solubility(i), self.permeability(i), self.stability(i)) def dominates(self, a, b): sa = self.objectives(a) sb = self.objectives(b) ge = all(x >= y for x, y in zip(sa, sb)) gt = any(x > y for x, y in zip(sa, sb)) return ge and gt def pareto_front(self): return [i for i in range(self.n) if not any(self.dominates(j, i) for j in range(self.n) if j != i)] def select_by_weight(self, w, front): best, best_val = None, -1.0 for i in front: val = sum(wi * obj for wi, obj in zip(w, self.objectives(i))) if val > best_val: best, best_val = i, val return best, round(best_val, 3) if __name__ == '__main__': opt = ADMETOptimizer(24) front = opt.pareto_front() print('候选分子数:', opt.n) print('帕累托前沿编号:', front) best, val = opt.select_by_weight([0.5, 0.3, 0.2], front) print('默认权重推荐分子:', best, '综合评分', val)
if __name__ == '__main__':程序入口,执行完整流程:生成候选、找前沿、做决策。self.fp.append((logp, tpsa, hbd))用三个物理化学描述符表示一个候选分子,模拟化学空间中的采样。ge = all(x >= y for x, y in zip(sa, sb))检查a在所有目标上都不差于b,这是支配关系的第一条件。
常见误区
误区我只要把溶解度调到最高、渗透性调到最高、代谢稳定性调到最高,不就能得到一个完美分子了吗?单目标逐个优化不就行吗?
正解性质之间存在内耗,追求单一目标极致必然牺牲其他目标。就像找房子时非要把面积、地段、价格全都顶满,结果只会发现根本没有这样的房源。正确做法是先用帕累托前沿框定一组“不可互相支配”的候选,再按项目权重从中挑选。
为何常见:初学者的思维习惯是“每个指标都做好”,忽略了药物分子是一个整体,各描述符共享同一套物理化学基础,改动一处会牵动全局。
误区既然前沿分子是非支配解,那它们应该就是最优的一批分子,随便挑一个都不会错。
正解帕累托前沿只说明这些分子在目标空间里“各有所长,彼此无法全面碾压”,并不代表它们绝对最优。进一步决策还需要结合实际约束:合成难度、成本、专利空间、项目侧重点。就像中介的候选清单里每套公寓都合适,但最终选哪套,取决于你当前最看重什么。
为何常见:人们很容易把“多目标优化结果”等同于“单一答案”,而帕累托前沿恰恰是一个集合而非单点。
误区AI模型的ADMET预测分数那么高,应该可以直接进入下一阶段,不需要每次都花钱做实验。
正解预测模型有训练数据偏差和不确定性,尤其对全新骨架可能出现“高估风险”。帕累托前沿是决策参考,不能替代实验验证。迭代循环中每轮的真实实验数据,正是让模型持续变准的养料。跳过验证,等于不验房就直接交钱。
为何常见:AI在各种竞赛中的“高准确率”容易让人产生迷信,但药物研发的代价远高于竞赛,每一个错误预测都可能浪费数月合成周期。
误区把分子库丢给AI,它自动多目标优化,我们只管看结果就行,不用告诉它什么该做什么不该做。
正解AI并不知道你的“hERG红线”或“合成预算”,所有硬约束、软约束、目标权重都必须由人类定义。约束满足策略的成败,取决于领域专家是否把底线和偏好准确翻译成目标函数。AI是帮你高效搜索的中介,不是替你决定需求的主人。
为何常见:广告中“端到端AI设计”的说法过于简化,让人误以为AI会自动学会行业规则,实际上行业规则必须显式编码进优化目标。
误区模型跑一轮,输出几个高分分子,那这次先导优化就算完成,可以准备进入临床了。
正解真实流程必须经历多轮“预测—合成—测试—再更新”的迭代。每一轮的实验数据都在修正模型假设,命中率会随轮次上升。第一轮生成的高分分子往往只是探索方向的起点,而不是终点。只有经过验证闭环确认“所有红线指标可接受”的分子,才有资格进入下一阶段。
为何常见:拿AI在虚拟筛选中的单轮输出,去类比需要多年打磨的药物研发流程,忽视了实验数据闭环带来的复利效应。
面试题
Q1. 关于ADMET多目标优化,以下哪个说法最准确?
- A.数据采集耗时巨大
- B.目标间存在制约冲突← 正确答案
- C.验证环节成本高昂
- D.计算资源永远不足
答案:B。多目标优化的核心难点是目标之间互相制约,像找房时面积、租金、通勤距离不可兼得。数据采集和验证成本虽然真实存在,但并非该优化问题特有的本质难点。
Q2. 帕累托前沿上的点意味着什么?
- A.所有目标值都不可再改进
- B.至少一个目标进一步提升
- C.所有目标都处于最差状态
- D.任一目标改进必损其他目标← 正确答案
答案:D。帕累托前沿的核心特性是“改进其中一个目标必然损害另一个目标”。A项表述不精确——不是所有目标都不可再改进,而是无法在不损害其他目标的前提下改进。
Q3. 多目标优化中,u 支配 v 的定义是什么?
- A.所有目标不劣且一个更优← 正确答案
- B.至少一个目标变优即可
- C.所有目标数值必须完全相同
- D.只有全部更优才叫支配
答案:A。支配要求“所有目标不差于对方且至少一个目标严格更优”。若只有一个目标更优而其他更差,则无法比较;若所有目标相同则是等价而非支配。
Q4. 分子优化中的“硬约束”指什么?
- A.可适当折中的偏好条件
- B.模型里归一化损失权重
- C.必须满足否则淘汰的要求← 正确答案
- D.测试集的准确率指标
答案:C。硬约束是“hERG IC50必须大于30 μM”“预算不得超过X元”这类不可协商的红线。软约束则可通过惩罚项折中,二者共同构成约束满足策略。
Q5. 贝叶斯优化中采集函数的主要作用是什么?
- A.平衡均值与不确定性寻潜力点← 正确答案
- B.存储所有已测分子坐标
- C.只取预测均值最大的解
- D.直接量化模型的训练误差
答案:A。采集函数是“探索-利用”天平,既看预测均值 μ(x),也看不确定性 σ(x)。只取均值最大的解会陷入局部最优,而忽略均值则会让搜索漫无目的。
Q6. 下列哪些属于先导化合物优化的常用策略?
- A.骨架跃迁改变母核结构← 正确答案
- B.卤素替换等基团修饰← 正确答案
- C.仅靠结晶解析不做修改
- D.代谢位点定点消除优化← 正确答案
答案:ABD。骨架跃迁、基团替换、代谢位点修饰都是先导优化的标准手段,目的是在保持活性的同时调整ADMET性质。仅做结构解析而不修改分子,并不能直接优化性质。
Q7. 遗传算法生成分子时,为什么要加入多样性惩罚?
- A.提高分子间结构相似度
- B.减少训练时间加速收敛
- C.让模型调参更加简单
- D.保持多样性避免局部前沿← 正确答案
答案:D。如果只按得分选择,种群会快速收敛到同一分子家族,错过其他同样有潜力的骨架。多样性惩罚相当于让中介不只带你看同一小区,而是同时探索多个板块,避免陷入局部帕累托区。
Q8. 关于ADMET优化迭代循环,下列说法正确的是?
- A.预测结果需实验验证← 正确答案
- B.前沿可替代实验验证
- C.迭代循环中模型更新← 正确答案
- D.先导优化一次即可上市
答案:AC。迭代循环由预测、合成、测试、模型更新组成,其中实验验证不可替代,因为预测模型存在系统偏差。帕累托前沿只是决策参考,一次优化也不可能直接成药。
Q9. 惩罚函数法处理约束的主要思路是什么?
- A.把所有硬约束全部撤除
- B.只保留约束不动目标函数
- C.将违规惩罚并入目标函数← 正确答案
- D.将测试集划分为训练集
答案:C。惩罚函数法把违反约束的程度按权重加进目标函数,模型会被罚分自然引导离开不可行区域,同时允许探索靠近约束边界的分子——相当于看房时“预算超一点”的房子可备选但要扣分。
Q10. 完整的ADMET迭代循环包含以下哪些环节?
- A.计算预测候选分子性质← 正确答案
- B.化学合成与活性测试← 正确答案
- C.模型重训练更新知识← 正确答案
- D.跳过实验直接进入临床
答案:ABC。计算预测、化学合成、活性测试、模型更新四步构成闭环。跳过实验验证直接进入临床严重违背药物研发流程,ADMET预测的真正价值是通过实验闭环持续校准。