想象一下,你是一位负责“家庭小药箱”的整理师。药箱里躺着几十盒药,有的治感冒,有的治胃痛,有的只是创可贴。有一天,家人的一种罕见病突然发作,医院开的专用药要等很久才能进口,病人等不起。这时你灵光一现:药箱里那盒原本治疗高血压的药,分子结构恰好能和这种罕见病的靶点结合。于是你立即把药翻出来、查阅资料、咨询医生,最终通过调整剂量和给药方式,“老药”竟然真的控制住了新病。这个思路,就是今天要讲的“药物重定位”——在已上市或已进入临床研究的药物中,寻找它们原本适应症之外的新用途。 药物重定位的核心价值,可以用八个字概括:省时、省钱、降低风险。传统新药研发像“开荒种地”,从零开始挖分子、做毒理、上临床,动辄十年、耗资十亿美元,且失败率极高;而药物重定位像“旧物改造”,药物已经通过安全性检验,我们只需要验证它在新靶点上的有效性,相当于跳过了最危险、最烧钱的“安全性悬崖”。本文将以“家庭小药箱整理师”为主线索,带你走一遍这个逻辑链条:为什么需要重定位?怎么用机器学习寻找候选药?如何用图神经网络和知识图谱建模药物与疾病的关系?最后还会聊聊在AI+医疗行业中,这个技术如何落地、有哪些坑,以及面试官最爱问的问题。

岗位关联

学完本节,你将掌握药物重定位的完整技术图谱:从概念溯源到 AI 算法选型、从数据准备到模型验证,能直接用于药物研发、生物信息分析和医疗咨询等岗位的实战对话。

目录
  1. 可视化演示
  2. 概念与价值
  3. 数据基础
  4. 机器学习方法
  5. 图神经网络
  6. 深度学习进阶
  7. 评估与验证
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示转录组相似性、网络拓扑与知识图谱药物重定位方法,支持置信度调节。

本节配有交互动效(进入视口后自动加载,约 3KB)。

转录组相似性重定位 红色疾病上调基因被药物下调,表达反转 绿色药物逆转疾病特征,高相似性得分 Score = -corr(Drug, Disease) 基因表达反转程度决定重定位潜力

概念与价值

整理药箱的第一步,永远是先搞明白“箱子里的药能不能翻新”。药物重定位(Drug Repositioning)指的就是:针对已经批准上市或进入临床研究的药物,寻找它们在原有适应症之外的新治疗用途。这和药箱整理师翻出降压药治罕见病的逻辑一模一样——药的分子结构早已被验证是安全的,我们只是在寻找它“隐形的第二职业”。

传统新药研发为什么那么昂贵?因为它像“从零开垦一片荒地”:先要发现先导化合物、做动物毒理试验、走完三期临床试验,每一步都可能让项目夭折。而药物重定位是“二手房改造”:房子结构(安全性)已经通过质检,你只需要重新装修(验证新靶点的有效性),自然省时省钱。据统计,传统新药研发平均耗时 10-15 年、耗资超过 10 亿美元,而药物重定位可以将研发周期缩短到 3-5 年,成本降至原来的 60% 以下。

从技术角度看,药物重定位的核心公式是一个条件概率问题——我们想找到药物 $d$ 与疾病 $t$ 之间“存在治疗关系”的概率。用数学语言描述:

回到药箱的比喻:我们不需要重新验证“这盒药吃下去安不安全”(已经上市说明安全),只需要评估“这盒药能不能管住新病”。这正是药物重定位在研发链条中最迷人的地方——用最小的时间成本,挖掘最大的治疗价值。

P(rel(d,t)=1∣features(d,t))P(\text{rel}(d, t) = 1 \mid \text{features}(d, t))
这个公式的意思是:在已知药物和疾病的各项特征(分子指纹、靶点蛋白、副作用记录等)条件下,计算它们存在治疗关系的概率。概率越高,越值得进入实验室验证。
  1. 关系标记$\text{rel}(d, t)$ 表示“药物 d 与疾病 t 之间是否存在治疗关系”,这是一个二值变量——有(1)或无(0)。
    rel(d,t)∈{0,1}\text{rel}(d, t) \in \{0, 1\}
  2. 条件特征$\text{features}(d, t)$ 是药物和疾病配对后的特征向量,可以包括药物分子指纹、疾病基因表达谱、蛋白质相互作用等信息。
    features(d,t)=[fdrug;  fdisease]\text{features}(d, t) = [f_{\text{drug}}; \; f_{\text{disease}}]
  3. 条件概率$P(\cdot \mid \cdot)$ 表示在右侧条件下左侧事件发生的概率,机器学习模型要建模的正是这个条件分布。
    P(A∣B)=P(A∩B)P(B)P(A \mid B) = \frac{P(A \cap B)}{P(B)}

数据基础

整理药箱时,光知道“有盒药”是不够的,你得知道药的成分、性状、适用人群。同样,药物重定位的起点是高质量的结构化数据。这就像给每一盒“老药”和每一种“新病”分别建立档案,再寻找档案之间的关联线索。

第一类数据是药物分子指纹(Molecular Fingerprint)。分子指纹是把药物的化学结构编码成二进制向量:某一位是 1 表示分子中存在某个特定子结构,0 表示不存在。类比来说,就像给一种药画了一张“化学结构素描”,骨架、侧链、官能团都在上面。常见的指纹包括 Morgan 指纹、MACCS 指纹等,它们是药物相似性计算的基础。

第二类是疾病靶点蛋白数据。疾病的发生往往与某些蛋白质的功能异常有关,这些蛋白质叫“靶点”。药物通过与靶点结合来发挥疗效,所以我们需要知道每个疾病对应哪些靶点、靶点的三维结构和序列是什么。这就像药箱整理师要知道“每种病是哪个零件(器官/蛋白)出了问题”。

第三类是药物-疾病关联数据,最著名的是 CTD(Comparative Toxicogenomics Database)。它整理了大量药物-基因-疾病之间的已知关系,相当于药箱里那本“祖传笔记本”,记录了谁治过谁、谁和谁有间接关系。把这些关联作为训练标签,模型就能学到“什么样的配对暗示存在治疗关系”。

可以说,没有数据,“老药新用”就只是凭运气翻药箱;有了药物分子指纹、靶点信息和 CTD 关联数据,我们才有了系统性的“药箱目录”,让算法可以按图索骥。

G=(Vdrug∪Vdisease∪Vtarget,  Eassoc)G = (V_{\text{drug}} \cup V_{\text{disease}} \cup V_{\text{target}}, \; E_{\text{assoc}})
这个公式构建了一个异构图:节点既包括药物也包括疾病和靶点蛋白,边表示已知的关联关系(治疗、相互作用、共表达等)。图神经网络正是在这张网上进行推理的。
  1. 节点集合$V_{\text{drug}}$ 表示所有药物节点,$V_{\text{disease}}$ 表示疾病节点,$V_{\text{target}}$ 表示靶点蛋白节点。
    V=Vdrug∪Vdisease∪VtargetV = V_{\text{drug}} \cup V_{\text{disease}} \cup V_{\text{target}}
  2. 关联边集合$E_{\text{assoc}}$ 表示节点之间的已知关联边,如“药物治疗疾病”“药物结合靶点”“靶点参与疾病通路”。
    Eassoc={(u,v)∣u,v∈V,known relation}E_{\text{assoc}} = \{(u, v) \mid u, v \in V, \text{known relation}\}
  3. 图结构存储整个图 $G$ 由节点集合和边集合构成,这是知识图谱和图神经网络共同的数据基座。
    G=(V,E)G = (V, E)

机器学习方法

有了药箱目录,接下来就要设计“找药规则”。最朴实的一类规则就是机器学习方法:从配对数据中提取特征,训练一个分类器,判断“这盒药适不适合这种病”。

第一步是特征工程构建。对于药物-疾病配对 $(d, t)$,我们需要构造一个联合特征向量。药物的分子指纹是一个向量,疾病的基因表达谱也是一个向量,将两者拼接、再补充一些交互特征(如药物靶点是否覆盖疾病关键基因),就形成了分类器的输入。这就像药箱整理师给每对“药-病”打分时,会综合看“药有没有相关成分”“病是什么机理”以及“药靶和病基因有没有交集”。

第二步是相似性评分。一种更直观的思路是:如果药物 $d_1$ 与已知能治疗疾病 $t$ 的药物 $d_2$ 高度相似,那 $d_1$ 也可能治疗 $t$。这称为“基于相似性的药物重定位”,常用 Jaccard 系数或余弦相似度计算药物间相似度。在药箱比喻里,就是“这盒新药和那盒特效药长得像亲兄弟,也许功效也类似”。

第三步是分类器预测。把特征向量输入逻辑回归、随机森林或支持向量机,输出该配对是否存在治疗关系的概率。训练时,我们使用 CTD 等数据库中的已知治疗关系作为正样本,随机采样的无关配对作为负样本。训练完成后,模型就可以对整个药-病配对矩阵打分,得分最高的配对就是重定位候选。

这类方法简单可解释,适合作为重定位任务的基线(Baseline)。药箱整理师如果时间紧,可以先按“相似药治相似病”的规则快速筛一轮,机器学习模型本质上是把这条规则量化成了千千万万个特征维度上的加权判断。

Score(d,t)=σ(w⊤[ϕdrug(d);  ϕdisease(t)]+b)\text{Score}(d, t) = \sigma\left(\mathbf{w}^{\top} [\phi_{\text{drug}}(d); \; \phi_{\text{disease}}(t)] + b\right)
这个公式是逻辑回归分类器的核心:$\phi_{\text{drug}}(d)$ 是药物的分子指纹特征,$\phi_{\text{disease}}(t)$ 是疾病的表达谱特征,$[\cdot; \cdot]$ 表示拼接,$\sigma$ 是 Sigmoid 函数,把得分映射到 0 到 1 之间的概率。
  1. 特征拼接$[\phi_{\text{drug}}(d); \phi_{\text{disease}}(t)]$ 将药物特征和疾病特征首尾相连,形成联合输入。
    x=[ϕdrug(d);ϕdisease(t)]x = [\phi_{\text{drug}}(d); \phi_{\text{disease}}(t)]
  2. 线性加权$\mathbf{w}^{\top} x + b$ 是线性层,对拼接特征进行加权求和,权重 $\mathbf{w}$ 在训练中自动学习。
    z=w⊤x+bz = \mathbf{w}^{\top} x + b
  3. 概率映射$\sigma(z) = \frac{1}{1 + e^{-z}}$ 将线性输出转为概率,大于 0.5 判定为存在治疗关系。
    Score(d,t)=11+e−(w⊤x+b)\text{Score}(d, t) = \frac{1}{1 + e^{-(\mathbf{w}^{\top} x + b)}}

图神经网络

药箱整理师如果只按“药长得像不像”找药,会漏掉很多机会。现实中,药物、靶点、疾病之间往往通过复杂的网络相互关联:A 药作用于 B 靶点,B 靶点在 C 疾病的通路中高表达,那么 A 药可能与 C 疾病存在潜在关系。这种多跳关系,正是图神经网络(GNN)的用武之地。

分子图构建:首先将每个药物分子表示成一张图——原子是节点,化学键是边。一张分子图天然携带了原子类型、键类型和空间结构信息。类似地,把药物-靶点-疾病关系网络也构造成一个大图。于是我们有了两类图:微观的分子图,和宏观的知识关系图。

节点信息传递(Message Passing):GNN 的核心操作是让每个节点不断聚合邻居节点的信息,更新自身表示。比如某个药物节点向邻居靶点节点“打听”:你被哪些疾病牵涉?经过 K 轮消息传递后,药物节点就掌握了多跳范围的信息。这就像药箱整理师托朋友打听:“这盒药认识的蛋白,还认识哪些病?”一轮打听不够,多问几轮信息越全。

图池化输出:经过多层消息传递后,整张分子图或子图会被汇聚(池化)成一个固定长度的向量,再送入分类层预测配对关系。图池化的方式包括平均池化(Mean Pooling)、注意力池化(Attention Pooling)等。

GNN 的强大之处在于它天然支持“多跳推理”:药物和疾病之间哪怕隔了三层关系,消息传递也能打通信息通路。药箱整理师的直觉再丰富,也不可能记住所有药物的社交网络;而 GNN 把这张巨大的“关系网”变成了可以高效计算的消息流。

hv(k)=Aggregate(k)({hu(k−1)∣u∈N(v)})\mathbf{h}_v^{(k)} = \text{Aggregate}^{(k)}\left(\left\{\mathbf{h}_u^{(k-1)} \mid u \in \mathcal{N}(v)\right\}\right)
这个公式描述了 GNN 第 k 层的节点更新规则:节点 $v$ 的表示由它的邻居节点 $\mathcal{N}(v)$ 在第 $k-1$ 层的表示聚合而来。聚合操作可以是求和、取平均或注意力加权。
  1. 初始表示第 0 层节点表示 $\mathbf{h}_v^{(0)}$ 通常由节点属性(原子类型、蛋白序列编码)初始化。
    hv(0)=Embed(xv)\mathbf{h}_v^{(0)} = \text{Embed}(x_v)
  2. 邻居聚合Aggregate 函数把邻居集合 $\mathcal{N}(v)$ 中所有节点表示汇成一个聚合向量。
    av(k)=∑u∈N(v)hu(k−1)\mathbf{a}_v^{(k)} = \sum_{u \in \mathcal{N}(v)} \mathbf{h}_u^{(k-1)}
  3. 更新合并将聚合向量与节点自身表示拼接,经过非线性变换得到本轮新表示。
    hv(k)=σ(W⋅[av(k);hv(k−1)])\mathbf{h}_v^{(k)} = \sigma\left(\mathbf{W} \cdot [\mathbf{a}_v^{(k)}; \mathbf{h}_v^{(k-1)}]\right)

深度学习进阶

如果 GNN 是“进阶版药箱整理师”,那么深度学习进阶方法就是“配备了大模型大脑的智能药箱系统”。这一层方法不再局限于图结构,而是把药物文本、蛋白质序列、知识图谱等多种模态统一融合,逼近人类专家综合判断的能力。

序列模型编码:药物小分子可以用 SMILES 字符串表示(一种用 ASCII 字符描述分子结构的线形符号),蛋白质靶点可以用氨基酸序列表示。这些本质上都是“序列数据”,可以用 RNN、Transformer 等序列模型编码成向量。就像药箱整理师不仅看药盒上的分子图,还读懂了说明书里的文字描述。

多模态融合:单一模态信息往往有局限,于是我们把分子指纹、分子图、SMILES 文本、蛋白质序列、疾病表型描述等不同来源的特征对齐到统一向量空间,再用注意力机制融合。这相当于把药的外形、气味、说明书、临床记录放在同一张工作台上综合判断。

知识图谱推理:构建包含药物、疾病、靶点、通路、副作用等实体及其关系的知识图谱,使用 TransE、RotatE 等知识图谱嵌入方法,把三元组(头实体、关系、尾实体)映射为向量计算,预测缺失的“药物-疾病”边。这就像药箱整理师不仅翻自己的笔记,还调用了一个全行业共享的“老药剂师百科”。

这一层进阶方法的意义在于,重定位决策不再依赖手工特征,而是让模型从海量生物医学数据中自己“悟”出规律。智能药箱系统越用越聪明,因为它见过的药、病、蛋白、文献比任何人类整理师都多几个数量级。

efused=Attention(Q=edrug,  K=eseq,  V=egraph)\mathbf{e}_{\text{fused}} = \text{Attention}\left(\mathbf{Q} = \mathbf{e}_{\text{drug}},\; \mathbf{K} = \mathbf{e}_{\text{seq}},\; \mathbf{V} = \mathbf{e}_{\text{graph}}\right)
这个公式表示多模态融合:把药物分子图表示作为 Query,把序列模型编码的文本表示作为 Key 和 Value,通过注意力机制融合两种模态的信息,得到最终嵌入向量,再预测重定位概率。
  1. 查询向量$\mathbf{Q} = \mathbf{e}_{\text{drug}}$ 是药物分子指纹或分子图编码后的向量,作为“查询条件”。
    Q=edrug\mathbf{Q} = \mathbf{e}_{\text{drug}}
  2. 键值向量$\mathbf{K} = \mathbf{e}_{\text{seq}}$ 和 $\mathbf{V} = \mathbf{e}_{\text{seq}}$ 由 SMILES 序列模型输出,决定了“搜索范围”。
    K=V=eseq\mathbf{K} = \mathbf{V} = \mathbf{e}_{\text{seq}}
  3. 注意力计算$\text{Attention}(\mathbf{Q},\mathbf{K},\mathbf{V}) = \text{softmax}(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{d}})\mathbf{V}$,按相关性加权融合信息。
    Attention(Q,K,V)=softmax(QK⊤dk)V\text{Attention}(\mathbf{Q},\mathbf{K},\mathbf{V}) = \text{softmax}\left(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{d_k}}\right)\mathbf{V}

评估与验证

药箱整理师找到候选方案后,最关键的环节是“验证这个方案真的可行吗”?模型预测只是第一步,严谨的评估与实验验证才是闭环的关键。

交叉验证方案:在数据层面,我们将已知的药物-疾病关联随机划分成 k 份,轮流取其中一份作为验证集,剩余 k-1 份训练模型,最终报告平均性能。更严谨的做法是“冷启动”(Cold Start)划分:验证集中药物或疾病不出现在训练集中,模拟真实的新药、新病重定位场景。这就像让整理师考核时不能只考“药箱里见过的药”,还要考“新入箱的药”,才有实战意义。

AUC 评估指标:重定位任务通常存在严重的正负样本不平衡(已知治疗关系很少,无关配对极多)。AUC-ROC 曲线通过设置不同分类阈值,绘制真阳性率与假阳性率的曲线,AUC 值越接近 1,说明模型排序能力越强。AUC = 0.5 相当于随机猜测,0.8 以上在药物重定位任务中已经是很不错的水平。

湿实验验证:计算预测终归是“干实验”(In Silico),最终必须进入实验室,通过细胞实验、动物实验甚至临床试验验证候选药物确实有效。这就像药箱整理师再自信,新药给病人用之前也必须经过医生开具处方和观察期。AI 在这里的角色是“精准的筛选器”,而不是“最终拍板人”。

从交叉验证到 AUC 再到湿实验,药物重定位的评估逻辑和药箱整理师的工作流程如出一辙:先小范围模拟,再量化打分,最后真人试用。只有走完这个闭环,模型产出的“老药新用”候选才有资格进入临床。

AUC=∫01TPR(FPR−1(x))dx\text{AUC} = \int_{0}^{1} \text{TPR}\left(\text{FPR}^{-1}(x)\right) dx
这个公式是 AUC 的积分定义:对假阳性率(FPR)取反函数,将真阳性率(TPR)在 0 到 1 区间上积分,得到的面积就是 AUC。它衡量模型把正样本排在负样本之前的概率。
  1. 真阳性率$\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}$,在所有真实阳性样本中,被正确预测为阳性的比例。
    TPR=TPTP+FN\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}
  2. 假阳性率$\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}$,在所有真实阴性样本中,被错误预测为阳性的比例。
    FPR=FPFP+TN\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}
  3. 积分面积$\int_{0}^{1} \text{TPR}(\text{FPR}^{-1}(x)) dx$ 表示 ROC 曲线下的面积,用数值积分或排序法近似计算。
    AUC=∫01TPR(x)  dFPR(x)\text{AUC} = \int_{0}^{1} \text{TPR}(x) \; d\text{FPR}(x)

AI 应用场景

场景一:罕见病药物重定位筛选

阶段:候选药生成与筛选

解决的问题:罕见病患者人数少,传统新药研发成本高、回报低,“无药可医”是常态。AI 重定位模型可以在已上市药物库中快速筛选出可能对特定罕见病靶点有效的候选药,把十年研发周期压缩到几个月。

具体案例:某生物技术公司使用图神经网络对数千种已上市药物与某种罕见遗传病的靶点蛋白进行配对评分,从 Top-100 候选中挑选出 5 个进行细胞实验验证,其中 2 个表现出显著活性,快速进入动物实验阶段。

场景二:药物副作用重定位(Drug Repurposing from Side Effects)

阶段:信号发现

解决的问题:临床上已经观察到某些药物的副作用,在另一种疾病场景下可能恰恰是疗效。传统方式依赖医生灵感和个案报道,覆盖面有限。AI 通过挖掘药品说明书中副作用表和疾病症状库的语义关联,自动生成“副作用到新适应症”的候选。

具体案例:某药企利用多模态融合模型,将药物副作用文本向量与疾病症状向量对齐,发现一种用于降血压的药物在副作用记录中频繁提及“皮疹改善”,进一步结合免疫通路分析,将其开发为银屑病的辅助治疗药物。

场景三:新冠疫情期间的老药新用

阶段:知识图谱推理

解决的问题:疫情暴发初期,没有特效药,新药研发来不及。研究团队需要快速从已知数据库中挖掘可能抑制病毒靶点的已有药物。传统人工文献调研效率低,AI 知识图谱推理可以在数小时内完成全库扫描。

具体案例:研究团队构建药物-病毒靶点-人体蛋白知识图谱,使用图嵌入模型预测 Remdesivir、氯喹等药物与新冠病毒主要蛋白酶的结合潜力,为临床用药建议提供计算依据。

Python 演示

python43 行
import numpy as npfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import cross_val_score, train_test_splitfrom sklearn.metrics import roc_auc_score # 模拟数据:药物-疾病配对特征 (2000 对, 50 维)# 正样本:已知治疗关系 200 条;负样本:随机配对 1800 条rng = np.random.RandomState(42)  def load_features():    X = rng.rand(2000, 50)    y = np.zeros(2000)    y[:200] = 1  # 前 200 条为正样本    # 给正样本加入一些可学习信号:让后 10 维偏向高值    X[:200, -10:] += 0.8 * rng.rand(200, 10)    return X, y  def main():    X, y = load_features()    model = RandomForestClassifier(        n_estimators=100,        max_depth=8,        random_state=42    )    # 5 折交叉验证    cv_scores = cross_val_score(        model, X, y, cv=5, scoring="roc_auc"    )    print("5-fold CV AUC: %.3f (+/- %.3f)"          % (cv_scores.mean(), cv_scores.std()))    # 训练/测试划分,输出 AUC 指标    X_train, X_test, y_train, y_test = train_test_split(        X, y, test_size=0.2, random_state=42    )    model.fit(X_train, y_train)    pred = model.predict_proba(X_test)[:, 1]    print("Test AUC: %.3f" % roc_auc_score(y_test, pred))  if __name__ == "__main__":    main()
目的:演示药物重定位任务中最经典的“特征 + 分类器”流程——用随机森林对药物-疾病配对特征进行二分类,并用交叉验证和 AUC 评估模型性能。
  1. X = rng.rand(2000, 50)模拟 2000 条药物-疾病配对,每对 50 维特征(如分子指纹片段、靶点表达量)。
  2. y[:200] = 1模拟已知治疗关系的正样本只有 200 条,符合真实场景中正样本稀少的特点。
  3. X[:200, -10:] += 0.8 * rng.rand(200, 10)人为给正样本注入区分信号,让模型有规律可学,模拟真实可预测信息。
  4. cross_val_score(model, X, y, cv=5, scoring="roc_auc")5 折交叉验证,评估模型对不同数据子集的稳定表现。
  5. model.predict_proba(X_test)[:, 1]输出预测概率,再交给 roc_auc_score 计算 AUC,衡量排序能力。

常见误区

误区我理解的药物重定位就是“这个药没货了,找个便宜的同类药顶上”,比如原研药买不起就用仿制药。

正解药物重定位的核心是更换适应症,而不是“同药换品牌”。仿制药是同一活性成分的等效替代,而重定位是把一种原本治疗 A 病的药,通过机理研究发现它也能治疗 B 病——相当于“降压药被挖掘出治疗秃头的新功能”,是全新的治疗场景,不是简单的等价替换。

为何常见:因为“重定位”听起来像“重新调用”,人们容易把它和药物替代、仿制这些更常见的概念混淆,忽略了它“新适应症”的本质。

误区我觉得如果两种药分子结构很像,那它们能治疗的病也一定很像,直接按结构相似度排名就行。

正解分子结构相似是重要线索,但远非充分条件。药物的疗效取决于药代动力学(吸收、分布、代谢、排泄)、靶点亲和力、脱靶效应等复杂因素。两种结构相似的药物可能在体内分布天差地别,而且疾病靶点可能在多个生物通路中,单靠结构相似度预测容易产生大量假阳性。这也是为什么需要引入靶点网络、文本语义、知识图谱等多模态证据。

为何常见:人脑天然喜欢“长得像就像效”的启发式,且传统计算机辅助药物设计中相似性确实是主流方法,容易过度简化。

误区我训练了一个模型,验证集 AUC 达到 0.95,这说明我推荐的药基本上都能成。

正解AUC 衡量的是排序能力,不是实际阳性率。在极度不平衡的数据中(比如 1:1000 的正负比),AUC = 0.95 对应的候选列表里仍可能有大量假阳性。此外,计算预测和湿实验之间天然存在鸿沟——模型学到的可能是数据集的偏置(如某些药物被文献报道过多),而非真实的生物学信号。AUC 高只是“筛查器灵敏度好”,不意味着“这条药-病关系真实存在”。

为何常见:因为大多数机器学习课程用平衡数据集教 AUC,学生容易忽视不平衡样本场景下 AUC 的乐观偏差。

误区我已经用分子指纹算相似度了,为什么还要再做知识图谱?是不是多此一举?

正解两种方法解决的是不同层面的问题。分子指纹相似度只考虑药物内在化学结构;知识图谱建模的是药物、靶点、疾病、通路之间的外部关系网络。前者回答“这药像不像已知药”,后者回答“这药在生物网络中能不能触及这个病”。实际工程中它们常常互补融合:先用相似性快速召回候选,再用图模型精排序。

为何常见:初学者习惯把算法当作“选一个最好的”,忽略了 AI+医疗中多模态信息融合才是主流范式。

误区反正 AI 这么强,我把药物和疾病数据丢进去,模型自动就能告诉你哪些药能治哪些病,医学知识不重要。

正解药物重定位的数据标签(CTD 中的治疗关系)本身来自生物医学实验,特征设计(分子指纹、靶点通路)依赖药理学知识。算法只能拟合数据中的模式,而数据采集、清洗、标注、验证每个环节都需要医学专长。此外,临床验证(湿实验、伦理审批)更是离不开医学专家。AI 是放大镜,不是眼睛。

为何常见:AI 在某些领域(如图像识别)确实能端到端学习,让外行产生了“数据够多算法万能”的直觉,但生物医学数据稀疏、噪声大、标注昂贵,领域知识不可缺席。

面试题

Q1. 药物重定位的核心优势是什么?

单选题 · easy

  • A.完全不需要做临床实验
  • B.利用已上市药物的安全性数据,降低研发成本← 正确答案
  • C.只针对罕见病设计新分子
  • D.用仿制药替代原研药

答案:B。药物重定位的关键是药物已通过安全性检验,可以跳过大量早期安全性实验,因此显著降低成本和时间。A 说完全不做临床实验是错的,仍需疗效验证;C 曲解了范围;D 混淆了仿制药概念。

Q2. 分子指纹的主要用途是什么?

单选题 · easy

  • A.存储药物的价格信息
  • B.用二进制向量编码药物化学结构,用于相似性计算← 正确答案
  • C.记录病人的用药历史
  • D.表示疾病基因表达谱

答案:B。分子指纹把分子结构编码成向量(如 Morgan、MACCS),方便计算机比较药物间化学相似性。A、C、D 都与化学结构无关,属于干扰项。

Q3. CTD 数据库在药物重定位中扮演什么角色?

单选题 · easy

  • A.提供药物-基因-疾病的已知关联关系← 正确答案
  • B.存储患者电子病历
  • C.发布新药广告
  • D.计算分子量

答案:A。CTD(Comparative Toxicogenomics Database)整理药物-基因-疾病之间的已知关系,是重定位模型的重要标签来源。其余选项与 CTD 的实际功能无关。

Q4. 在药物重定位中使用“冷启动”划分(Cold Start)是为了模拟什么场景?

单选题 · mid

  • A.训练集中完全不存在验证集中的药物或疾病← 正确答案
  • B.随机打乱数据顺序
  • C.增加模型的神经网络层数
  • D.用更大的学习率训练

答案:A。冷启动划分将验证集中的药物/疾病从训练集中隔离,模拟真实世界中对全新药物或疾病进行预测的场景。B 是通用数据预处理;C、D 是训练细节,与验证策略无关。

Q5. AUC = 0.5 在药物重定位评估中代表什么含义?

单选题 · mid

  • A.模型完美预测所有配对
  • B.模型的排序能力等于随机猜测← 正确答案
  • C.正样本数等于负样本数
  • D.模型训练失败,需要重新初始化

答案:B。AUC = 0.5 意味着 ROC 曲线落在对角线上,模型把正样本排在负样本之前的概率等于 0.5,与随机猜测相当。A 应为 AUC 接近 1;C 是数据分布描述;D 不是必然结论。

Q6. 图神经网络中的“消息传递”(Message Passing)机制指的是什么?

单选题 · mid

  • A.节点之间互相发送邮件
  • B.节点通过聚合邻居信息更新自身表示← 正确答案
  • C.将整张图压缩成一个标量
  • D.将分子结构转为 SMILES 字符串

答案:B。消息传递是 GNN 的核心操作:每个节点从邻居收集信息并聚合,更新自身向量表示,经过多层传递后节点融入多跳信息。C 是图池化;D 是序列编码;A 是字面误解。

Q7. 在多模态融合中,把某药物分子图表示作为 Query、序列编码表示作为 Key 和 Value 的注意力机制,其目的是什么?

单选题 · hard

  • A.减少模型的参数量
  • B.按序列特征的相关性,从图表示中检索增强信息← 正确答案
  • C.让模型不使用分子指纹
  • D.将 AUC 提升至 1.0

答案:B。Query 是药物图表示,Key/Value 是序列编码表示时,注意力权重衡量“序列编码中哪些部分与药物图特征最相关”,进而加权融合。A 不相关;C 错误;D 是过度承诺。

Q8. 哪些步骤属于药物重定位的评估与验证环节?(选出两项)

多选题 · mid

  • A.交叉验证划分训练/验证集← 正确答案
  • B.用分子指纹生成 SMILES
  • C.计算 AUC 评估排序能力← 正确答案
  • D.将预测结果直接写入药品说明书

答案:AC。交叉验证和 AUC 计算是典型的模型评估环节。B 是数据表示;D 严重违背临床验证流程——预测必须经过细胞、动物和临床试验才能进入说明书。

Q9. 与传统新药研发相比,药物重定位的优势包括哪些?(选出两项)

多选题 · hard

  • A.药物安全性已有临床数据支撑← 正确答案
  • B.能完全跳过疗效验证
  • C.研发周期显著缩短← 正确答案
  • D.不需要任何生物信息数据

答案:AC。已上市药物已通过安全性评估,重定位可以省去大量早期毒性筛选,从而缩短周期。B 错误,疗效仍需在新适应症中验证;D 错误,重定位恰恰依赖海量生物信息数据支撑。

Q10. 导致基因图谱模型预测出现假阳性的可能原因有哪些?(选出两项)

多选题 · hard

  • A.数据集中正负样本比例严重失衡← 正确答案
  • B.模型结构太简单,无法拟合训练集
  • C.训练数据中文献报道偏置导致药物被过度暴露← 正确答案
  • D.使用了多模态融合机制

答案:AC。样本不平衡会让模型倾向于预测多数类,导致大量假阳性;文献报道偏置使热门药物被过度表征,产生虚假强信号。B 通常导致欠拟合而非假阳性;D 是正常技术手段,不直接带来假阳性。