药物模型概述:常见的药物模型类型
做药物研发的朋友应该都有体会——光靠实验筛选,周期太长、成本太高。所以过去十几年里,计算模型几乎渗透到了每一个环节。我最早接触这个领域时,觉得「模型」无非就是跑个回归预测活性,后来发现远远不止。ADMET、QSAR、分子生成……每一种模型背后都有一套完全不同的建模逻辑和超参数调优策略。
今天这一章,我带大家把这些常见模型捋一遍。你不需要记住所有细节,但得清楚每种模型解决什么问题、输入输出是什么、调优时重点关注哪些参数。后面十多章的超参数调优实战,全都是建立在今天这个框架上的。
ADMET 预测模型
先聊 ADMET。这四个字母代表吸收、分布、代谢、排泄、毒性。说白了就是「这分子在人体里能不能活得好、待得住、排得掉、有没有毒」。我有个项目曾经筛出一批体外活性极好的分子,结果 ADMET 一跑,半数以上因肝脏代谢快被淘汰。幸亏当时提前做了预测,不然白花几百万合成费。
ADMET 模型的输入通常是分子结构(SMILES 或分子指纹),输出是各类性质的概率或数值。常见模型包括:
- 口服生物利用度预测(是否满足 Lipinski 五规则)
- 血浆蛋白结合率预测(影响分布体积)
- CYP450 代谢抑制预测(药物相互作用风险)
- hERG 毒性预测(心脏毒性)
- 急性毒性 LD50 预测
从建模角度看,ADMET 数据多为不平衡分类问题(比如毒性样本少),超参数调优时需要注意类别权重、阈值调整。我个人习惯在验证集上使用 F2-score 而非准确率,因为漏掉一个毒性分子比误判一个无毒分子风险更大。
QSAR 模型
QSAR(定量构效关系)可能是药物建模里最经典的一类。它的核心假设:分子的结构特征(理化性质、拓扑指数、分子指纹)与其生物活性之间存在定量关系。你给它一个训练集——比如 200 个化合物及其 IC50 值——它就能学到一套映射关系。
QSAR 模型的输入是分子描述符向量,输出是连续值(回归)或类别(分类)。常见算法包括:
- 随机森林 / 梯度提升树(GBDT)
- 支持向量机(SVM)
- 深度学习(图神经网络、Transformer)
这里超参数调优的空间非常大。举个栗子:我做过一个激酶活性的 QSAR 项目,随机森林的 n_estimators 从 100 调到 500,R² 从 0.65 升到 0.72 就不再提升了。而 max_features 反而在 sqrt(p) 附近最好。嗯,这里建议你第一步先对树的数量做粗调,再用贝叶斯优化精调其他参数。
下面是一个用随机森林做 QSAR 回归的代码片段,可以看到描述符计算和模型训练的基本流程:
from rdkit import Chem
from rdkit.Chem import Descriptors
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
# 构建分子描述符
def calc_descriptors(smiles_list):
descs = []
for smi in smiles_list:
mol = Chem.MolFromSmiles(smi)
if mol is None:
descs.append([0.0]*len(Descriptors.descList))
continue
vals = list(Descriptors.CalcMolDescriptors(mol).values())
descs.append(vals)
return np.array(descs)
X = calc_descriptors(smiles_train)
y = ic50_train
# 随机森林回归,不调优时的基线
rf = RandomForestRegressor(n_estimators=200, max_depth=10,
min_samples_leaf=5, random_state=42)
rf.fit(X, y)
print("R²:", rf.score(X, y))
分子生成模型
如果说 QSAR 是「筛选」,分子生成就是「创造」。这类模型的目标是:给定一个靶点或一系列约束,自动产生新的、有潜力的分子结构。2018 年之后,深度生成模型(VAE、GAN、强化学习)几乎统治了这个方向。
常见的分子生成方法:
- 变分自编码器(VAE):学习分子结构的连续潜在空间,然后采样解码
- 生成对抗网络(GAN):生成器与判别器对抗训练,但分子 GAN 训练不稳定
- 强化学习(RL):把分子生成视为序列决策,用打分函数(对接打分、ADMET 预测)作为奖励
- 扩散模型:2023 年后兴起,在 3D 分子生成上表现惊艳
超参数调优在分子生成中常被忽视,但影响巨大。比如 VAE 的 β 值(KL 项权重)直接决定生成多样性与有效性的平衡。我试过 β=0.001 时生成的所有分子都不合法,β=1.0 时生成合法但跟训练集一模一样,调了十几次才找到 0.1 的 sweet spot。
wandb 或 optuna 做自动调优,切勿手撸网格搜索——我当年手动试了 36 个组合,差点累得放弃科研。
其他常见模型
除了上面三种,还有几个也值得了解:
- 分子对接(Docking):模拟配体与蛋白的结合模式,虽非严格「模型」但常搭配打分函数使用,其打分函数的参数就是超参数(如 Amber 力场参数优化)
- 药效团模型:基于空间特征(氢键供体/受体、疏水中心)筛选化合物
- 自由能微扰(FEP):高精度结合自由能计算,计算量巨大,但超参数主要与模拟步长、力场有关
- 代谢位点预测:基于图注意力网络预测分子何处容易被代谢
这些模型虽然各有侧重,但都有一个共同点:它们都需要在精度与速度之间做 trade-off。而超参数调优,正是找到那个平衡点的关键手段。
| 模型类型 | 输入 | 输出 | 典型超参数 | 我的经验重点 |
|---|---|---|---|---|
| ADMET | 分子指纹 / 图 | 分类概率或回归值 | 类别权重、threshold | 特别关注毒性类别不平衡 |
| QSAR | 描述符向量 | 活性值或类别 | 树数量、深度、学习率 | 描述符选择比模型更重要 |
| 分子生成 | 随机噪声或片段 | SMILES / 图 / 3D坐标 | 潜在维度、β、学习率 | 合法性筛选与多样性奖励 |
| 分子对接 | 配体+蛋白结构 | 对接打分 / 构象 | 格点尺寸、搜索算法参数 | 打分函数的选择比搜参更关键 |
模型类型之间的关系
为了更直观地看到这些模型在药物研发流程中的位置,我画了一张简图:
嗯,这一章的内容就是这些。你可以先对照表格和结构图,在脑海中搭好框架,后面实战时才不会迷路。