KnoBo:医书学习知识,辅助图像分析,解决分布外性能下降和可解释性问题

KnoBo:从医书中学习知识,辅助图像分析,解决分布外性能下降问题

    • 提出背景
    • KnoBo 流程图
      • KnoBo 详解
        • 问题构成
        • 结构先验
        • 瓶颈预测器
        • 参数先验
    • 解法拆解
      • 逻辑链
      • 对比 CLIP、Med-CLIP
        • CLIP
        • Med-CLIP
        • KnoBo
    • 训练细节
      • 预训练过程
        • OpenCLIP的微调
      • 构建医学语料库
        • 文档收集
        • 文档管理
      • KnoBo实施细节
        • 概念生成
        • 概念固定
        • 训练与评估

论文:A Textbook Remedy for Domain Shifts: Knowledge Priors for Medical Image Analysis

代码:https://yueyang1996.github.io/knobo/

提出背景

在医学成像领域应用深度学习模型时面临的主要问题:当数据来源(如不同的医院或患者群体)发生变化时,模型的表现往往会大幅下降,这种现象被称为“域移动”。

由于医学数据集通常规模较小,且存在许多未被标识的混淆因素,这些都可能导致模型预测性能急剧下降,从而减弱了医疗专业人员对这些模型的信任。

为了解决这个问题,研究人员提出了一种新的模型设计方法,灵感来源于医学教育过程。

在医学教育中,学生首先通过教科书学习基础知识,然后在实际操作中进一步学习。

模型的设计模仿了这一学习过程:首先利用医学文献来识别和整合关键的医学知识,然后通过实例数据进行学习

具体来说,研究者开发了一种名为“知识增强瓶颈”(KnoBo)的模型结构,它在概念瓶颈模型(CBMs)的基础上进行扩展。

KnoBo的模型,它不仅分析图像的视觉特征,还结合了从医学教科书中提取的具体医学知识来提高其准确性和可靠性。

这种模型使用从医学教科书中提取的概念(如“图像中是否存在玻璃磨砂阴影?”)来帮助模型判断X光片是否显示出呼吸道感染的特征。

在一系列测试中,KnoBo模型在处理数据来源变化时显示出较传统模型更好的性能,尤其是在“分布外”(OOD,即模型未见过的新场景)的情况下,性能提升明显。

此外,研究还发现使用PubMed等医学数据库作为知识来源可以进一步提高模型的预测性能和信息多样性。

这项研究显示,将深入的医学知识整合到模型中,可以显著提高医学成像模型在面对数据变化时的鲁棒性,有助于在医疗实践中更广泛地应用这些先进的人工智能工具。

传统的方法(事后可解释性)可能无法提供真实可靠的解释。本研究采用了一种固有的可解释方法,即通过概念瓶颈模型(CBMs),这种模型通过组合预先定义的概念来作出预测,这些概念是由人类设计的,更易于理解。

本研究不是为每个案例单独检索知识,而是构建了一个全局的知识先验,这个先验是基于一个广泛的医学文档语料库,可以在所有案例中共享使用。

 

KnoBo 流程图

在这里插入图片描述

这幅图是一个关于“知识增强瓶颈”(KnoBo)系统的示意图,这是一种用于医学图像分类的模型。

  1. 结构先验(Structure Prior)

    • 这部分涉及利用医学文献(如PubMed、教科书等)构建一个可信的知识瓶颈。
    • 例如,它会从文献中提取出与COVID-19相关的胸部X光特征,如“玻璃磨砂阴影”。
  2. 瓶颈预测器(Bottleneck Predictor)

    • 这部分使用上述结构先验中的概念来评估输入的医学图像。
    • 系统会询问诸如“肺部是否有塌陷?”、“气管是否在中线位置?”等问题,通过这些问题的回答来分析图像。
  3. 参数先验(Parameter Prior)

    • 这里,线性层的学习受到预定义参数的约束,这些参数可能由医生或语言模型(LLMs)提前定义,以确保模型的预测与医学专业知识一致。

总体流程是:

  • 首先,对于一个具体的查询(如诊断X射线图中的COVID-19),系统从医学文献库中检索相关文档。
  • 使用这些文档来生成和确认关于图像中可能存在的病理特征的问题。
  • 输入的医学图像将被评估这些特征,如图中的X光图示例。
  • 最后,系统基于评估结果生成一个临床报告,表明测试是阳性还是阴性。

这种方法的目的是通过结合丰富的医学知识和深度学习技术,提高医学图像分析的准确性和可靠性。

 


没问题,我会尽量简化解释:

KnoBo 详解

整体概念

  • **知识增强瓶颈(KnoBo)**是一种机器学习模型,它将医学知识以“概念”的形式直接融入模型中,使得模型在处理医学图像时更加精准和可靠。
问题构成
  • 基本理念:模型通过两个步骤进行预测。

    首先,它将图像转换成一系列的“概念”,然后基于这些概念来预测图像的标签(如病情分类)。

  • 目标:目标是通过加入关于概念结构的先验知识(即在建模前就已知的信息)来优化模型的学习过程。

结构先验
  • 操作方法:首先定义需要的概念(如肺炎、肿瘤等医学特征),然后使用大型语言模型从大量文档中寻找与这些概念相关的信息,迭代地精细化这些概念。
  • 迭代过程:通过不断地从文档中提取信息并更新概念库,模型逐步构建一个能够高效识别和分类医学图像的概念结构。
瓶颈预测器
  • 功能:将输入的医学图像映射到概念空间(即识别图像中的医学概念),然后这些概念被用来预测图像的医学标签。
  • 概念固定:这一步骤涉及训练模型识别图像中是否存在特定的医学概念,比如通过分析图像与文本描述(如临床报告)之间的关系来学习。
参数先验
  • 目的:调整模型的参数以确保它们反映出医学知识中的概念与疾病标签之间的正确关联。
  • 实现方式:通过设定参数的先验分布,并在训练过程中调整参数使其不仅符合数据特征,也符合这些先验知识。

总结
通过这种方式,KnoBo模型不仅基于图像的视觉特征进行学习,还整合了丰富的医学知识,使得模型在进行医学图像分析时更为准确和可解释。

这种方法特别适用于需要高度精确诊断的医学领域。

解法拆解

KnoBo(知识增强瓶颈)模型旨在提高医学图像分类的准确性和鲁棒性,特别是在面对数据集中的混淆因素时。为达到这一目的,KnoBo采用了一系列子解法,结合了多个技术和方法来构建和优化模型。下面根据逻辑关系拆解KnoBo的具体解法和子解法:

  1. 概念瓶颈构建(子解法1)

    • 特征:需要一种方法来将医学专业知识直接整合到模型中,增强模型对医学图像的理解。
    • 原因:通过构建概念瓶颈,模型可以在预测时显式地参考医学领域的关键知识,这提高了模型的解释性和准确性。
    • 例子:如果模型识别出X光图像中的“肺部阴影”这一概念,它可以更准确地判断是否为肺炎。
  2. 知识驱动的特征提取(子解法2)

    • 特征:模型需要在处理图像时能够辨识出与医学诊断直接相关的视觉特征。
    • 原因:使用从医学文献中提取的知识来指导特征提取,可以使模型更好地识别与病理状态相关的图像特征,从而提高分类的精确度。
    • 例子:通过分析与“骨折”相关的医学文献,模型可以学习到在X光图像中识别特定类型的骨折线的视觉特征。
  3. 鲁棒性优化(子解法3)

    • 特征:需要提高模型对于数据集中混淆因素的抵抗能力。
    • 原因:通过在模型训练中考虑和评估混淆因素,可以让模型在遇到变化或异常情况时仍保持高准确率,即提高其鲁棒性。
    • 例子:在混淆数据集上训练时,模型学习区分年龄、性别等因素与疾病标签之间的假相关,从而在实际应用中减少误诊。

逻辑链

逻辑链结构如下:

  • 主解法:KnoBo模型
    • 子解法1:概念瓶颈构建
      • 引入医学领域知识,提高模型的专业准确性和解释性。
    • 子解法2:知识驱动的特征提取
      • 利用医学知识指导图像特征的提取,关注与医学诊断直接相关的视觉特征。
    • 子解法3:鲁棒性优化
      • 在模型设计中考虑混淆因素,提高模型对异常情况的适应性和鲁棒性。

这些子解法形成一个链条结构,每个解法都是为了解决模型在医学图像处理中可能遇到的具体问题,共同作用以提升最终的模型性能和可靠性。

对比 CLIP、Med-CLIP


KnoBo(Knowledge-enhanced Bottlenecks)在特定场景中可以表现得比CLIP或Med-CLIP更优,尤其是在需要高度医学知识整合和强解释性的医学图像分析任务中。

在这里插入图片描述

CLIP
  • 设计与目标:CLIP(Contrastive Language–Image Pre-training)由OpenAI开发,旨在通过自然语言描述学习视觉概念。它是为了广泛的图像理解而设计,不特定于医学图像。
  • 优势:CLIP强在处理大范围的图像类型和大量未标注数据,能够通过文本描述与图像内容之间的关联来进行分类和识别。
  • 局限:在专业性较强的领域(如医学图像分析),CLIP可能不如专门针对该领域优化的模型表现出色,因为它缺乏具体领域的深入知识。
Med-CLIP
  • 设计与目标:Med-CLIP是CLIP的一个变种,针对医学图像进行了优化,通过在医学图像和相关文本上进行预训练来改进。
  • 优势:在处理医学图像时,相比于标准的CLIP,Med-CLIP通过利用医学专业的数据集提高了模型对医学内容的理解和精度。
  • 局限:虽然比普通的CLIP模型更适用于医学图像,但Med-CLIP可能还是缺乏足够的医学知识深度,特别是在具体病理特征的识别和解释方面。
KnoBo
  • 设计与目标:KnoBo专为解决医学图像分析中的高复杂性问题而设计,通过集成明确的医学知识(概念瓶颈)来增强模型的解释能力和准确性。
  • 优势:KnoBo在处理需要高度专业知识和高度解释性的医学图像分析任务时,能够提供更准确的诊断支持。它通过直接利用医学文献中的知识来改善诊断结果的相关性和准确性。
  • 局限:KnoBo的设计和实现可能比CLIP或Med-CLIP更为复杂,需要更多的定制化开发和维护。

KnoBo在需要深度医学知识和高度解释性的医学图像分析任务上可能比CLIP和Med-CLIP更强,特别是在准确性和用户信任方面。

然而,在通用图像识别任务或少量标注数据的场景中,CLIP和Med-CLIP可能更具优势。

训练细节

知识增强瓶颈(KnoBo)模型进行医学图像分类的全流程训练步骤,包括预训练、构建医学语料库和实施KnoBo细节。

预训练过程

预训练是训练深度学习模型之前的一个重要步骤,特别是在处理需要大量专业知识的领域如医学图像时。

OpenCLIP的微调
  • 模型选择:选择OpenCLIP模型,这是一个基于Transformer的大规模视觉-语言预训练模型,原本在多种数据集上训练,能理解图像内容与文本描述之间的关联。
  • 数据准备:收集医学相关的图像与其对应的临床报告。这些报告通常包含了描述图像内容的详细信息,如病变特征、诊断结果等。
  • 文本预处理:与其使用完整的临床报告,不如提取关键短语或重要信息,因为这样更能突出对图像内容的直接描述,减少噪声数据的干扰。
  • 微调:在医学专用的预训练数据上进行OpenCLIP的微调,使模型更好地适应医学图像的解读。

构建医学语料库

医学语料库是进行概念生成和检索的基础,包括以下步骤:

文档收集
  • 来源:从PubMed等医学数据库下载大量医学文章,涵盖各种医学主题和病例分析。
  • 文档整理:将下载的文章分割成较小的文本片段或摘要,以便于后续处理和检索。
文档管理
  • 索引构建:使用信息检索技术如BM25对文档片段进行索引,便于快速准确地检索相关内容。

KnoBo实施细节

KnoBo模型的实施是整个过程的核心,具体包括:

概念生成
  • 语言模型选择:采用GPT-4作为概念生成的底层语言模型。GPT-4因其强大的语言理解能力和生成能力,适合此任务。
  • 概念检索与生成:使用从医学语料库检索到的相关文档作为输入,让GPT-4生成与医学图像相关的概念。这些概念后续将用于训练和预测。
概念固定
  • 工具选择:使用Flan-T5-XXL模型来标注每个概念在具体临床报告中的存在与否,此步骤对应于从语言模型生成的文本中提取与图像对应的具体概念。
  • 成本效率:选择Flan-T5-XXL也考虑到了成本效率,以实现高效的标注。
训练与评估
  • 训练:在上述生成的概念和固定的基础上,训练KnoBo模型对医学图像进行分类。
  • 评估:在训练集、验证集和测试集上评估模型的性能,特别是在混淆和非混淆数据集上的表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【经典面试题】是否形成有环链表

1.环形链表oj 2. oj解法 利用快慢指针: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; bool hasCycle(struct ListNode *head) {ListNode* slow head, *fast…

前端练习小项目——方向感应名片

前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——方向感应名片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在开始学习之前,先让我们看一…

Java中的代理机制

代理的概述 代理:给目标对象提供一个代理对象,并且由代理对象控制着对目标对象的引用(跟多态一样) mybatis、spring都运用了代理机制 跳过创建类的过程,直接产生对象 简单来说,我们使用代理对象来代替对…

【Python】日期和时间模块

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言时间元组datetime 模块datetime类获取当前日期和时间 timedelta类日期和时间运算 strftime()方法格式化时间日期格式化符号 strptime()方法 Time 模块Time 模块内置函数Time 模…

编译适用于 Apple Silicon Macs 的 Chromium 教程

本教程将指导你如何在 Apple Silicon Macs 上编译 Chromium,包括所需的系统要求、工具安装、源码获取、环境配置、编译和运行步骤。 一、系统要求 Apple Silicon Mac(如 M1、M2)。安装 Xcode 和 macOS SDK(通过 App Store 安装最…

AWDAWFAAFAWAWFAWF

创建两张表:部门(dept)和员工(emp) 创建视图v_emp_dept_id_1,查询销售部门的员工姓名和家庭住址 创建视图v_emp_dept,查询销售部门员工姓名和家庭住址及部门名称 创建视图v_dept_emp_count(dept…

Ubuntu使用Nginx部署uniapp打包的项目

使用uniapp导出web项目: 安装: sudo apt install nginx解压web.zip unzip web.zip移动到/var/www/html目录下: sudo cp -r ~/web/h5/ /var/www/html/重启Nginx: sudo service nginx restart浏览器访问:http://19…

Java高频面试基础知识点整理4

干货分享,感谢您的阅读!背景​​​​​​高频面试题基本总结回顾(含笔试高频算法整理) 最全文章见:Java高频面试基础知识点整理 (一)Java基础高频知识考点 针对人员: 1.全部人员都…

算法学习笔记(8.4)-完全背包问题

目录 Question: 图例: 动态规划思路 2 代码实现: 3 空间优化: 代码实现: 下面是0-1背包和完全背包具体的例题: 代码实现: 图例: 空间优化代码示例 Question: 给定n个物品…

Tomcat组件概念和请求流程

Tomcat:是一个Servlet容器(实现了Container接口)&#xff0c;容器分层架构从上到下分为。Engine(List<Host>)->Host(List<Context>)->Context(List<Wrapper>)->Wrapper(List<Servlet>); Engine:引擎&#xff0c;Servlet 的顶层容器&#xff0…

UML建模案例分析-类图中的关系

概要 类图之间的关系比较多&#xff0c;绝大多数情况下重点关注的还是关联关系、组合、聚合这三种&#xff0c;最终是如何对应到代码上的。 例子 以订单为例&#xff1a;订单和订单项之间是组合关系&#xff0c;这和数据库实体之间不一样。数据库实体有主外键&#xff0c;开…

Java聚合跑腿系统对接云洋聚合跑腿系统源码低价快递小程序APP公众号源码

一站式解决方案 &#x1f680;引言&#xff1a;跑腿服务的市场需求与聚合趋势 在快节奏的现代生活中&#xff0c;跑腿服务成为了越来越多人的选择。为了满足这一市场需求&#xff0c;各大跑腿平台纷纷涌现。然而&#xff0c;如何将这些平台进行有效整合&#xff0c;提供更为便…

比特币交易繁忙的一天

早晨:市场开盘与准备工作 6:00 AM - 全球市场监测 交易员们早早起床,开始监测全球市场动态,尤其是亚洲市场的动向。通过查看新闻、分析报告和市场数据,了解可能影响比特币价格的因素。 7:00 AM - 团队会议 召开晨会,讨论当天的交易策略。团队分析前一天的交易情况,评…

HTML网页大设计-家乡天水

代码下载: https://pan.quark.cn/s/6bad4cfaefda

Windows下vscode配置C++环境

一、vscode下载及安装 vscode官网 选安装位置。 勾选这几项。 1.vscode界面中文配置 &#xff08;1&#xff09;点击扩展小图标&#xff0c;搜索插件&#xff0c;找到插件Chinese (Simplified) (简体中文) Language Pack&#xff0c;点击install。 &#xff08;2&#xf…

【vue组件库搭建07】Vitest单元测试

vitest官网 vue-test-utils 我们的测试框架选择的是 Vitest 和 vue-test-utils。两者的关系为&#xff1a; Vitest 提供测试方法&#xff1a;断言、Mock 、SpyOn 等方法。vue-test-utils: 挂载和渲染组件&#xff1a; Vue Test Utils 允许您在隔离中挂载组件&#xff0c;这意…

实用机器学习(快速入门)

前言 因为需要机器学习的助力&#xff0c;所以&#xff08;浅浅&#xff09;进修了一下。现在什么东西和AI结合一下感觉就好发文章了&#xff1b;我看了好多学习视频&#xff0c;发现机器学习实际上是数学&#xff0c;并不是常规的去学习代码什么的&#xff08;虽然代码也很简…

我应该使用 Pinia 还是 Vuex?

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当项目逐渐变大时,状态管理的问题开始显现了出来。这时,两个强大的状态管理工具:Vuex 和 Pinia。该选择哪一个呢? 今天带各位大佬对比下两者的优势在何处,以及如何选择合适的状态管理库! 什么是 Vuex? Vuex 是 Vue.j…

时间管理的6张清单:做个时间清单控,提高时间颗粒度!

时间管理管理的到底是什么&#xff1f;我觉得其根本就是时间的颗粒度。这与大多数行业精英的时间管理不谋而合&#xff0c;也就是身段越高&#xff0c;时间管理的颗粒度越高。比尔盖茨的颗粒度是5分钟&#xff0c;精确到与人握手&#xff0c;按秒来安排&#xff01;接下来&…

Amesim-帮助文件翻译与总结-tigger(滞环)

元件应用说明 滞环一般应用于控制策略制定&#xff0c;该原件类似于一个开关&#xff0c;当输入值大于设置的high input threshold Value时输出high out value&#xff1b;小于low input threshold value时输出low output value。若输出值在high input threshold Value与low i…