一、预训练模型与ADMET简介

各位同学,咱们今天开篇先聊点实在的。预训练模型迁移到ADMET预测——这个组合在药物发现圈子里,最近两年火得不行。我刚开始接触那会儿,也琢磨过:为啥非要把这两个东西绑在一起?

嗯,别急,我们先把底层的概念理清楚。

1.1 预训练模型:到底是个啥?

预训练模型,说白了就是“先在大数据上学一遍,再搬到小任务上调优”。你要是用过BERT、GPT或者ChemBERTa,应该不陌生。传统的做法是:拿一个任务,从头训练一个模型。数据少,模型就废。预训练的思路正好反过来——先在海量无标签数据上“预训练”一个通用表征,再在目标任务上做微调。

我个人习惯把预训练理解成“打基础”。就像学拳击,你先得练体能、练步伐,而不是一上来就打实战。

预训练的核心价值:

  • 从大规模数据中学习通用特征
  • 减少下游任务对标注数据的依赖
  • 提高模型在小样本场景下的泛化能力

举个例子,在NLP里,BERT在数十亿文本上预训练,然后只需要少量标注数据就能做情感分析。在分子领域,道理一样——我们把数百万个分子结构丢给模型,让它自己学会“分子长什么样”。

1.2 ADMET预测:为什么这么重要?

ADMET,全称是吸收、分布、代谢、排泄、毒性。你想想看,一个候选化合物,活性再强,要是毒性大、代谢快、吸收差,那就是纸上谈兵。我在项目中遇到过不止一次:体外活性数据漂亮得不行,一进动物实验就翻车,后来一查,是代谢稳定性太差。

ADMET预测的价值就在于:在进入湿实验之前,先用计算模型筛一遍。这样做的好处很明显——省成本、省时间、降低后期失败率。

常见的ADMET属性,我列了个表:

属性 含义 关键指标
吸收 (Absorption) 化合物进入体循环的能力 Caco-2渗透性、口服生物利用度
分布 (Distribution) 化合物在体内组织的分布程度 血浆蛋白结合率、表观分布容积
代谢 (Metabolism) 化合物被酶系统转化的过程 CYP450代谢稳定性、代谢位点
排泄 (Excretion) 化合物从体内排出的途径和速率 半衰期、清除率
毒性 (Toxicity) 化合物对生物体的有害效应 hERG抑制、肝毒性、基因毒性

这些属性,每一个预测不准,都可能导致整个项目流产。所以业界对ADMET预测的精度要求,其实比活性预测还高。

一个常见的坑: 很多初学者以为ADMET预测可以套用活性预测的模型。我曾经也犯过这个错——直接把一个QSAR模型拿过来预测hERG,结果误差大到离谱。后来才发现,ADMET数据的分布和活性数据完全不一样,样本不平衡、实验噪声大,需要专门的策略来处理。

1.3 预训练模型怎么迁移到ADMET?

好,核心问题来了:预训练模型和ADMET预测怎么结合?

你想想看,ADMET数据有几个特点:数据量小、实验成本高、单个属性的标注样本少。拿hERG抑制数据来说,公开库也就几万条。几万条数据,在深度学习领域,根本不够看。

预训练模型迁移正好能解决这个痛点。具体怎么干?我一般分三步:

  1. 选模型: 找一个在分子大数据上预训练过的模型,比如ChemBERTa、MolCLR、GROVER。
  2. 做适配: 把预训练模型的输出层改成适应ADMET任务的分类或回归头。分类任务用交叉熵,回归任务用均方误差。
  3. 微调: 用ADMET数据对模型进行微调。注意学习率要小,一般1e-5到5e-5,不然预训练学到的知识会崩掉。

这其中的技术细节,咱们后面几章会一点点拆开讲。先放张图,让你对整个知识体系有个全貌:

预训练模型迁移到ADMET预测 知识体系 预训练模型 ADMET预测任务 迁移学习策略 ChemBERTa MolCLR GROVER / GIN 吸收 (Absorption) 分布 (Distribution) 代谢 (Metabolism) 排泄 (Excretion) 毒性 (Toxicity) 特征提取 微调 (Fine-tuning) 多任务学习 领域自适应 核心逻辑:预训练模型提供分子表征 → ADMET任务提供目标标签 → 迁移策略适配两者

一个小建议: 刚开始接触迁移学习的时候,别急着改模型结构。先把预训练模型当特征提取器用,看看效果怎么样,再决定要不要做微调。这样能帮你快速定位问题出在数据上还是模型上。

1.4 迁移学习为什么适合ADMET?

说到底,迁移学习的本质是“举一反三”。你在化学空间的大数据上学到了分子的通用表示,这个表示对ADMET任务天然就有帮助。因为ADMET性质和分子结构之间,存在高度非线性的关系,预训练模型恰好擅长捕捉这种关系。

我举个例子。用SMILES字符串做输入的ChemBERTa,在预训练阶段学会了SMILES的语法、分子片段组合规律、官能团的关系。等你要预测hERG抑制活性时,这些知识就能帮上大忙——模型已经知道“芳环+碱性氨基”这种结构很危险,微调只是让它在具体数值上更精确而已。

反过来讲,如果从零开始训练一个hERG预测模型,几万条数据学到的特征非常片面——它可能只记住了某些特定片段,而忽略了更广泛的化学空间规律。

总结一下,预训练模型迁移到ADMET预测的优势:

  • 解决了ADMET数据量少的瓶颈
  • 利用了化学空间的先验知识
  • 降低了训练成本和时间
  • 提升了模型的泛化能力和鲁棒性

1.5 一个小Demo:感受一下差距

为了让你更直观地感受,我简单展示一段代码。这只是个示意,别纠结细节。后面章节会逐行讲透。

# 伪代码示意:从零训练 vs 迁移学习
from sklearn.metrics import r2_score

# 数据:假设只有1000个hERG样本
X_train, y_train = load_herg_data(n_samples=1000)

# 方案A:从零训练GNN
model_scratch = GNN()
model_scratch.fit(X_train, y_train)
r2_scratch = r2_score(y_test, model_scratch.predict(X_test))
print(f"从零训练 R2: {r2_scratch:.3f}")

# 方案B:加载预训练模型 + 微调
pretrained = load_pretrained_chemberta()
model_finetune = FineTunedTask(pretrained, task='herg')
model_finetune.fit(X_train, y_train)
r2_finetune = r2_score(y_test, model_finetune.predict(X_test))
print(f"迁移学习 R2: {r2_finetune:.3f}")

说实话,在我自己测试过的一个项目里,从零训练的R²只有0.45,迁移学习直接干到了0.71。这个差距,干过实际项目的同学应该懂——在ADMET预测里,0.1的R²提升可能就意味着你筛掉了几个后期会剧毒的候选分子。

避坑提示: 预训练模型不是万能的。我曾经试过把在ZINC15上预训练的模型直接迁移到肽类ADMET预测上,效果奇差。原因是ZINC15里大部分是小分子药物,和肽类分子的特征空间差异太大。迁移学习有个前提——源域和目标域要有一定的相似性。这个问题我们会在“领域自适应”那章重点讨论。

1.6 本章要点一览

好,咱们把第1章的核心内容梳理一下:

知识点 要点
预训练模型定义 在大规模数据上学习通用特征,再迁移到小样本任务
ADMET任务 吸收、分布、代谢、排泄、毒性——药物成败的关键
迁移策略 特征提取、微调、多任务学习、领域自适应
核心优势 缓解数据稀缺,提升泛化能力,降低训练成本
常见陷阱 源域和目标域不匹配、微调学习率过高、输出层设计不合理