当前位置: 首页 > news >正文

基于Transformer与知识图谱的药物重定位:2型糖尿病老药新用智能发现

1. 项目概述:当Transformer遇见知识图谱,为2型糖尿病寻找“旧药新用”的智能路径

在生物医学研究的浩瀚海洋里,药物研发一直是一条漫长、昂贵且充满不确定性的道路。平均一款新药从实验室走到药房,需要超过10年时间和数十亿美元的投入,而最终的成功率却低得令人却步。面对像2型糖尿病这样影响全球数亿患者的慢性疾病,传统研发模式显得力不从心。正是在这样的背景下,“药物重定位”或“老药新用”的策略,如同一盏明灯,为我们提供了一条捷径——在已获批用于其他疾病的药物中,寻找其对2型糖尿病的新疗效。

然而,如何从海量的医学文献、基因数据、临床试验报告中,精准地发现这些潜在的“旧药新用”线索,是一个巨大的挑战。近年来,知识图谱与深度学习,特别是Transformer架构的结合,为解决这一问题开辟了全新的战场。知识图谱能将药物、疾病、基因、蛋白质等实体及其复杂关系结构化,形成一个巨大的语义网络。而Transformer模型,凭借其强大的注意力机制,能够同时理解图谱的结构信息和实体背后的文本语义信息。

我最近深入研究了将基于Transformer的图表示学习应用于2型糖尿病药物重定位的工作。这不仅仅是一个理论模型,更是一套从数据清洗、模型构建到结果验证的完整工程实践。简单来说,我们的目标是:构建一个智能系统,它能够“阅读”数百万篇医学文献,理解其中药物与疾病的复杂关系网络,并像一位经验丰富的药理学家一样,推理出哪些已有药物可能对治疗2型糖尿病有效。本文将为你拆解这个项目的完整实现逻辑、核心细节、实操中的坑与技巧,希望能为从事AI+生物医学交叉领域的研究者和工程师提供一份扎实的参考。

2. 核心思路拆解:为什么是“文本+结构”的双引擎驱动?

在深入代码之前,我们必须先理解这个项目的核心设计哲学。传统的知识图谱链接预测模型,大致可以分为两类:基于结构的方法和基于文本的方法。我们的创新点在于,我们拒绝“二选一”,而是坚信“两者兼得”才能带来质的飞跃。

2.1 结构信息的价值:邻居告诉你真相

图结构本身蕴含着丰富的拓扑信息。例如,在知识图谱中,如果药物A与药物B都“治疗”疾病X,而药物B又与药物C“相互作用”,那么即使没有直接证据,我们也可以推测药物A与C可能存在某种关联。这种基于网络结构的推理,是图神经网络(GNN)的强项。它通过聚合节点邻居的信息来更新节点表示,让每个实体的向量编码了其局部网络环境的特征。在我们的项目中,我们采用了HittER模型作为结构编码器。HittER的精妙之处在于其分层Transformer设计:第一层编码头实体和关系,第二层则将该编码与邻居节点的信息进行融合。这相当于在理解一个实体时,不仅看它自己,还参考了它的“社交圈子”。

注意:在处理生物医学知识图谱时,邻居信息的质量至关重要。图谱中常常存在大量高连接度的“中心节点”(如一些基础生物过程概念),它们可能与几乎所有实体都相连,但信息价值很低。盲目聚合所有邻居信息会引入大量噪声。因此,在数据预处理阶段,我们使用了基于度的中心性过滤和似然比检验,来剔除这些不具信息量的链接,这是保证结构信息纯净度的关键一步。

2.2 文本信息的深度:名字背后的故事

然而,仅靠结构信息是不够的。“Metformin”(二甲双胍)和“Aspirin”(阿司匹林)在图谱中可能拥有相似的连接模式,但任何一位医生都知道它们是完全不同的药物。这时,文本语义信息就起到了决定性作用。实体的名称和描述(例如,从UMLS Metathesaurus中获取的权威定义)包含了其生物化学性质、药理机制等关键语义。我们采用StAR模型作为文本编码器,它基于在生物医学语料(如PubMed摘要)上预训练过的BioBERT模型。StAR使用孪生网络结构,分别对“头实体+关系”和“尾实体”进行编码,再通过对比学习目标拉近正确三元组的表示距离。

文本信息的威力在于其零样本推理能力。即使某个新药物在图谱中连接很少(冷启动问题),只要它的描述文本中包含了“胰岛素敏感性”、“葡萄糖摄取”等关键词,模型也能根据语义相似性,将其与已知的糖尿病治疗药物关联起来。

2.3 融合策略:1+1>2的工程实现

那么,如何将这两种截然不同的信息源融合起来?我们不是简单地将两个模型输出的向量相加。我们的架构以HittER作为主干网络,负责学习结构上下文。然后,我们将StAR文本编码器生成的语义向量,与HittER结构编码器输出的全局表示向量进行拼接(Concatenation),再通过全连接层进行融合和降维。

这个设计背后有深刻的考量:结构信息提供了实体在图谱中的“位置感”,而文本信息提供了实体的“内涵描述”。拼接操作保留了两种信息的独立性,让后续的全连接层去学习如何根据当前预测任务,动态地权衡两者的重要性。例如,在预测两个已知有大量文献共现的实体关系时,文本信息可能权重更高;而在预测连接稀疏但拓扑结构相似的实体关系时,结构信息可能发挥更大作用。

3. 数据工程实战:从千万级原始数据到高质量知识图谱

模型再强大,垃圾数据进去,垃圾结果出来。在生物医学领域,数据工程的复杂度往往不亚于模型设计。我们的数据源是SemMedDB,一个从超过2900万篇PubMed文献中通过自然语言处理工具SemRep自动抽取得到的超大规模生物医学知识图谱。

3.1 数据清洗与过滤:去芜存菁的艺术

原始的SemMedDB包含超过1.1亿个三元组(头实体,关系,尾实体),但其中包含大量噪声和不相关实体。我们的预处理流程如下:

  1. 实体类型过滤:首先,我们移除了与药物重定位任务无关的实体类型,例如“活动与行为”、“概念与思想”、“物体”、“职业”等。我们只保留与疾病、药物、基因、解剖结构等核心生物医学概念相关的实体。
  2. 关系类型筛选:我们从SemMedDB的语义网络中精选了18种与药物-疾病相互作用最相关的关系,如TREATS(治疗)、INTERACTS_WITH(相互作用)、CAUSES(导致)、PREVENTS(预防)等。
  3. 统计过滤:这是提升数据质量的核心步骤。我们使用了三种指标的综合评分来过滤非信息性链接:
    • 出入度中心性:过滤掉那些与过多实体相连的“超级节点”,它们通常是过于宽泛的概念。
    • 对数似然比(G2分数):衡量一个三元组(头实体,关系,尾实体)共同出现的显著性。分数越低,说明该关系越特异、越不可能随机出现,信息价值越高。 我们将这三个指标归一化后求和,保留分数较低(即更具体、更显著)的三元组。经过这一系列清洗,我们从数千万三元组中最终得到了约8.1万个高质量的三元组,涉及2.6万个实体。

3.2 实体描述增强:为每个概念注入“灵魂”

为了让文本编码器发挥最大效能,我们为图谱中的实体补充了描述文本。我们通过UMLS Metathesaurus的API,抓取了其中17,421个实体的权威定义。对于没有描述文本的实体,则仅使用其名称。这一步看似简单,却至关重要。例如,实体“LY294002”这个名字本身没有明确含义,但它的描述“一种磷脂酰肌醇3-激酶(PI3K)抑制剂”则直接揭示了其潜在的药理机制,与糖尿病相关的胰岛素信号通路紧密相连,极大地帮助了模型进行语义理解。

3.3 数据集划分与负采样:模拟真实发现场景

我们采用了按时间划分数据集的策略,以模拟真实的药物发现场景。使用2020年之前的数据作为训练集和验证集,2020年及之后的数据作为测试集。这意味着,模型只能基于“历史”知识来预测“未来”可能被发现的关系,这极大地增强了评估结果的现实意义。

知识图谱中只有正例(存在的关系),训练时需要负例。我们采用经典的“替换法”进行负采样:对于一个正三元组(h, r, t),随机替换头实体h或尾实体t,生成一个不存在于图谱中的负三元组(h‘, r, t)(h, r, t‘)。在评估时,为了避免简单负例,我们会过滤掉那些虽然不在测试集,但存在于训练集或验证集的“假负例”。

4. 模型架构深度解析与实现细节

我们的核心模型是一个双编码器融合架构。下面,我们拆解每一个模块的实现要点。

4.1 文本编码器(StAR)的微调实战

我们使用Hugging Face提供的biobert-base-cased-v1.1作为预训练基础模型。微调过程的关键在于构造输入和设计损失函数。

输入构造:对于三元组(Metformin, TREATS, Type 2 Diabetes)

  • 编码器1的输入:[CLS] Metformin [SEP] TREATS [SEP]
  • 编码器2的输入:[CLS] Type 2 Diabetes [SEP]如果实体有描述,则将其拼接在实体名之后,如Metformin : A biguanide antihyperglycemic agent ...

双目标损失函数:这是StAR设计的精髓。

  1. 分类目标:将两个编码器输出的[CLS]向量拼接后,通过一个多层感知机(MLP)和Sigmoid函数,计算该三元组为“真”的概率,使用二元交叉熵损失。这教会模型判断一个陈述是否合理。
  2. 对比目标:计算两个[CLS]向量之间的欧几里得距离。正例的距离应尽可能小,负例的距离应尽可能大,使用间隔损失(Hinge Loss)。这直接优化了表示空间的结构,让相似的实体对更靠近。 最终损失是两者的加权和。在我们的实验中,两个损失贡献相当,同时使用能获得更鲁棒的表示。

4.2 结构编码器(HittER)的邻居采样策略

HittER需要为每个头实体采样其邻居节点作为上下文。这里有一个重要的实操技巧:邻居的数量并非越多越好。

  • 设置邻居数(Ne):我们通过实验发现,将邻居数设置在10-20之间通常能取得最佳效果。太少则上下文信息不足;太多则会引入噪声,且显著增加计算开销。对于连接数少于Ne的实体,我们进行重复采样;对于连接数多于Ne的实体,则随机采样。
  • 关系的重要性:在采样时,我们不仅采样邻居实体,也采样连接的关系。HittER的输入是[CLS], 源实体, 关系, 邻居1实体, 关系1, 邻居2实体, 关系2, ...的序列。这意味着模型能同时感知到“与谁相连”以及“通过何种关系相连”。

4.3 融合模块与训练技巧

融合层并不复杂,但训练需要技巧。

# 伪代码示意融合过程 structural_rep = hitter_encoder(source_entity, relation, neighbors) # 输出 [GCLS] 向量 textual_rep = star_encoder(source_entity_text, relation_text) # 输出融合后的语义向量 combined_rep = torch.cat([structural_rep, textual_rep], dim=-1) combined_rep = self.fusion_fc1(combined_rep) combined_rep = self.activation(combined_rep) combined_rep = self.fusion_fc2(combined_rep) # 最终用于预测的融合表示

掩码实体预测(MEP):这是防止模型过度依赖高质量输入而忽略上下文邻居信息的关键正则化技术。在训练时,我们随机将输入序列中的源实体替换为[MASK]标记,然后要求模型根据上下文(邻居和关系)来预测被掩码的实体ID。这个辅助任务强制模型必须认真“阅读”上下文信息,从而提升了融合表示的质量。

训练参数设置

  • 学习率:文本编码器(BioBERT)部分使用较小的学习率(如1e-5),因为预训练权重已经很好了,只需微调。结构编码器和融合层使用较大的学习率(如1e-3)。
  • 批次大小:在GPU内存允许范围内尽可能调大。我们使用文本批次40,结构批次128。
  • 优化器:AdamW优化器,并配合线性热身(Linear Warmup)和余弦衰减(Cosine Decay)的学习率调度策略,这对Transformer模型的稳定训练非常有效。

5. 实验评估、结果分析与药物发现

模型训练完成后,我们使用链接预测任务的标准评估协议进行测试:对于测试集中的每个三元组,分别掩码头实体或尾实体,然后用所有实体进行替换得到候选集,计算正确实体的排名。

5.1 评估指标解读:为什么MRR比准确率更重要?

在药物重定位场景下,我们关心的是模型能否将真正的候选药物排在列表的最前面。因此,排序指标比单纯的分类准确率更有意义。

  • 平均排名(MR):正确实体排名的平均值。越低越好。但它对尾部排名(如排名1000开外)的糟糕预测非常敏感。
  • 平均倒数排名(MRR):正确实体排名倒数的平均值。这是我们的核心指标。它更加关注头部排名,如果正确药物排在第1、2、3位,MRR值会很高(接近1),如果排到100名开外,贡献就微乎其微了。这完美契合了药物筛选的需求——专家只会审查排名最靠前的几十个候选药物。
  • 命中率@K(Hits@K):正确实体排名在前K位的比例。我们关注Hits@1, @3, @10, @100。Hits@1代表“一击即中”的能力,Hits@100则衡量模型是否能将正确药物筛选进一个较大的候选池。

5.2 结果对比与消融实验

我们的模型(文本+结构)与基线模型的对比结果清晰地证明了融合的有效性:

模型MRRHits@1Hits@3Hits@10说明
StAR (仅文本)23.8414.1229.8740.05依赖语义,但缺乏图谱结构
HittER (仅结构)25.6716.0131.4542.33依赖拓扑,但缺乏语义深度
我们的模型 (融合)27.1918.1833.2343.17文本与结构信息互补
+ 实体描述27.1918.1833.2343.17相比无描述版本,StAR部分MRR提升显著

关键发现

  1. 融合优势:我们的模型在所有指标上均优于单表示模型,尤其在MRR和Hits@1上提升明显。这证实了文本与结构信息是互补的,而非冗余的。
  2. 描述的价值:在消融实验中,为文本编码器加入实体描述后,StAR模型的MRR从11.69提升至13.32。这说明丰富的文本描述为模型提供了关键的背景知识,使其语义理解能力更强。
  3. 治疗关系预测:在专门针对TREATS关系的预测任务中,我们的模型表现更为突出。在预测“何种药物治疗某种疾病”(头实体预测)的任务上,MRR达到了21.81,比最好的基线模型(HittER的12.31)提升了近77%。Hits@1更是从5.33飙升到12.08,增长了126.8%。这意味着,在我们的模型推荐的排名第一的药物中,是真正治疗药物的概率大大增加,这对于缩小实验验证范围具有巨大价值。

5.3 潜在药物发现与生物学解释

模型最终输出了一个针对“(?, TREATS, Type 2 Diabetes)”的候选药物排名列表。我们过滤掉非药物实体和已知的糖尿病治疗药物后,得到了排名靠前的潜在重定位药物。以下是其中几个有代表性的发现及其生物学合理性分析:

  1. 三萜类化合物(Triterpenes):模型排名很高。文献支持:三萜类具有抑制α-葡萄糖苷酶和α-淀粉酶的活性,可延缓肠道碳水化合物吸收,从而降低餐后血糖,这正是糖尿病管理的一种策略。模型很可能是从图谱中学习到“三萜类化合物 - INTERACTS_WITH -> α-葡萄糖苷酶”以及“阿卡波糖(一种糖尿病药) - INHIBITS -> α-葡萄糖苷酶”等路径,从而推理出潜在的治疗关联。

  2. 小柴胡汤(Sho-saiko-to):一种中药复方。模型发现它与已知的糖尿病药物甲苯磺丁脲(Tolbutamide)存在INTERACTS_WITHCOEXISTS_WITH等多种强关联。已有动物实验表明,小柴胡汤能降低糖尿病大鼠的血糖和肾脏胆固醇浓度。模型通过捕捉这种密集的间接关联,将其排名推高。

  3. LY294002:一种PI3K抑制剂。PI3K通路在胰岛素信号传导和葡萄糖代谢中起核心作用。图谱中,LY294002与格列本脲(Glyburide)、二甲双胍(Metformin)等多种糖尿病药物存在交互关系。模型捕捉到了这种“与多种已知疗法关联”的模式,从而判断其具有治疗潜力。

实操心得:模型给出的候选列表是一个强大的“初筛工具”,但它不能替代领域专家的判断。列表中的每一个候选药物,都必须回到生物学文献和药理数据库中进行详细的机制验证和安全性评估。我们的模型价值在于,它将药物化学家的审查范围从数万个化合物,缩小到了一个由几十个高潜力候选药物组成的短名单,极大地提升了研发效率。

6. 常见问题、挑战与未来方向

在实际操作中,我们遇到了不少挑战,也总结出一些经验。

6.1 数据质量与噪声问题

  • 问题:SemMedDB是通过NLP工具自动抽取的,存在一定的错误率(精度约0.69)。图谱中包含错误或模糊的关系。
  • 应对:严格的统计过滤(G2分数)和基于领域知识的实体/关系过滤至关重要。此外,可以考虑引入人工校验的高质量子图谱进行预训练或联合训练。

6.2 模型的可解释性黑箱

  • 问题:深度学习模型是“黑箱”,我们很难理解模型为何将某个药物排在前面。这在严谨的医学研究中是一个障碍。
  • 应对:未来工作可以集成可解释性AI技术。例如,使用注意力权重分析,可视化在做出预测时,模型更关注文本描述中的哪些词,或者图谱中的哪些邻居路径。这能为药理学家提供决策依据。

6.3 计算资源与效率

  • 问题:Transformer模型,尤其是融合模型,参数量大,训练和推理成本高。在处理全实体集进行排名时,计算开销巨大。
  • 应对:可以采用负采样策略进行评估,而非使用全部实体。在工业级应用中,需要设计高效的向量检索系统,例如使用FAISS等近似最近邻搜索库,来快速从数百万实体中检索出Top-K候选。

6.4 迈向更广泛的应用

本次研究以2型糖尿病为案例,但整套框架是通用的。它可以无缝迁移到其他疾病的药物重定位,如阿尔茨海默症、癌症等,只需构建相应的疾病中心知识图谱。更进一步,这套“文本+结构”的融合学习范式,可以应用于更广泛的生物医学发现任务,如药物-副作用预测、蛋白质-蛋白质相互作用预测、疾病基因关联发现等。

我个人在完成这个项目后最深的体会是:人工智能在生物医学领域的落地,永远是一个“双向奔赴”的过程。一方面,我们需要设计更精巧、更强大的模型来理解和挖掘复杂数据;另一方面,我们必须时刻保持对领域知识的敬畏,将数据清洗、结果解释等每一个环节都扎扎实实地做好,让模型真正成为科学家的“智能助手”,而非一个难以理解的“预言黑盒”。这条路很长,但看到模型推荐出的药物背后确有生物学逻辑支撑时,那种成就感是无可比拟的。如果你也正在尝试将AI应用于类似领域,我的建议是:从一个小而具体的临床问题出发,深入理解该领域的数据特点和专家需求,然后运用合适的技术去解决它,在迭代中不断完善你的数据管道和模型,这才是通往成功最踏实的路径。

http://www.zskr.cn/news/1397394.html

相关文章:

  • TwinGAN:双阶段GAN实现中国山水画风格迁移的技术解析与实践
  • 大模型API定价全解析:从百倍价差到成本优化实战
  • 终极指南:如何用EyesGuard智能用眼保护工具守护您的视力健康
  • RAID5系统Ghost备份原理与一致性风险解析
  • LoRA微调实战指南:企业级AI模型精准校准方法
  • 压缩感知理论导向的核废物桶TGS图像重建技术【附代码】
  • 天津地区高层住宅自然通风与建筑节能设计参数优化【附代码】
  • Linux权限管理避坑指南:为什么你的新用户加不进sudo组?详解wheel组与/etc/sudoers.d
  • 多Agent协同场景下的Harness工程架构设计与核心挑战破解
  • 再见,我的华为5年
  • CentOS 7下用yum一键安装iperf3,再也不用担心网络测速工具了
  • MHmarkets:平台工具、风控与体验体系观察
  • 基于Bi-GRU与嵌入技术的海洋叶绿素垂直剖面深度学习预测模型
  • AI Agent Harness Engineering 创业融资攻略:如何向投资人展示 Agent 技术的商业价值
  • AI Agent商业化失败案例复盘:10个致命错误与教训
  • 2026年开源商城和 SaaS 怎么选?为什么越来越多企业开始重视“自主可控”?——真正决定企业长期上限的,从来不是“前期上线速度”,而是“未来还能不能持续演进”
  • 集成学习在低资源语言情感分析中的应用:以波斯语社交媒体评论为例
  • 融合动态新闻情感与TEGRU模型的股票价格预测实践
  • 在Mac本地部署离线AI助手:Llama 2模型与llama.cpp实战指南
  • 五分钟快速搭建本地AI助手:基于OpenClaw的实践指南
  • 2026搬家清理贵重物品:广州广州老酒回收/广州广州酒水批发/广州搬家处理清理各类有价值物品/广州海参回收/广州燕窝回收/选择指南 - 优质品牌商家
  • 构建多图记忆系统VEKTOR:让AI智能体告别金鱼综合症
  • git pull 深度解析:fetch-merge 机制与协作冲突化解
  • C#调用Windows API捕获窗口文本的实战指南
  • 大语言模型结构化输出:告别提示词JSON,拥抱工具层约束
  • ggplot2可视化思维:从散点图失真到多维分析闭环
  • 基于整数线性规划的CGRA调度与绑定联合优化方法
  • 告别手动编译!用vcpkg一键为你的QT5.14.2项目安装MQTT库
  • Vivado 2018.3 报错 ‘IO Clock Placer failed’ 别慌,八成是差分时钟引脚分配踩了坑
  • AI 应用开发商如何利用 Taotoken 构建稳健的多模型后备方案