首页 > 其他分享 >通过信息瓶颈增强多层实例学习对儿童白血病进行分类

通过信息瓶颈增强多层实例学习对儿童白血病进行分类

时间:2024-09-26 15:52:17浏览次数:12  
标签:白血病 层次 特征 互信息 多层 实例 类别 注意力

对儿童白血病的分型问题

FABCS:基于形态学检查结果

WHOCS:基于形态学检查和基因检查结果

基于深度学习做细胞形态学检查存在的问题:没有探索下游患者水平亚型自动化的问题;需要细胞水平的专家注释;并非所有细胞都表现出相应的诊断特征特性

模型构建:提出一种配备了分层信息瓶颈原理的分层多实例学习,用于自动化白血病的分类过程,降低注释成本,提高分类准确性和模型泛化性

H-MIL(分层多实例学习)由分层特征提取器(HFE)和带有分层注意力映射(HAM)的类级注意力机制组成

HBI(多层信息瓶颈)解决模型的泛化问题和特征解耦缺乏显示控制的问题

数据集:包含268例患者,有相应的BM涂片和临床报告,这些患者可以分为3个粗粒度类别,7个细粒度类别

整体实现过程:

获取细胞图像:

收集涂片和临床报告(用于获取异常细胞的百分比),根据图片捕获ROI,从ROI中分割裁剪细胞

模型构建:

对于HFE模块,首先使用卷积网络为骨干的编码器提取每个实例(即每个细胞)的特征,再分别使用两个全连接层提取粗粒度和细粒度特征(仅用于对应的分类任务),再使用一个全连接层提取提取层次共享特征(用于生成注意力矩阵,并参与两个粒度级别的分类任务)

对于HAM模块,

第一步使用层次共享特征构建细粒度注意力模块,计算注意力得分,通过类级注意力网络G,具体计算表示过程如下:

其中W的输出维度是类别数量,U和V的输出维度相同,该注意力矩阵中的元素表示每个实例对每个类别的重要性,具体来说就是矩阵中的每一列都是一个实例中的注意力分数,这一列的维度是等于类别数量的,这是因为这一列中每个元素都对应一个类别的注意力分数,就是说为每一个实例对每一个类别计算了注意力分数。

第二步时通过关联矩阵将细粒度注意力矩阵转换为粗粒度矩阵,这个关联矩阵表示不同类别层次之间的关系,经过转换后,这个注意力矩阵中的每个元素同样表示对每个类别的重要性,这里两个注意力矩阵的不同点在于,两个对应类别的量是不同的,因为提取特征的层次不同,所以对应的分类也是不同的。

第三步,聚合特征以生成bag级别的特征表示

如上式所示,通过层次特定和层次共享特征按之前计算的特征注意力矩阵进行注意力池化操作,同样的B1和B2分别表示不同层次的bag级别的特征,同上文提到的C1和C2(上式中transpose表示转置)。

然后计算类级得分,具体计算公式如下

k表示层次(粗粒度、细粒度),i表示类别索引(就是第几个类别,其范围随着k的变化而变化),cls为第i个类生成得分,注意这里bi是第i个类别的所有特征,sigmoid将其转换为0-1之间的概率值

两个函数分别定义了不同层次分类的目标函数,通过最小化这些损失函数,模型学习调整参数提高分类准确性。这里y表示实例是否在第i个类别,通过计算交叉熵来衡量预测的概率分布与真实标签之间的差异

推理和预测

注意特征聚合是在B生成的那一步,这时候B是类别数乘以特征维度,而前面提取的特征Z是实例个数乘以特征维度

以上就是H-MIL的整体框架以及完整计算过程

除此之外,加入HIB(分层信息瓶颈)解决两个问题:一是泛化问题(样本数量有限、患者群体的显著特性、图像采集的变化),二是特征解耦缺乏显示控制的问题(特征解耦就是保证不同层次的特征能够区分出来,缺乏显示控制就是没有明确的方法来控制这些特征的解耦)

对于HIB模块:

目标函数:

第一行表示最大化提取特征与目标标签之间的互信息,有助于学习和预测

第二行表示最小化提取特征与输入数据之间的互信息,减少对输入数据的依赖,提高泛化能力

第三行表示最小化不同层次特征之间的互信息,显示促进解耦特征

这里要理解什么是互信息,以及为什么要最大化为什么要最小化

接下来的问题是互信息的计算,这里采用变分近似法来估计互信息的上下界

三个点需要理解,一个是条件概率模型q(A|B)(在B的条件下A的概率是多少),第二个是利用重参数化技巧生成特征g(X,ϵ,ϵ)(这里是生成了两种特征,一个是特定层次的特征,一个是共享层次的特征),第三个是条件概率模型根据生成的特征来预测标签的概率分布。

由重参数化技巧生成的特征:Z=μ+σ⊙ϵ

其中μ是输入X的均值,σ是输入X的方差,ϵ是服从正态分布的随机变量

式中p表示条件概率分布(即给定特征x时,特征z的分布);r是先验分布,通常选择为高斯分布;DKL用于衡量两个概率分布之间的差异。通过最小化KL散度,鼓励特征表示尽可能接近先验分布

解释为社么第一项加了一个负号,因为最大化于最小化+个函数的等同该函数的负数,最后一项是用CLUB估计器估计的互信息上界

弱监督细胞分类模块(WSCC):通过临床报告中提取的异常骨髓细胞的百分比来监督学习,并没有每个细胞的具体标签

给定由HFE中生成的实例特征矩阵,WSCC执行二元分类,预测由HFE进行操作的N个骨髓细胞的异常性

具体操作:

使用clsinst分类器来做细胞异常性预测,通常由多个隐藏层组成,通过激活函数引入非线性,输出层使用线性激活函数,输出两个单元,对应于每个细胞实例属于正常或异常类别的预测。

clsinst的输出是一个未经处理的得分向量,之后使用Gumbel-Softmax将这些得分直接转换为二维一位有效编码,保证了梯度的反向传播,然后计算异常预测百分比,再使用均方误差来衡量预测的异常细胞百分比和真实百分比之间的误差

总体损失和训练策略:

前两项表示模型在两个层次上的分类损失;括号里的三项表示三组KL散度损失,衡量了特征表示于先验分布之间的差异(先验分布是预先定义的,与数据本身无关;特征表示是从数据中提取的),有助于正则化表示;第六项表示互信息损失,衡量了特征之间的相互依赖性,最后一项是WSCC的损失。最后β是权重系数,用于衡量不同损失项在整体训练损失中的重要性。

使用交替训练策略(这里CLUB估计器和主模型都需要被优化):首先优化主模型,固定CLUB估计器,通过梯度下降或其他优化算法来调整模型参数,最小化总损失;根据CLUB损失优化CLUB估计器,固定主模型

Feeling:从不同层次来提取特征,然后提取共享特征,细粒度层次会影响粗粒度层次,相当于局部会影响全局;这里不是说将两种特征提取出来后对其做一个融合,而是利用各自的特征去做一个预测,

还有就是如何调整互信息,不同层次的互信息应该减小,提取特征与输入之间的互信息应该减小,特征与目标标签之间的互信息应该增大
 

标签:白血病,层次,特征,互信息,多层,实例,类别,注意力
From: https://blog.csdn.net/m0_54998120/article/details/142438198

相关文章

  • 抖音开放平台API接口如何开发抖音相关接口数据采集数据分析 【附实例】
    抖音开放平台提供了多种接口,包括授权登录、用户信息、视频管理、评论互动、消息通知、数据分析等。以下是开发抖音接口的一些步骤:注册开发者账号:在抖音开放平台上注册开发者账号,获取开发者身份认证。创建应用:登录开放平台后,创建自己的应用,获取应用的AppID和AppSecret。授权登录:......
  • Junit单元测试实例
    1.在IDEA中打开File->New->Project。  2.在左侧的菜单栏中选择Java,Name是项目名称,Location是项目的位置,JDK根据个人项目的情况选择。  3.下载对应的Mockito插件,我下载的插件是MockitoPostfixCompletion。 4.配置Maven设置 5.选中项目......
  • 【C++掌中宝】类和对象(一):类的定义和实例化
    文章目录引言1.什么是类?1.1类的定义1.1.1类定义格式1.1.2访问限定符1.1.3类域1.2类在编程中的作用——抽象与封装2.类的基本组成2.1成员变量:类的属性(变量)2.2成员函数:类的行为(函数)2.3完整代码示例3.什么是对象?2.1实例化2.1.1实例化概念2.1.2对象大小(内......
  • 828华为云征文|Flexus云服务器X实例实践:部署Alist文件列表程序
    828华为云征文|Flexus云服务器X实例实践:部署Alist文件列表程序引言一、Flexus云服务器X实例介绍1.1Flexus云服务器X实例简介1.2主要使用场景二、购买Flexus云服务器X实例2.1购买规格参考2.2查看Flexus云服务器X实例状态三、远程连接Flexus云服务器X实例3.1重置密码......
  • Android Studio实例:绿豆通讯录
    步骤一:了解项目结构步骤二:首先是继承SQLiteOpenHelper的数据库自定义类创建Java文件MyHelper.javaimportandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;publicclassMyHelperextends......
  • 828华为云征文 | 华为云X实例部署Docker应用的性能评测优化与实践指南
    目录1.前言2.测试环境设置2.1硬件与软件配置2.2网络环境与带宽2.3测试应用介绍3.Docker及应用的安装部署步骤3.1安装Docker3.2使用Docker部署Elasticsearch3.3使用Docker部署MySQL3.4使用Docker部署Nginx4.性能测试与评测标准4.1资源占用分析4.2网......
  • 实例讲解电动汽车驱动扭矩控制策略及Simulink建模方法
    电动汽车完成上电后进入Ready状态,此时车辆具备行车条件,处于行车准备状态。驾驶员挂挡(D挡或R挡)后,踩油门踏板即可控制车辆开始行车。对于电动汽车来说,驱动行车控制过程一般为,VCU接收Ready状态信号、档位信号、油门信号等表征车辆状态和驾驶员驾驶意图的信号后,根据驾驶员意图进行......
  • 实例讲解电动汽车故障分级处理策略及Simulink建模方法
    电动汽车的故障有很多种,每种故障发生时产生危害性是不同的,因此对于不同故障应采取不同的处理方式。目前一般有两种故障处理方式,一种是针对每一种故障对其故障危害性进行判断,然后针对不同故障设定不同的故障处理机制;另一种是针对危害性相似的故障进行分类分级划分,同一级别故障采......
  • 实例展示Spring的作用以及如何使用
    Spring是一个广泛应用于Java开发的开源框架,它主要有以下几个重要作用:一、依赖注入(DependencyInjection)作用:解耦组件之间的依赖关系,使得代码更易于维护和测试。比如在一个Web应用中,不同的业务逻辑层和数据访问层之间如果直接相互创建对象,会导致代码紧密耦合,一旦其中......
  • 【Vue】【uni-app】【小程序】多层嵌套方法导致this指向出错:解析 JSON 失败: TypeErro
    项目场景:在使用vue+uni-app开发微信小程序的时候,调试报错:解析JSON失败:TypeError:Cannotreadproperty‘push’ofundefined问题描述报错如下:以下是出问题的代码:data(){return{fileLists:[],}}//上传文......