1. 从“包”开始理解多示例学习的核心思想想象一下你是一位医生面前摆着成千上万张肺部CT扫描影像。你的任务是判断某位患者是否患有早期肺癌。传统的人工智能方法会要求你或者你的标注团队在每一张影像上用框精确地圈出每一个微小的、可能是肿瘤的结节。这工作量巨大成本高昂而且极度依赖专家的精力和时间。多示例学习Multiple Instance Learning, MIL就是为了解决这类问题而生的。它采用了一种更“偷懒”也更符合现实的监督方式我们不需要知道每张CT切片上具体哪个区域是病灶我们只需要知道这位患者的整套CT影像这是一个“包”整体上是否被诊断为肺癌。至于包里面成百上千个小的图像区域这些是“实例”哪些是致病的元凶模型自己去学。我第一次接触MIL就是在医疗影像项目里当时为了标注数据差点跑断腿。后来发现很多医院的病历系统里只有患者级别的诊断结论比如“确诊为A疾病”却没有影像级别的标注。MIL简直就是为这种场景量身定做的。它把我们从繁重的像素级标注中解放出来让我们能用“弱监督”的信号去训练一个强大的模型。那么MIL是怎么工作的呢它基于一个非常直观的假设我们称之为“标准MIL假设”。拿回刚才的例子如果一个患者的CT包被标记为“健康”负包那么我们可以合理地认为这个包里所有的图像区域都是正常的。反之如果一个包被标记为“患癌”正包那么其中至少存在一个或多个图像区域包含了癌变组织。这个“至少一个”的实例就是整个问题的关键我们叫它“见证实例”。模型的任务就是从一大堆只有包标签的数据中学会识别出那些隐藏的、关键的见证实例并据此对新的包做出判断。这个范式巧妙地模拟了现实世界中的许多问题。除了医疗影像还有药物发现一个分子可能有成千上万种构象只有某些构象有活性、图像分类一张图是否包含“猫”只需要图中某个区域有猫、文本情感分析一篇影评的整体情感是正面还是负面可能由其中几个关键句子决定等等。它的核心魅力在于用更廉价、更容易获取的标注包级标签去解决原本需要精细标注实例级标签才能处理的问题。2. 四大核心特性你的数据属于哪一类当你决定要使用MIL来解决手头的问题时别急着翻论文找代码。Carbonneau等人的那篇经典综述给了我们一个极其重要的启示没有放之四海而皆准的“最佳”MIL算法。算法的表现高度依赖于你的数据本身所具有的特性。他们将这些特性归纳为四大类这就像是你数据的“体检报告”决定了你应该选择哪种“治疗方案”。2.1 预测级别你到底想要什么这是第一个也是最重要的决策点。你必须问自己我的最终目标是给整个“包”打标签还是要把包里面的“坏家伙”给揪出来包分类任务目标是判断整个包的类别。例如判断一位患者的整套CT是否异常判断一篇文档是否属于某个主题。在这个任务里模型的核心策略是“找到证据就行”。只要能在包里找到一个强有力的正例整个包就可以被判为正。这带来一个重要的不对称性在正包里模型漏掉False Negative几个正实例可能无关紧要只要有一个被抓住就行但在负包里模型只要错误地将任何一个实例判为正False Positive整个负包就被误判了。所以优化包分类的算法天然倾向于“高召回率”宁可错杀不可放过。实例分类任务目标是识别出包内每一个实例的标签。例如在CT影像中精确地分割出肿瘤区域在图像中定位出猫的具体位置。这时每一个实例的判断都至关重要误判代价是对称的。我踩过的一个坑就是混淆了这两者。早期做一个工业缺陷检测项目我们只有“这张产品图片是否有缺陷”的标签包分类目标但我却用了一个擅长实例定位的MIL模型去训练希望它能同时做好分类和定位。结果就是模型分类准确率还行但定位框简直飞到了外太空——因为它学会了“投机取巧”只要找到一个疑似缺陷的点哪怕只是噪点它就判定整张图有问题并把这个点作为“证据”完全不管真正的缺陷在哪里。一个在包分类上表现SOTA的算法在实例分类任务上可能表现极差反之亦然。选择算法前务必明确你的首要目标。2.2 包组成包里面是什么情况明确了目标我们得看看数据的具体构成。这主要看两点见证率这是正包里真正“有用”的正实例所占的比例。这个概念至关重要。高见证率50%比如一张“海滩”的图片里面可能超过一半的区域都是沙子和海水。这时候问题相对简单甚至可以把包标签粗暴地分配给所有实例当作有噪声的监督学习来处理效果也不会太差。低见证率10%甚至1%这才是MIL发挥威力的主战场。比如在几十万正常细胞中寻找几个癌细胞在整段监控视频里寻找几帧异常行为。见证率越低问题越难。因为正信号被海量的负实例淹没模型极易“迷失”。早期一些简单方法如SI-SVM直接把包标签赋给所有实例在低见证率下会产生海量的错误标签导致训练完全失败。你需要专门为低见证率设计的方法例如MI-SVM它每次迭代只关注每个正包里“最像正例”的那个实例或者像miGraph这类方法通过图结构让相似的实例共享信息放大稀有正例的信号。实例间关系包里的实例是各自独立还是彼此关联包内相似性同一张图片里切出来的图像块由于共享光照、背景它们可能在特征空间里非常接近。如果算法过度关注这种“同包相似性”它可能学会的是区分“这张图和那张图”而不是区分“肿瘤组织和正常组织”。你需要用特征选择或度量学习的方法拉近同类实例的距离而非同包实例的距离。共现关系“鸟”和“天空”、“键盘”和“电脑”经常一起出现。这对包分类是好事提供了上下文信息但对实例分类可能是干扰模型可能因为“天空”而把一块蓝色区域误判为“鸟”。结构信息实例之间存在明确的时空或逻辑结构。比如视频的连续帧、文档的句子顺序、社交网络中的节点连接。忽略这些结构会损失大量信息。像miGraph或结合了循环神经网络RNN、图神经网络GNN的现代MIL方法就是为了捕捉这类复杂关系而生的。2.3 数据分布正反两面长啥样数据的分布形态直接影响模型的泛化能力。正例的多模态分布我们想象中的“正例”可能在特征空间里聚成一团但现实往往更复杂。“蚂蚁”这个概念可能包含红蚂蚁、黑蚂蚁、有翅的、无翅的它们在特征空间里分布在多个不同的簇里。传统方法如Diverse Density它寻找特征空间中一个“最优点”的思路在处理多模态分布时会非常吃力因为它试图用一个点去代表所有模式。更好的方法是使用能表征分布的方法例如MILES方法使用多个原型点或者像miFVFisher向量这类方法将整个包编码为一个描述实例分布的统计向量天然就能容纳多模态性。负分布的不可代表性这是开放世界问题的典型挑战。在图像分类中负样本背景可以是任何东西天空、草地、街道、室内场景……你的训练集永远无法涵盖所有可能的负例模式。因此一个鲁棒的MIL算法不应该试图去精确建模“负例是什么”而应该专注于刻画“正例是什么样”。这就像教你认猫不是给你看全世界所有“非猫”的东西而是让你反复看各种猫直到你建立起对“猫”的稳固概念。基于距离的方法如Citation-kNN或单分类方法如单类SVM在这方面通常表现更稳健。2.4 标签歧义性你的标签可靠吗弱监督本身就伴随着噪声和歧义这里主要有两种标签噪声包级别的标签可能是错的。比如一张被标注为“无猫”的图片角落里其实藏着一只小猫。在标准MIL假设下这个错误标签是灾难性的因为模型会强迫自己从这张“负包”里找到一个“正实例”来解释标签导致学习到完全错误的概念。对此一些方法通过放宽假设来增加鲁棒性比如要求正包中至少有θ个正例才判为正阈值假设或者使用EMD-SVM这类将包表示为分布如直方图的方法单个噪声点对整体分布的影响有限。不同的标签空间包标签和实例标签的语义可能根本不在一个层次。例如包的标签是“汽车”但包内的实例可能是“轮胎”、“车窗”、“车灯”的局部纹理。你无法为实例分配“汽车”或“非汽车”的标签。这时标准MIL假设完全失效。你必须使用“集体假设”比如词袋模型BoW先将实例聚类成视觉单词“轮胎”、“纹理”等然后在“单词分布”的层面上判断这个包是否像“汽车”。3. 算法家族巡礼三大流派如何选了解了数据的特性我们就可以像选工具一样进入MIL的算法工具箱。主流方法大致分为三大流派它们解决问题的空间和哲学截然不同。3.1 实例空间方法深入虎穴直捣黄龙核心思想既然问题的根源是实例标签未知那我就直接去估计它这类方法的核心是学习一个实例级别的分类器f(x)然后通过某种聚合规则比如取所有实例得分的最大值得到包的预测。典型代表APR早期经典。它在特征空间中寻找一个“轴平行矩形”要求这个矩形能覆盖每个正包至少一个实例同时不包含任何负包实例。思路直观但只能处理线性可分且特征简单的场景。Diverse Density (DD) 与 EM-DD寻找特征空间中的一个“理想点”这个点要离至少一个正包实例很近同时离所有负包实例都很远。EM-DD用期望最大化算法迭代优化这个过程比原始DD更实用。MI-SVM / mi-SVM基于SVM的经典方法。MI-SVM比较“保守”每次迭代只把每个正包中得分最高的那个实例当作正例来训练SVMmi-SVM则更“激进”它会根据当前SVM为所有实例打上软标签然后重新训练。mi-SVM在实例分类任务上往往更强但也更容易过拟合和受标签噪声影响。MIL-Boost将Boosting框架与MIL损失结合通过梯度提升训练一个强大的实例分类器在需要实例级输出的任务中表现出色。实战选型指南何时用你的首要目标是实例分类如目标定位、分割且数据见证率不是极低标签相对干净。实例空间方法能给你最直接的实例级输出。何时慎用任务主要是包分类且见证率很低。因为模型会过度关注“最像”的那个实例而忽略包内其他支持性信息。另外它对标签噪声非常敏感。3.2 包空间方法不识庐山真面目只缘身在此山中核心思想我们不纠结于包里面具体哪个实例是好的还是坏的我们直接把每个包看作一个整体对象。通过定义包与包之间的距离或相似性度量在“包的空间”里进行分类。典型代表Citation-kNN借鉴学术引用思想不仅看一个包的K个最近邻参考文献还看有多少包把它当作最近邻引用。它使用Hausdorff距离等度量包间距离对分布变化的鲁棒性较好。MInD思路很巧妙把一个包表示成一个向量向量的每个元素是这个包与训练集中所有其他包的不相似度。然后就可以把这个向量扔给任何标准分类器如SVM去学了。它完全绕开了实例表示。NSK-SVM使用归一化集核计算两个包之间所有实例对相似度的平均值作为核函数。它隐式地比较了包的整体统计特性。实战选型指南何时用你的核心任务是包分类并且包内实例存在复杂的结构或关系集体假设。当测试数据的负分布与训练集差异较大时包空间方法通常比实例空间方法更稳健因为它们更依赖正包之间的相对相似性。何时慎用你需要实例级别的预测。大多数包空间方法是“黑箱”很难回溯到具体是哪个实例导致了分类结果。3.3 嵌入空间方法化繁为简降维打击核心思想这是目前最主流、也最容易与深度学习结合的方向。它设计一个“编码器”函数将任意大小的包映射成一个固定长度的特征向量嵌入。一旦所有包都被编码成了向量MIL问题就瞬间变成了一个标准的监督学习问题你可以用任何你熟悉的分类器SVM、随机森林、神经网络来处理。典型代表MILES从训练集中选出一组有代表性的“原型实例”。每个包被表示为一个向量向量第i维的值是这个包中所有实例与第i个原型实例相似度的最大值。这个“最大”操作是关键它抓住了MIL“至少一个”的精髓。通常结合1-范数SVM既能分类又能做原型选择。词袋模型与文本处理一模一样。先用K-means在所有实例上聚类得到“视觉词典”。每个实例被赋予最近的视觉词一个包就表示成这些视觉词出现的直方图。简单有效尤其适合实例数量多且特征丰富的场景。EMD-SVM将包视为概率分布使用推土机距离来衡量两个分布之间的差异并以此构造SVM核函数。它对包的整体形态敏感对噪声和分布变化比较鲁棒。miGraph为每个包构建一个图节点是实例边的权重是实例间的相似度。然后使用图核来比较包的相似性。它能显式地建模实例间的关系是处理结构化数据的利器。实战选型指南何时用这几乎是现在的默认首选起点尤其是当你的数据量较大时。它计算高效框架灵活并且很容易与深度学习特征提取器结合实现端到端学习。例如你可以用一个CNN来提取每个图像块的特征然后用一个注意力机制或最大池化层来聚合这些特征形成包的表示。几乎通用只要你能设计出合适的嵌入函数嵌入空间方法能适应各种特性。对于多模态分布嵌入函数可以设计成多通道的对于结构信息可以使用图神经网络作为编码器。4. 实战决策树与避坑指南理论说了这么多我们来点实在的。假设你现在手头有一个具体的MIL任务比如用病理切片WSI预测癌症亚型。整个决策流程可以梳理成下面这个树状图你的MIL任务 | |-- 首要目标是什么 | | | |-- 实例分类 (如定位癌细胞) -- **优先考虑实例空间方法** (MI-SVM, MIL-Boost) 或 **带实例输出头的深度嵌入方法**。 | | | |-- 包分类 (如诊断癌症亚型) -- 进入下一步分析。 | |-- 数据特性如何 | |-- 见证率极低 (1%) 且/或 标签有噪声 | | | |-- 是 -- **优先考虑鲁棒性强的嵌入空间方法** (如 EMD-SVM, miGraph) 或 **使用阈值假设的包空间方法**。避免使用 mi-SVM 等对噪声敏感的方法。 | | | |-- 否 -- 进入下一分支。 | |-- 包内实例有强结构/关系 (如视频帧、空间排列) | | | |-- 是 -- **选择能建模结构的方法**如 miGraph (图核)或 **使用RNN/GNN的深度嵌入方法**。 | | | |-- 否 -- 进入下一分支。 | |-- 正例概念是否多模态负分布是否未知多变 | |-- 是 -- **优先考虑分布建模或原型方法**如 MILES (多原型) BoW/miFV (分布表示)或 **基于距离/单分类的包空间方法** (如 Citation-kNN)。 | |-- 否 -- **嵌入空间方法**作为强大且通用的基线。从简单的 **最大池化全连接层** 的深度学习模型开始尝试。下面是我在多个项目中总结出的几条避坑经验第一坑评估指标单一化。不要只看准确率或AUC。对于包分类要关注精确率和召回率的平衡特别是当正负包不平衡时。对于实例分类则要使用实例级别的指标如平均精度AP。我曾见过一个模型包分类AUC高达0.95但实例定位的IoU却不到0.3这就是典型的任务错配。第二坑忽视数据清洗。虽然MIL能处理弱标签但绝不意味着你可以对标签质量不管不顾。包级别的标签错误对模型尤其是实例空间方法是致命的。在医疗项目中我们一定会让多位专家对不确定的病例进行复审哪怕只清洗掉5%的模糊样本模型性能都能有显著提升。第三坑盲目套用深度学习。现在很多人一上来就用带注意力机制的深度MIL网络。这没错但它不是银弹。如果你的数据量很小比如只有几百个包复杂的深度学习模型很容易过拟合。此时传统的、基于手工特征的MILES或SVM方法可能更稳定、更可解释。我通常的做法是先用传统方法建立一个强基线理解数据的特性再用深度学习去尝试突破。第四坑聚合函数选择不当。“最大池化”是最常用的聚合函数因为它完美对应了“至少一个”的标准假设。但在一些场景下“平均池化”或“注意力加权求和”可能更好。例如在声音事件检测中一个“争吵”的音频包可能是由多个人的声音片段共同构成的这时“平均”或“加权和”更能体现集体假设。你可以尝试不同的聚合方式并将其作为超参数进行验证。第五坑忽略计算成本。一些包空间方法比如需要计算所有包对距离的方法在包数量很大时N10000计算复杂度会呈平方增长变得难以承受。而嵌入空间方法尤其是深度学习模型虽然训练可能慢但一旦编码器固定对新包的预测可以非常快。在工业界部署时推理速度往往是关键考量。最后我想分享一个最近的体会。随着Transformer和视觉基础模型的兴起MIL的范式也在进化。我们现在可以先用一个在大量数据上预训练好的视觉模型如ViT来提取每个实例的特征这些特征本身已经包含了丰富的语义信息。然后在这个高质量的语义特征空间上再应用MIL聚合策略。这种方法往往能取得比从头训练端到端MIL网络更好的效果尤其是在数据有限的领域。这其实也印证了MIL的核心思想始终未变如何更好地表示实例以及如何更智能地聚合实例信息以形成包的决策。作为工程师我们的工作就是根据数据的“体检报告”为这两个核心环节选择最合适的工具和技术路径。