1. 药物文本与分子联合建模工程导论

在药物研发的真实工作流中,数据从来不是单一模态的。一个候选化合物既有一串可以被 RDKit 解析的 SMILES 结构,也有一份包含适应症、靶点、给药途径、不良反应和专利信息的说明书文本;一次临床试验既产生结构化的理化参数与活性数值,也产生大量非结构化的入排标准与研究者记录。传统做法是把这两类信息分别交给不同的团队处理:化学信息学团队负责分子指纹、图神经网络与定量构效关系,自然语言处理团队负责命名实体识别、关系抽取与文献挖掘。问题在于,药物研发中的关键判断往往发生在两种模态的交界处——"这个分子为什么对某个适应症有效"既需要结构证据,也需要文本证据。药物文本与分子联合建模工程,正是为系统性地解决这类跨模态问题而建立的方法体系与工程实践。

课程定位:从单模态模型到跨模态决策支持

本课程不是分子表示学习的入门课,也不是通用 NLP 教程,而是聚焦于"文本—分子"这一特定跨模态组合的工程化落地。它的定位可以概括为三层:第一层是表示层,解决分子如何被编码为向量、文本如何被编码为向量、两种向量如何进入同一语义空间;第二层是交互层,解决跨模态注意力、对比学习、条件生成等融合机制如何设计与训练;第三层是工程层,解决数据管线、特征存储、训练调度、评估协议与推理服务如何组织成可复现的系统。三层之间不是简单的堆叠关系,而是相互约束:表示层的选择决定了交互层的可行结构,交互层的复杂度又决定了工程层需要什么样的算力与数据治理能力。

需要特别强调的是,本课程讨论的"联合建模"不等于把两个预训练模型简单拼接后微调。真正的联合建模要求两种模态在训练目标上产生耦合,例如用分子结构预测文本描述中的靶点类别,同时用文本中的适应症信息约束分子生成的化学空间。这种双向约束才是联合建模区别于多模态特征拼接的核心。

核心问题:四个必须回答的工程命题

在动手搭建任何联合模型之前,需要先明确本节要解决的四个核心命题,它们贯穿后续所有章节。

  • 对齐问题:分子图与文本序列的粒度天然不同。一个分子可能对应一段几十字的活性描述,也可能对应一篇数千字的专利。如何定义"一对样本"的边界,如何构造正负样本对,直接决定对比学习能否收敛。
  • 缺失问题:真实数据中,分子有结构但缺文本、文本有描述但结构未公开的情况极为常见。联合模型必须能在部分模态缺失时退化为单模态推理,而不是直接报错。
  • 可解释问题:药物研发决策需要证据链。模型输出"该分子可能对某适应症有效"时,工程上需要能回溯到是哪些子结构片段与文本中的哪些实体产生了关联。
  • 评估问题:单模态指标(如 ROC-AUC、BLEU)无法衡量跨模态一致性。需要设计检索命中率、跨模态相似度分布、生成分子的文本符合度等专门指标。

这四个命题不是并列关系,而是存在依赖:对齐质量决定缺失处理的上限,可解释性依赖对齐过程中产生的注意力或相似度矩阵,评估指标则必须能同时反映对齐与缺失两种场景下的表现。

技术栈全景:从数据到服务的五层结构

下面这张图给出本课程所覆盖的技术栈全景。它按数据流向自下而上组织,每一层都标注了本节后续会反复使用的关键组件与本节专属的输入输出对象。

药物文本—分子联合建模技术栈全景 自下而上:数据 → 表示 → 交互 → 训练 → 服务 服务层 · Serving 跨模态检索 API 分子生成 + 文本校验 证据链回溯接口 批量打分与排序 训练层 · Training 对比学习目标 跨模态注意力 条件生成损失 缺失模态掩码训练 交互层 · Fusion 共享语义空间 交叉注意力矩阵 门控融合单元 子结构—实体对齐 表示层 · Representation 分子图 / SMILES 编码 文本 Token 编码 药效团 / 官能团特征 实体 / 关系嵌入 数据层 · Data ChEMBL / PubChem 结构 说明书 / 专利 / 文献 活性标签 / 适应症 样本对构建与清洗 数据流向上 每层均可独立替换:表示层换编码器、交互层换融合策略、训练层换损失函数,服务层接口保持稳定

这张图的关键信息在于:五层之间是松耦合的。表示层可以更换分子编码器(从 ECFP 指纹换成 GIN 图网络),交互层可以更换融合策略(从简单拼接换成交叉注意力),只要服务层的输入输出契约不变,整个系统仍然可用。这种分层设计是工程可维护性的基础,也是本课程反复强调的架构原则。

典型应用场景:三个真实问题

联合建模的价值最终体现在具体场景中。以下三个场景在本课程中会以案例形式逐步展开。

场景一:跨模态相似分子检索。给定一段描述"选择性 COX-2 抑制剂,含磺酰基,口服生物利用度高"的文本,系统需要在分子库中检索出结构不同但功能相似的候选分子。这要求文本编码器理解"磺酰基"对应的子结构模式,同时分子编码器能把该子结构映射到相近的语义区域。评估指标是 Top-10 检索命中率,示例目标可设为在内部测试集上达到 0.65 以上(该数值为教学假设,非实测结果)。

场景二:分子生成与文本约束。给定适应症描述和若干理化约束(如 LogP 在 2~4 之间、分子量小于 500),生成满足条件的新分子骨架。这里文本不是辅助信息,而是生成过程的硬约束。工程上需要把文本编码结果作为条件向量注入生成模型,并在解码阶段用 RDKit 做合法性校验,丢弃无效 SMILES 后重新采样。

场景三:不良反应文本与结构警示的关联发现。从药品说明书中抽取不良反应描述,与分子中的警示结构(如 Michael 受体、芳香胺)建立统计关联。这类任务对可解释性要求最高,因为最终输出需要以"结构片段—文本实体"对的形式呈现给药物化学家复核。

学习路径与工程准备

本课程后续章节将按"数据准备 → 单模态编码 → 跨模态对齐 → 融合训练 → 评估与部署"的顺序推进。在开始之前,建议准备好以下工程环境:Python 3.10 及以上、PyTorch 2.x、RDKit、HuggingFace Transformers、以及一个可用的 GPU 环境(显存建议不低于 16GB,用于中等规模对比学习训练)。数据方面,可以先用 ChEMBL 的子集(约 5 万条带活性描述的记录)和 PubChem 的 SMILES 做小规模验证,确认数据管线跑通后再扩展到全量。

本节的核心结论:联合建模的难点不在单个模型的复杂度,而在两种模态之间的对齐定义、缺失处理和评估协议。先把这三件事想清楚,再动手写模型代码,能避免大量返工。