对比学习基本原理——以DrugClip为例,从CLIP到DrugClip

1、引言

复制代码
近期,清华大学在Science正刊中发表了基于对比学习的,小分子药物高通量挖掘的AI模型DrugClip被各大媒体争相报道。
实际上对比学习这种训练编码器的策略,是一个非常成体系的人工智能研究方向。计算机专业的人已经推出了很多算法、框架、损失函数,在自然语言处理、计算机视觉领域已经有了广泛的应用。下文是AI帮助我整理的,请尤其注意表格最后一行的CLIP算法。看到这个就可以理解为什么这篇Science叫做DrugClip了,是因为借鉴了CLIP这种以跨模态为优势的思路。看了之后就可以理解为什么这篇文章可以发表在Science当中了。
下文先介绍对比学习基本算法、CLIP算法再介绍DrugCLIP。

对比学习主要算法一览表(AI帮我总结的,供参考)

算法 核心思想/创新点 关键贡献 是否需要负样本
InstDisc (2018) 将每个数据实例视为独立"类",用记忆库存储负样本特征。 开创实例级对比学习,引入可更新的记忆库。
CPC (2018) 在时序数据中,通过当前片段预测未来,在潜在空间做对比。 将对比学习成功应用于语音、文本等序列数据。
CMC (2019) 利用数据的多视图(如不同颜色通道)作为天然正样本对。 证明多模态/多视角数据构造正样本的有效性。
MoCo (2019) 提出动量编码器 +队列记忆库,稳定提供大量负样本。 解决批量大小限制,成为里程碑式工作。
SimCLR (2020) 1. 强调数据增强 重要性 2. 引入非线性投影头 3. 需大批量训练 结构简单有效,推动对比学习实用化。
MoCo v2 (2020) 融合MoCo的动量机制与SimCLR的数据增强、投影头。 性能更强、更省资源,体现技术可复用性。
BYOL (2020) 无需负样本 ,通过在线网络与动量目标网络互相预测学习。 打破"必须负样本"定式,展示仅用正样本学习的可能性。
SimSiam (2020) 极简孪生网络,仅靠停止梯度操作避免模型坍塌,无需负样本/动量/大批量。 证明"停止梯度"是关键,结构极其简洁高效。
CLIP (2021) 跨模态对比学习,用海量图文对训练,将图像与文本映射到统一语义空间。 开创大规模跨模态预训练范式,实现强大零样本能力。 是(跨模态)

2、CLIP简明原理

1. 构建超大规模数据集:

复制代码
CLIP不使用人工标注的标签(如"猫"、"狗"),而是直接从互联网上收集了**约4亿个(图像,文本描述)对** 。例如,一张猫的图片可能对应"一只躺在沙发上的橘猫"这段文本。这种数据是天然存在、易于获取的。

2. 双塔编码架构:

复制代码
CLIP采用两个独立的编码器(一个用于图像,一个用于文本),将二者编码到**同一维度的向量空间** 。
  • 图像编码器 :可以是ResNet或Vision Transformer(ViT),将输入图像编码为一个特征向量 I
  • 文本编码器 :可以是Transformer,将输入文本(描述)编码为一个特征向量 T

3. 对比学习损失:

对于一个包含N个(图像,文本)对的训练批次:

  • 分别通过编码器得到N个图像向量和N个文本向量。
  • 计算一个 N×N 的相似度矩阵 (通常使用余弦相似度)。矩阵中的每个元素 S[i][j]代表第 i张图像与第 j段文本的相似度。
  • 在这个矩阵中,对角线上的元素 是正确匹配的图文对(正样本),所有非对角线元素都是不匹配的(负样本)。

训练目标就是 最大化正样本对的相似度,同时最小化所有负样本对的相似度 。这通过对称的 对比损失函数 (如InfoNCE Loss)实现:

对于每张图像 :让它对应的文本在N个文本中得分最高。

对于每段文本 :让它对应的图像在N个图像中得分最高。

4、推理与应用(如何使用)

训练完成后,CLIP获得了强大的 零样本(Zero-Shot)分类和检索能力 。这是其最革命性的特点。

以图像分类为例,传统模型 vs CLIP:

步骤 传统监督模型 CLIP(零样本)
1. 定义任务 固定类别(如1000类猫、狗、车...) 用自然语言动态定义类别 。例如,任务可以是"区分猫和狗",也可以是"区分开心和悲伤"。
2. 准备输入 输入待分类图像。 输入待分类图像。同时,将所有候选类别名称转化为描述性文本 。例如:"一张{类别}的照片""一张{类别}的插图""一张{类别}的灰度图"等。这被称为"提示模板工程"。
3. 计算与预测 图像通过模型,输出在固定类别上的概率分布 1.图像编码器 处理图像,得到图像特征向量 2.文本编码器 处理所有候选文本,得到一组文本特征向量 {T1, T2, ..., Tk}3. 计算 `I`与每个 `T`的 **余弦相似度**。4. 选择相似度最高的文本所对应的类别,作为预测结果。

本质上,CLIP把图像分类任务,转化为了一个图文匹配任务。 它不是在预测一个固定的标签ID,而是在回答" 这张图片和哪段文字描述最匹配? "

做的是检索!其实后续应用于DrugClip也是完全类似的。从这里可以理解那些AI专业的人做Science领域是一个怎么样的思维------------将实际问题抽象成数据后,再找到合适的算法去解决。根据不同算法的特点,选择最合适的算法。最难的不是在做算法------毕竟算法是用AI领域别人做过的,最难的是将实际问题抽象成数据问题,再找到合适算法的这一个过程。

3、DrugClip简明原理------Clip算法在药物发现领域的应用

1. 模型架构:双编码器

DrugCLIP的核心是两个独立的编码器(这个和此前的CLIP算法非常类似,不同模态的数据选择不同的编码器,下文的Uni-Mol是深势科技研发的,):

  • 分子编码器 :基于Uni-Mol架构,专门用于处理小分子的3D结构。在训练开始时,它直接加载了Uni-Mol的预训练权重,因此已经具备了强大的分子表示能力。
  • 口袋编码器 :同样基于Uni-Mol 架构,但它是随机初始化的,负责处理蛋白质口袋的3D结构。其任务是学会将口袋编码成与匹配的分子表示相似的向量。

2. 训练流程:两阶段策略

算法的训练分为两个关键阶段

阶段一:预训练 - 利用合成数据初始化口袋编码器

由于实验测得的真实蛋白-配体复合物数据有限,研究团队开发了 ProFSA(蛋白质片段-周围环境对齐) 策略来生成大规模合成数据。(这个思路是非常非常创新与巧妙的,需要深厚的药物化学知识与经验才能想到这一步)

  • 数据生成
  1. 片段分割 :从只有蛋白质结构的PDB数据库中,提取短的连续肽链片段作为"伪配体"。

  2. 末端修正 :对片段的N端和C端进行化学修饰(如乙酰化和酰胺化),使其更接近真实小分子的化学性质。

  3. 邻域移除与口袋检测 :移除伪配体两侧最近的几个残基,然后将其周围一定距离内的残基区域定义为"伪口袋"。

    通过这种方式,生成了550万个伪口袋-配体对。

  • 对比蒸馏训练
  • 在此阶段, 分子编码器的权重被冻结(不更新)
  • 目标是训练随机初始化的 口袋编码器 。通过 对比损失函数 ,让口袋编码器学会将"伪口袋"编码成与(已冻结的)分子编码器对"伪配体"编码相近的向量。这相当于将分子编码器的知识"蒸馏"给了口袋编码器。
阶段二:微调 - 在真实数据上优化模型

在预训练之后,模型使用从BioLip2数据库收集的约4.4万个真实的蛋白质-配体复合物数据进行微调。

  • 数据增强 :为了模拟虚拟筛选时配体构象未知的真实场景,研究使用RDKit为每个训练分子生成多个随机的3D构象。在每个训练周期中,随机选择一个构象进行训练,这大大增强了模型对构象变化的鲁棒性。(又使用了一步数据增强)

  • 对比学习微调

  • 在此阶段, 同时更新口袋编码器和分子编码器的权重

  • 训练目标同样是使用 对比损失函数 ,但这次是在真实的蛋白-配体对上学习。损失函数由两部分组成,形成一个对称的目标:

    1. Pocket-to-Molecule损失 :对于一个给定的口袋,使其与它真正的配体之间的相似度远大于与批次中其他所有分子(作为负样本)的相似度。
    2. Molecule-to-Pocket损失 :对于一个给定的配体,使其与它真正的结合口袋之间的相似度远大于与批次中其他所有口袋(作为负样本)的相似度。
  • 最终的损失是这两个损失之和。这种对称性确保了模型在两个方向上都表现良好。

3. 应用与推理:实现超高速虚拟筛选

训练完成后,模型的应用非常高效。

  1. 离线编码 :可以将整个化合物库(如5亿个分子)预先通过训练好的分子编码器处理,得到所有分子的向量表示并建立索引。
  2. 在线查询 :对于一个给定的目标口袋,使用口袋编码器将其编码为一个查询向量。
  3. 快速检索 :计算查询向量与化合物库中所有分子向量的 余弦相似度 ,并按照相似度从高到低进行排序。排名靠前的分子即为最有可能的结合候选者。

正是这种"编码-检索"的模式,使得DrugCLIP比需要为每一对蛋白-分子进行复杂计算的传统分子对接快数百万倍 ,从而实现了在一天内筛选万亿对蛋白-分子的壮举。

4、总结

DrugCLIP算法的实现精髓在于:

  • 巧妙的模型设计 :采用双编码器对比学习,将结合性问题转化为向量空间中的相似度检索问题。
  • 创新的数据策略 :通过ProFSA生成大规模合成数据解决真实数据稀缺问题。
  • 高效的训练流程 :两阶段训练(预训练+微调)确保模型既学到通用表示又适应真实任务。
  • 极致的推理速度 :将耗时计算离线化,在线阶段仅需简单的向量相似度计算,从而实现基因组级别的超大规模虚拟筛选。
相关推荐
爱吃rabbit的mq2 小时前
第2章 机器学习的核心概念(上)
人工智能·机器学习
ZCXZ12385296a2 小时前
YOLO13-C3k2-ConverseB改进:CCTV监控场景下车辆目标检测详解
人工智能·目标检测·目标跟踪
-To be number.wan2 小时前
Python数据分析:英国电商销售数据实战
开发语言·python·数据分析
木非哲2 小时前
AB实验高级必修课(二):从宏观叙事到微观侦查,透视方差分析与回归的本质
人工智能·数据挖掘·回归·abtest
玩电脑的辣条哥2 小时前
幽灵回复AI已回复但前端不显示的排查与修复
前端·人工智能
冬奇Lab2 小时前
团队宪法:CLAUDE.md 和rule使用技巧与复利模式
人工智能·ai编程
细节处有神明2 小时前
开源数据之历史气象数据的获取与使用
人工智能·python·算法
cxr8282 小时前
思维的相变:规模如何通过“结晶”重塑大语言模型的推理几何?
人工智能·语言模型·自然语言处理
【赫兹威客】浩哥2 小时前
基于 YOLO 多版本模型的路面缺陷识别实践与分析
人工智能·计算机视觉·目标跟踪