数据稀缺下的AI药物发现:迁移学习、主动学习与生成模型实战策略
1. 当数据成为瓶颈:药物发现中的“小样本”困境
在药物研发这个高投入、长周期的领域里,我们常常面临一个尴尬的现实:想法很多,但能用来验证想法的数据却少得可怜。这不像互联网推荐系统,动辄有上亿用户的行为数据可以“喂”给模型。一个新靶点、一种新机制,在早期探索阶段,可能只有几十个、几百个经过验证的活性化合物数据。用行内人的话说,这就是典型的“小样本”问题。你手握一个理论上无比强大的机器学习(ML)或深度学习(DL)模型,它能在ImageNet上识别成千上万的物体,但在你只有200个分子数据的项目里,它可能表现得还不如一个简单的线性回归模型。过拟合、泛化能力差、预测结果不可信,这些都是数据匮乏直接导致的恶果。
所以,“面向数据受限药物发现的机器学习与深度学习策略”这个标题,精准地戳中了当前AI制药领域最痛的痛点。它探讨的不是如何设计更复杂的神经网络,而是在数据“粮草”不足的情况下,如何让现有的“精兵强将”(ML/DL模型)依然能打胜仗。这背后是一整套结合了领域知识、算法技巧和工程实践的“组合拳”。接下来,我将结合常见的研发场景,拆解几种核心策略的逻辑、具体做法以及我踩过的一些坑。
2. 策略一:迁移学习——借他山之石,攻本山之玉
迁移学习的核心思想很简单:在一个庞大的、通用的数据集上预训练一个模型,获得对问题域的基础理解(比如,学习什么是“分子结构”的通用特征),然后再用我们手头有限的、特定的数据对这个模型进行微调。这在图像和自然语言处理领域已是标准操作,在药物发现中,我们同样可以“借力”。
2.1 分子表示的预训练:从SMILES到通用特征
最直接的迁移方式是在分子表示上做文章。药物分子通常用SMILES字符串或分子图来表示。我们可以收集海量的、未经标注的化学分子结构数据(比如从PubChem、ZINC等数据库中获取的数百万甚至上亿个分子),用它们来预训练一个模型。
具体怎么做?一种常见的方法是采用类似BERT的掩码语言模型(Masked Language Model)思路,但对象是SMILES字符串。我们随机掩盖SMILES字符串中的某些原子或键,让模型去预测被掩盖的部分。通过这个过程,模型不需要任何活性数据,就能学习到化学语言(SMILES)的语法规则和分子子结构的统计分布。例如,它可能会学到“C=O”(羰基)经常出现,或者苯环的六个碳原子是如何连接的。
另一种是针对分子图的方法,使用图神经网络(GNN)进行预训练。可以设计一些自监督任务,比如:
- 节点/边掩码预测:随机掩盖图中部分原子(节点)或键(边)的类型,让模型预测它们。
- 上下文预测:给定一个分子中的某个子结构(上下文),预测该子结构周围的原子的分布。
- 分子性质预测(需部分标注):利用一些容易计算或获取的简单分子性质(如分子量、LogP、可旋转键数量等)作为辅助标签进行预训练。
注意:预训练的数据质量至关重要。务必清洗数据,去除无效、重复或结构错误的分子。预训练的目标是让模型学习“合理的化学空间”,而不是记住噪声。
2.2 微调:四两拨千斤的关键一步
获得预训练模型后,微调就是决定成败的一步。我们用自己那个很小的、带有目标属性(如对某靶点的抑制活性IC50)的数据集,在预训练模型的基础上继续训练。
微调实操要点与坑点:
- 学习率策略:这是微调的核心超参数。通常,我们会使用比预训练时小1到2个数量级的学习率。例如,预训练用1e-3,微调可能用1e-4或1e-5。这是因为模型已经具备了很好的基础特征,我们只需要对它进行小幅度的调整以适应新任务。粗暴地使用大学习率可能会“冲掉”预训练好的有用特征。
- 分层解冻:不要一次性微调所有层。一个更精细的策略是,先只解冻并微调模型的最后几层(分类头或回归层),保持前面特征提取层的权重不变。训练几个epoch后,再逐步解冻更深的层。这就像先调整决策逻辑,再微调理解能力。
- 数据增强的谨慎使用:在图像领域,旋转、裁剪是标准的数据增强。在化学领域,数据增强需要基于化学合理性。对于基于SMILES的模型,可以尝试SMILES枚举(同一个分子有多种合法的SMILES表示)。对于基于图的模型,可以尝试对原子和键的特征进行小幅度的随机扰动。但务必小心:不合理的增强(比如创造出化学上不可能的键)只会引入噪声,让模型学习到错误规律。
- 早停(Early Stopping)是必须的:小数据集上过拟合来得飞快。必须严格监控验证集上的性能,一旦性能不再提升甚至下降,立即停止训练。
个人心得:我曾在一个只有300个活性数据的激酶抑制剂项目上尝试迁移学习。使用在1000万个分子上预训练的GNN模型,仅微调最后两层,在独立测试集上的AUC达到了0.82。而如果直接用这300个数据从头训练一个相同的GNN模型,AUC只有0.65左右,且波动极大。这个差距直观地展示了迁移学习的威力。
3. 策略二:主动学习——让模型告诉你它需要学什么
当数据获取成本高昂(比如合成一个新化合物并做生物测试需要几周时间和数万元成本)时,盲目地合成或测试化合物是极大的浪费。主动学习是一种“聪明”的采样策略,其核心是让模型参与到数据收集的过程中来:模型对当前未标注的数据进行预测,并挑选出那些它最“不确定”或认为“信息量最大”的样本,交由专家(或实验)进行标注,然后将新标注的数据加入训练集,重新训练模型,如此循环。
3.1 不确定性度量的选择:哪种“不知道”更有价值?
如何量化模型对某个预测的“不确定”?常用方法有:
| 不确定性类型 | 计算方法 | 适用场景与解读 |
|---|---|---|
| 预测概率 | 对于分类任务,直接取模型输出的预测概率。例如,一个二分类模型预测某化合物活性的概率为0.51,另一个为0.95,则前者更不确定。 | 最简单直接,但只反映了模型最终的“猜测”,没有考虑模型自身的置信度。 |
| 基于委员会(Query by Committee) | 训练多个不同的模型(可以是不同架构,或同一架构不同初始化),看它们对同一个样本的预测是否一致。方差越大,不确定性越高。 | 能较好地捕捉模型认知的不确定性,但计算成本高。 |
| 贝叶斯方法 | 使用贝叶斯神经网络(BNN)或蒙特卡洛Dropout。在预测时多次前向传播(开启Dropout),得到预测的分布,用该分布的方差或熵来衡量不确定性。 | 从原理上最优雅,能区分认知不确定性和偶然不确定性,但实现相对复杂。 |
在实际药物发现中,我比较推荐使用蒙特卡洛Dropout作为不确定性估计的实用方法。它不需要改变模型架构,只需在预测时保持Dropout开启,运行T次(比如T=100),得到T个预测值,计算这些预测值的标准差或熵。标准差大的样本,就是模型“左右摇摆”、拿不定主意的样本,值得优先实验验证。
3.2 主动学习循环的设计与停止准则
设计一个完整的主动学习循环,远不止“选几个不确定的样本”那么简单。
- 冷启动:初始需要一个很小的种子数据集(比如20-50个经过精心挑选的、具有结构多样性的化合物)来训练第一个模型。这个种子集的质量直接影响整个循环的走向。
- 查询策略:每一轮选择多少个新样本进行标注(查询)?通常根据预算而定,比如每轮合成5-10个。除了选择最不确定的样本,还可以结合多样性考虑。例如,使用聚类方法,确保挑选的样本不仅在模型看来不确定,而且彼此在化学结构上有所不同,以探索更广的化学空间。
- 模型更新:是将新数据加入旧数据重新训练整个模型,还是只进行增量学习?对于深度学习模型,通常建议从头开始重新训练。虽然耗时,但能保证模型在新旧数据混合的分布上达到最优。增量学习容易导致灾难性遗忘。
- 停止准则:主动学习不能无限循环下去。常见的停止信号有:a) 预算耗尽;b) 模型性能在验证集上连续多轮没有显著提升;c) 新挑选出的样本,其预测不确定性已经低于某个阈值(说明模型对整个感兴趣区域的认知已经比较清晰)。
踩坑记录:在一次虚拟筛选中,我们使用了基于预测概率的主动学习。几轮之后发现,模型总是倾向于挑选那些结构怪异、合成难度极高的分子,因为模型对它们“不确定”。但这严重偏离了项目“寻找类药性先导化合物”的初衷。后来我们改进了查询策略,为不确定性分数乘以一个“类药性”惩罚因子(基于QED分数或合成可及性分数),引导模型在更务实、更可合成的化学空间内探索,效果好了很多。
4. 策略三:生成模型与强化学习——从筛选到设计
当数据太少,连监督学习都捉襟见肘时,我们是否可以换一个思路:不直接预测分子的性质,而是去生成具有理想性质的新分子?这就是生成模型结合强化学习的用武之地。它尤其适用于全新的、几乎没有已知活性化合物的靶点(即“零样本”或“极低样本”场景)。
4.1 分子生成模型的基石:VAE与GAN
生成模型首先要学会“什么是合理的分子”。同样需要海量无标签分子数据进行预训练。
- 变分自编码器(VAE):将分子(如SMILES)编码到一个连续的、低维的潜在空间(Latent Space)中,然后再从这个空间解码回分子。训练目标是让编码-解码过程损失最小,同时让潜在空间的分布接近标准正态分布。训练完成后,我们就在潜在空间里得到了一个“化学宇宙”的连续映射。在这个空间里,相似的分子距离近,我们可以通过插值、扰动来探索新的分子。
- 生成对抗网络(GAN):一个生成器和一个判别器互相博弈。生成器努力生成“看起来像真分子”的假分子,判别器努力区分真假。训练完成后,生成器就能产出逼真的分子结构。
然而,仅仅生成“像”的分子没用,我们需要的是“好”的分子。
4.2 用强化学习注入目标:引导生成方向
这就是强化学习(RL)登场的时候。我们可以把分子生成过程看作一个智能体(Agent)与环境交互的序列决策过程:智能体每次选择一个动作(比如,在SMILES字符串中添加一个字符,或在分子图上添加一个原子/键),最终生成一个完整的分子。环境会根据这个分子的某些计算属性(注意,这里不需要真实的实验数据!)给出一个奖励(Reward)。
奖励函数的设计是灵魂所在。在数据极度匮乏时,我们可以利用计算模拟和物理化学知识来构建奖励函数,例如:
- 类药性(Drug-likeness):奖励QED分数高的分子。
- 与靶点的结合亲和力(Docking Score):使用分子对接软件(如AutoDock Vina, Glide)计算生成分子与靶点蛋白的结合分数,分数越好(越负),奖励越高。
- ADMET性质:使用预训练的QSAR模型(这些模型可能在大量公共数据上训练过)预测生成分子的吸收、分布、代谢、排泄、毒性等性质,奖励综合性质好的分子。
- 结构新颖性:惩罚与已知分子库中分子过于相似的生成结果,鼓励探索新结构。
通过RL的试错学习,生成模型会逐渐调整其参数,使得它生成高奖励分子的概率越来越大。这就实现了在几乎没有目标活性数据的情况下,定向生成潜在活性分子。
技术细节与挑战:
- 稀疏奖励问题:绝大多数随机生成的分子奖励都很低(比如对接分数很差),智能体很难学到东西。需要设计课程学习(从简单任务开始)或使用近端策略优化(PPO)这类更稳定的RL算法。
- 生成有效性:确保生成的SMILES字符串100%语法正确、且对应的分子结构化学上有效,是一个持续的技术挑战。使用基于图的生成方法(直接在原子和键的层面上操作)通常比基于SMILES字符序列的方法有更高的有效性。
- 多目标优化:我们往往希望分子同时满足多个条件(高活性、低毒性、易合成)。这就需要设计多目标奖励函数,或者使用帕累托优化等策略。
个人体会:在一次针对一个全新蛋白靶点的项目中,我们只有该靶点的晶体结构,没有任何已知的抑制剂。我们采用VAE+RL的策略,奖励函数结合了分子对接分数、类药性(QED)和合成可及性(SA)分数。经过几轮RL迭代后,模型生成了一批在对接模拟中表现优异的全新骨架分子。后续的初步生化实验验证了其中两个分子确实具有微摩尔级别的活性。这个过程虽然计算量大(需要大量对接计算),但它成功地在“数据荒漠”中开辟了一条路。
5. 策略四:利用领域知识与多任务学习——榨干每一份数据的价值
在数据受限时,我们拥有的任何一点额外信息都显得弥足珍贵。领域知识和多任务学习就是帮助我们充分利用这些信息的工具。
5.1 将领域知识嵌入模型架构
与其让模型从零开始学习一切,不如将我们已知的化学、生物学规则“告诉”它,降低它的学习难度。
- 基于图的分子表示:这本身就是一种领域知识的嵌入。原子作为节点,键作为边,天然地表达了分子的拓扑结构,比SMILES字符串更符合化学家的直觉。
- 3D构象信息:对于与靶点相互作用,分子的三维形状至关重要。在模型中引入3D卷积或等变神经网络(如SE(3)-Transformer),直接处理分子的3D坐标和原子点云,能让模型更好地理解药效团和空间互补性。
- 物理化学描述符作为特征补充:除了从原始结构学习特征,我们还可以手动计算一些经典的物理化学描述符(如摩尔折射率、拓扑极性表面积TPSA、氢键供受体数量等),将它们作为额外的特征向量,与神经网络学习到的特征进行拼接。这相当于给模型提供了“先验知识包”。
5.2 多任务学习:借力打力,共享表征
多任务学习(MTL)是应对小样本任务的利器。其核心假设是:相关任务之间共享的底层特征表示,对每个任务都有益。在药物发现中,一个分子通常有多个相关的性质标签(如对多个相关靶点的活性、多种ADMET性质、溶解度等)。即使我们的主任务(如对靶点A的活性)数据很少,但如果能同时学习一些相关的、数据相对较多的辅助任务(如对靶点B的活性、或肝微粒体稳定性预测),模型就能学习到更通用、更稳健的分子特征表示,从而提升在主任务上的表现。
网络架构设计: 通常采用硬参数共享的架构:一个共享的骨干网络(如GNN)负责从分子结构中提取通用特征,然后针对每个任务,接一个独立的、轻量级的任务特定头(如全连接层)进行最终预测。
任务相关性是关键:
- 正相关任务:例如,预测同一个蛋白家族下不同亚型的抑制活性。共享特征非常有效。
- 弱相关或负相关任务:例如,同时预测活性和毒性。如果处理不当,可能会造成任务间的干扰,导致“跷跷板”现象(一个任务变好,另一个变差)。这时需要引入动态权重或梯度手术等技术,来平衡不同任务的学习。
实操建议: 在资源允许的情况下,尽可能多地收集和标注相关任务的辅助数据。即使是公共数据库中的中等质量数据,也能在MTL框架下为主任务提供巨大的帮助。我曾经负责一个项目,主任务(抑制某离子通道)只有不到200个数据点,但我们同时加入了该离子通道家族其他几个成员(共约1500个数据点)的活性预测作为辅助任务。MTL模型在主任务上的表现,显著优于仅用200个数据训练的单任务模型,其预测结果也更能经受住后续实验的检验。
6. 综合实战:一个数据受限项目的完整工作流设计
理论说再多,不如看一个虚拟但贴近实战的流程设计。假设我们有一个全新的靶点蛋白“Target-X”,通过高通量筛选(HTS)初步获得了150个有微弱活性的化合物(IC50 < 10 μM),另外还有500个经确认无活性的化合物。这就是我们全部的“金标准”数据。如何利用上述策略,高效地寻找更优的先导化合物?
阶段一:数据准备与模型选型(第1-2周)
- 数据清洗与划分:对650个分子进行标准化、去重。按8:1:1划分训练集、验证集和测试集。务必确保测试集完全隔离,仅在最终评估时使用一次。
- 收集辅助数据:
- 从ChEMBL等数据库收集与Target-X属于同一蛋白家族的其他靶点的活性数据(数千至数万条),用于多任务学习。
- 下载数百万个通用化学分子(如ZINC15),用于分子表示模型的预训练。
- 模型选型:鉴于我们有图结构数据和额外的多任务数据,选择图神经网络(GNN)作为骨干网络。计划采用预训练 + 多任务微调的混合策略。
阶段二:预训练与特征学习(第3-4周)
- 使用数百万通用分子,对GNN进行自监督预训练。采用“节点属性掩码”和“上下文预测”组合任务。
- 预训练完成后,得到一组学会了通用分子特征表示的GNN权重。
阶段三:多任务微调与初步模型构建(第5-6周)
- 加载预训练的GNN权重,在其后面为我们的主任务(Target-X活性)和3个辅助任务(同家族其他靶点活性)分别添加任务头。
- 使用我们的650条主任务数据 + 收集来的辅助任务数据,对整个网络进行微调。采用较小的学习率,并监控主任务在验证集上的表现。
- 此时,我们得到了第一个可用于预测的模型(Model v1)。
阶段四:主动学习循环(第7-12周,可多轮迭代)
- 利用Model v1,对一个包含数万个类药性分子的虚拟库进行预测。
- 使用蒙特卡洛Dropout计算每个预测的不确定性(标准差)。
- 设计查询函数:综合考虑预测活性(高概率为活性)、预测不确定性(高标准差)和与已有活性分子的结构多样性(通过分子指纹聚类评估)。每轮挑选出10-15个“高活性-高不确定-高多样”的分子。
- 将这10-15个分子提交给化学团队进行合成与生物测试(这通常是耗时最长的环节)。
- 获得新一轮的实验数据后,将其加入训练集,从阶段三的预训练权重开始,重新进行多任务微调,得到Model v2。
- 重复步骤1-5,进行2-3轮迭代。通常,经过2-3轮后,模型性能提升和发现新活性分子的效率会进入平台期。
阶段五:生成式探索作为补充(并行或后续阶段)在主动学习循环的间隙,或者当主动学习效率下降时,可以启动生成式探索。
- 使用预训练的分子VAE。
- 设计强化学习奖励函数:
Reward = w1 * Docking_Score + w2 * QED + w3 * (1 - Similarity_to_Known_Actives)。其中Docking_Score使用Target-X的蛋白结构通过快速对接软件计算。 - 运行RL训练,让VAE生成一批优化奖励函数的新分子。
- 从生成的分子中,筛选出奖励值最高、且合成路线可行的分子,并入下一轮主动学习的候选池进行实验验证。
这个工作流融合了迁移学习(预训练)、多任务学习、主动学习和生成模型,形成了一个在有限“金标准”数据驱动下,能持续探索和优化化学空间的闭环系统。它不再是单一模型的单次预测,而是一个动态的、不断进化的“AI化学家”工作流程。
7. 评估、验证与最后的防线:如何相信你的模型?
在数据稀缺的背景下,模型的任何一点“水分”都会被放大。因此,建立严格的评估和验证体系,比模型本身更重要。
7.1 超越常规的交叉验证
在只有几百个数据点时,标准的k折交叉验证(k=5或10)的方差会非常大。一次幸运的数据划分可能带来虚高的性能。
- 重复多次的交叉验证:进行50次甚至100次的随机划分和训练/验证,记录性能指标(如AUC, RMSE)的均值和标准差。这能更真实地反映模型的稳定性和泛化能力。
- 按时间或骨架划分:如果数据带有时间戳(如不同批次合成的化合物),务必按时间先后划分,用早期的数据训练,预测后期的数据,这更符合现实应用场景。或者,按分子骨架(Scaffold)进行划分,确保测试集中的分子骨架在训练集中未出现,这对评估模型的泛化到新结构的能力至关重要,也是药物发现中最关心的。
7.2 利用计算模拟进行“预验证”
在花费大量资源进行湿实验之前,充分利用计算工具进行交叉验证。
- 分子对接一致性:对于模型预测的高活性分子,用不同的分子对接程序(或同一程序的不同参数)进行多次对接,观察其结合模式和打分是否稳定、合理。如果同一个分子在多次对接中构象差异巨大或打分飘忽不定,则需要警惕。
- ADMET的早期预警:使用多个不同的、经过验证的ADMET预测模型(如来自ADMETlab, pkCSM等平台的模型)对候选分子进行预测。如果多个模型一致预测存在严重的毒性或代谢问题,这个分子的开发风险就很高。
7.3 设定现实的期望与决策点
必须清醒认识到,在数据受限条件下,模型的绝对预测精度是有限的。我们的目标不一定是得到一个AUC=0.95的完美分类器,而是:
- 富集率(Enrichment Factor):模型能否从庞大的虚拟库中,将真正的活性分子富集到前1%、5%的排名中?一个能将活性分子富集5-10倍的模型,即使其绝对AUC只有0.7-0.8,也已经能极大提升实验筛选的效率。
- 决策支持,而非决策替代:模型的输出应该作为化学家和生物学家决策的重要参考,而不是最终裁决。将模型预测排名前50的分子,交给专家根据化学可合成性、专利空间、类药性等进行综合评判,最终选择10-20个进行实验。这个人机结合的过程,能有效规避模型的盲区和错误。
最后的防线——湿实验验证:无论模型表现多好,计算预测始终是“纸上谈兵”。必须尽快进入合成与生物测试的循环。最早几轮的实验反馈,是校准模型、判断项目可行性的黄金标准。如果模型精心挑选的前几批化合物在实验中全部折戟,那么可能需要重新审视靶点、数据质量或整个建模策略。
在数据受限的药物发现中,成功的秘诀不在于追求最复杂的模型,而在于最巧妙地利用有限的数据,并将计算智能与领域专家的经验、以及必不可少的实验验证紧密地、迭代地结合在一起。这是一个需要耐心、严谨和务实精神的探索过程。
