DDI-GPT可解释性核心揭秘:Interpreter信息损失算法与token重要性可视化原理

📅 2026/8/27 15:43:04
DDI-GPT可解释性核心揭秘:Interpreter信息损失算法与token重要性可视化原理
DDI-GPT可解释性核心揭秘Interpreter信息损失算法与token重要性可视化原理【免费下载链接】ddigpt项目地址: https://gitcode.com/gh_mirrors/dd/ddigptDDI-GPT 是一个基于大语言模型GPT-2 知识图谱KG的药物-药物相互作用DDI预测框架。它不仅能给出会相互作用 / 不会相互作用的判断还能通过内置的 Interpreter 模块用信息损失information loss算法量化每个 token 对预测的贡献并以token 重要性热力图直观呈现。本文面向新手带你无需机器学习背景也能看懂地拆解这套可解释性方案。什么是 DDI-GPT预测与解释二合一 传统药物相互作用预测模型是黑箱只给结论不给理由。DDI-GPT 的解法是把高质量生物医学知识图谱特征翻译成语言模型能读懂的输入先预测再用可解释性算法回答模型到底在看哪些词。整体流程分四步① 把药物-蛋白/副作用关系渲染成关系网络② 提供两种药物在 PPI 网络间的最短路径③ 用 KG 构造输入文本进行预测④ 提供带token 重要性分数的可解释 AI 工具。![DDI-GPT知识图谱药物相互作用预测与token重要性解释系统总览](https://raw.gitcode.com/gh_mirrors/dd/ddigpt/raw/d29c6cff51f630a12a96f8a65d4abeb13ca5168f/web_figs/Artboard 1.png?utm_sourcegitcode_repo_files)项目功能入口一览网络可视化页面pages/1_1️⃣_Visualize Interactions.py预测与可解释性页面pages/2_2️⃣_Submit a Job.py信息损失算法核心Interpreter.py本地运行入口Introduction.py执行streamlit run Introduction.py启动输入构造把两个 DrugBank ID 变成一句知识句 在 Submit a Job 页面你只需输入两个 DrugBank ID如DB00343、DB01268DDI-GPT 会先查dict/目录下的四个知识字典把药物的生物医学特征拼成一句结构化文本uqcomb_dpwy_dict.p药物 → 信号通路pathwayuqcomb_dg_tg_dict.p药物 → 靶点基因targetuqcomb_dg_trans_dict.p药物 → 转运体transporteruqcomb_dg_enzy_dict.p药物 → 酶enzyme拼接后形如Drug_is DB00343 pathway_is KEGG:map04976 ... target_is HGNC:1390 ... Drug_is DB01268 ...送入 GPT-2 序列分类头做二分类。这句话正是后续解释的前提句中每个词的重要性都可以被单独量化。![DDI-GPT药物相互作用预测界面与知识图谱构造的输入句示例](https://raw.gitcode.com/gh_mirrors/dd/ddigpt/raw/d29c6cff51f630a12a96f8a65d4abeb13ca5168f/web_figs/Screenshot 2024-12-05 155744.jpg?utm_sourcegitcode_repo_files)Interpreter 信息损失算法给每个 token 算一个扰动容忍度 可解释性核心就在Interpreter.py中它的思想非常直观——对每个词回答一个问题把这个词的词嵌入加多大尺度的噪声模型的预测都不会变损失函数直觉两个相反方向的力算法为每个 token 学习一个独立的噪声强度 σ损失函数由两个力拔河决定L(σ) ‖Φ(xε) − Φ(x)‖² / reg² − rate·log(σ)第一项保真力嵌入 x 加了噪声 ε 后模型输出 Φ 不能变太多 → 想把 σ压低第二项熵力让 σ 尽量大 → 想把 σ抬高。两边平衡后得到的 σ就是该词在不影响预测的前提下能承受的最大扰动。σ 越大说明模型越不依赖这个词σ 越小说明预测对它越敏感——它就是决策的关键。重参数化技巧让噪声变得可学习高斯噪声本身无法直接优化代码采用重参数化技巧ε scale × ratio × noise。其中 noise 是标准高斯随机数ratio 是被 sigmoid 约束在 (0,1) 的可学习参数于是 σ ratio × scale。关键超参数见Interpreter.py注释scaleσ 的上限演示中取词嵌入权重标准差的 10 倍rate平衡输出稳定与信息损失的比例越大整体信息损失越大calculate_regularization()用采样输入估计输出方差做归一化保证不同维度上的差异可公平比较。网页演示里为响应速度只跑了 5 次迭代interpreter.optimize(iteration5)在研究场景可放大到数千次迭代获得更精确的 σ。官方架构图中 e. Model Explanation 面板就是该模块的产物——把重要基因/token 的贡献画成柱状图。token 重要性可视化如何读懂热力图 拿到 token 级 σ 后页面代码pages/2_2️⃣_Submit a Job.py做两步处理token → 词聚合GPT-2 分词器常把一个词切成多个子 token代码把同一词的所有子 token 的 σ求和得到词级重要性热力图渲染用 matplotlib 的GnBu_r色阶画一维热力图每个格子对应输入句中的一个词。读图口诀颜色越深σ 越小该词对预测越重要。浅色则说明这个词容忍较大扰动贡献较弱。![DDI-GPT token重要性信息损失热力图可视化示例](https://raw.gitcode.com/gh_mirrors/dd/ddigpt/raw/d29c6cff51f630a12a96f8a65d4abeb13ca5168f/web_figs/Screenshot 2024-12-05 160925.jpg?utm_sourcegitcode_repo_files)在这个实例中两个药物 IDDB00343、DB01268和若干靶点基因颜色最深——说明模型主要依据是哪两种药及其靶点做判断而部分通路词颜色偏浅。这正是可解释性的价值不只给结论还告诉你为什么。快速上手体验 DDI-GPT 可解释性的最快路径 ⚡获取代码git clone https://gitcode.com/gh_mirrors/dd/ddigpt安装依赖pip install -r requirements.txt启动 Web 服务streamlit run Introduction.py在 Submit a Job 页输入两个 DrugBank ID → 点 Predict → 点Measure token importance即可得到热力图。搭配 Visualize Interactions 页面可以按药物名浏览药物-蛋白-副作用网络、查看两药间的最短路径用来交叉验证热力图中被判为重要的基因是否真有生物学意义![DDI-GPT知识图谱药物相互作用网络与基因路径可视化示例](https://raw.gitcode.com/gh_mirrors/dd/ddigpt/raw/d29c6cff51f630a12a96f8a65d4abeb13ca5168f/web_figs/Screenshot 2024-12-05 154257.png?utm_sourcegitcode_repo_files)总结模块文件路径一句话说明信息损失算法Interpreter.py为每个 token 学习最大扰动容忍度 σtoken 重要性可视化pages/2_2️⃣_Submit a Job.py子 token 聚合后绘制词级热力图KG 知识句构造dict/下四个字典查通路、靶点、转运体、酶四类关系相互作用网络浏览pages/1_1️⃣_Visualize Interactions.py药物间最短路径与 2-hop 探索一句话概括 DDI-GPT 的可解释性本质让模型自己告诉你哪些词可以放心扰动哪些词绝不能动——前者是噪声后者就是它下判断的依据。【免费下载链接】ddigpt项目地址: https://gitcode.com/gh_mirrors/dd/ddigpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考