对儿童白血病的分型问题
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:从不同层次来提取特征,然后提取共享特征,细粒度层次会影响粗粒度层次,相当于局部会影响全局;这里不是说将两种特征提取出来后对其做一个融合,而是利用各自的特征去做一个预测,
还有就是如何调整互信息,不同层次的互信息应该减小,提取特征与输入之间的互信息应该减小,特征与目标标签之间的互信息应该增大