多实例学习MIL(easy / hard)

news2024/11/16 1:27:12

多示例学习(Multiple Instance Learning) - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/377220948

多示例学习

和弱监督(weakly supervised)有一定的关系,弱监督weakly supervised有三个含义(或者说三个方向,即三个弱的方面),他的训练数据:

1.弱在缺标签:即标签是不完全的,部分有标签,部分无标签。

2.弱在标签不准确:即部分标签是错的,部分是对的。

3.弱在标签不精确:即标签没有直接打在样本上,而是在一个更高层次上,包标签与样本标签并不不是一个意思。

多示例学习中,我们考虑这样一种训练数据,这个数据是有标记的,标记只有两个类别,正和负。但这一次标记的目标不是一个样本,而是一个数据包(bag)。

某一个或者几个数据合在一起叫做一个bag,每个bag有自己的标记。

当一个bag的标记为负时,这个bag里面所有样本的标记都是负的。当一个bag的标记为正时,这个bag里面至少有一个样本的标记为正

因此,多示例学习的包也是直接打在包上的,但包上的标签和样本标签是一个意思,只是包上的标签并不一定说明包里的样本全都属于这个类。在多示例学习中,我们的目标是学习得到一个分类器,使得对新输入的样本,可以给出它的正负标记。这样的一类问题就是多示例问题。

  1. 比如说,方校长建长城的时候,他要列举一些违禁词汇不让大家搜索,他觉得一个一个输入太麻烦了,于是可以找来一些黄色或者反动的网站,直接作为正样本包:网站中的词汇总有一个是违禁的。然后拿健康向上的人民日报网页作为负样本包:里面的词汇没有一个是违禁的。
  2. 又比如做检测问题,标记训练图片样本的时候需要给出一个矩形框指明目标的位置,有可能标的不够准确,导致不同的样本之间对不齐,这时候可以将标记的矩形框做一些局部扰动得到一些新的矩形框,将它们一起看成一个bag,其中总有一个是最佳的正样本,也就是标记为正。而取一张没有目标的图片,作为负样本包:无论在里面怎么截取图片,都是负样本。

关于多示例问题怎么求解,假如说所有的样本标记都已经知道了,那就是一个监督学习的问题了,用SVM,adaboost之类的都可以做。现在的困难是,有很多样本的标记我们不知道。对于负样本包来说就无所谓了,里面每个样本那都是负标记,这个是明确的。问题出在正样本包上面,每个正样本包里只能保证有一个是正样本,其他的是正是负就不知道了,关键是到底是哪个样本是正的呢?这个也是不清楚的。

解决这个问题的方法其实挺直接的:迭代优化(alternative optimization)。也就是说,我们先假设已经知道了所有样本的标记,那么就可以通过某种监督学习的方法得到一个分类模型,通过这个模型我们可以对每个训练样本进行预测,然后更新它们的标记,我们又可以拿这一次新得到的标记重新训练分类模型了。所以整个优化过程分为两部分:监督学习,标记更新。

这里还有一些地方需要注意:

  1. 第一点, 训练监督学习的模型的时候,只从正样本包里挑选被预测的“最像正确”(也就是分类得分最高)的那一个,正样本包里面其他的样本,不管预测出来是正的还是负的都不要了。这是因为,其实多示例的问题也可以描述为,正样本包里面“最正确”的一个样本标记是正的,跟其他样本无关。所以,这种选择策略恰恰是符合问题定义的。(选最容易分类的,因为可能只有一个)easy sample
  2. 第二点,如果负样本足够多的话,可以只挑选每个负样本包里面被预测“最像正确"的一个样本作为负样本进行训练,这样子的负样本也叫做hard sample或者most violated sample。实践上来说,它们对于模型快速收敛是最有效的。(选最难分类的,因为所有样本都是负的,并且要使模型能够有区分度,这种观点可以参考支持向量机中的支持向量的观点)hard sample

下面给出一个简单的流程图:

多示例学习:

输入:正包,负包

输出: 分类函数 f

将每个标记包中的样本初始化为包的标记,初始化集合U为空,将所有样本加入样本集U

重复下面的过程:

  • 取U中所有样本以及标记训练得到一个分类函数f
  • 利用f预测所有样本的标记
  • 清空U
  • 对于每个正标记包,选取f预测得分最高的样本加入集合U(选最容易分类的一个)easy
  • 对于每个负标记包,选取f预测得分最高的样本加入集合U(选最难分类的一个或多个)hard

直到满足结束条件

返回f

困难样本的作用

困难样本在机器学习和深度学习中起着重要的作用,它们对模型的训练和性能评估都有重要的影响。以下是困难样本的作用以及为什么要使用它们的一些原因:

  1. 提高模型性能:困难样本可以帮助模型更好地学习和泛化,因为它们代表了数据分布中的边缘情况和异常情况。通过让模型重点关注这些难以分类或处理的样本,可以提高模型的性能,并使其在未见过的数据上更具鲁棒性。

  2. 减少过拟合:过拟合是模型在训练数据上表现良好但在测试数据上表现糟糕的常见问题。通过引入困难样本,模型更有可能学习到数据的真实模式,而不是仅仅记住训练数据。这有助于减少过拟合的风险。

  3. 改善泛化能力:困难样本可以帮助模型更好地泛化到新的、未见过的数据。当模型能够处理困难情况时,它对于新数据的适应性更强,因为它已经学会了应对各种情况。

  4. 鲁棒性:在实际应用中,模型往往需要处理各种不同的输入。通过训练模型以处理困难样本,可以增强模型的鲁棒性,使其能够在各种情况下都表现良好。

  5. 诊断模型:困难样本可以用来诊断模型的性能和弱点。通过分析模型在困难样本上的表现,可以确定模型需要改进的方面,并采取相应的措施。

  6. 应对不平衡数据:在某些任务中,类别不平衡是一个常见问题,其中某些类别的样本数量明显少于其他类别。困难样本可以帮助平衡模型对不同类别的关注,防止模型只关注数量较多的类别而忽略其他类别。

  7. 增加挑战性:通过引入困难样本,可以使机器学习任务更具挑战性,这对于研究和发展新的算法和模型非常有价值。这种挑战性可以推动领域的进步。

总之,使用困难样本是为了让机器学习模型更好地适应真实世界中的复杂情况,并提高其性能、鲁棒性和泛化能力。它们对于训练、评估和改进模型都非常重要。

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

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

相关文章

ethercat EOE arp

1 网口设置 电脑地址位169.254.254.3 2 从站地址 3 PING 正常 异常 4 抓包

【方法】如何取消ZIP压缩包的密码?

我们知道,在压缩ZIP文件的时候,可以设置“打开密码”来保护压缩包,那后续不需要保护了,不想每次打开压缩包都输一次密码,要如何取消密码呢? 比较常用的方法是先把ZIP压缩包解压后,再压缩成没有…

铝合金分类及相关总结

1 铝合金常识 铝合金是工业中应用最广泛的一类有色金属结构材料,在航空、航天、汽车、机械制造、船舶及化学工业中已大量应用。对于常用的铝合金,我们通常根据其铝及其他元素的含量,将其分为两大类,分别是纯铝和铝合金。对这两大类…

网络安全行业真的内卷了吗?网络安全就业就业必看

前言 有一个特别流行的词语叫做“内卷”: 城市内卷太严重了,年轻人不好找工作;教育内卷;考研内卷;当然还有计算机行业内卷…… 这里的内卷当然不是这个词原本的意思,而是“过剩”“饱和”的替代词。 按照…

JMeter接口自动化测试(数据驱动)

之前我们的用例数据都是配置在HTTP请求中,每次需要增加,修改用例都需要打开JMeter重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢?我们可以将用例的数据存放在cs…

Effective Modern C++ 第七章 并发API 2

目录 条款37:使std::thread型别对象在所有路径皆不可联结 要点速记: 条款38:对变化多端的线程句柄析构函数行为保持关注 要点速记: 参考:EffectiveModernCppChinese/src/7.TheConcurrencyAPI/item37.md at master …

【java爬虫】使用vue+element-plus编写一个简单的管理页面

前言 前面我们已经将某宝联盟的数据获取下来了,并且编写了一个接口将数据返回,现在我们需要使用vueelement-plus编写一个简单的管理页面进行数据展示,由于第一次使用vue编写前端项目,所以只是编写了一个非常简单的页面。 项目结…

3263页学习资料,一本在手,python不愁!

Python3.11已经发布,新的版本速度提升2倍,以弥补与其他编程语言在速度上的缺陷。可以预见Python语言在未来的应用范围会越来越广。 python学习方向建议: 如果你是本科及以下学历,建议你学习以下两个方向 爬虫。简单的爬虫库&am…

异步电机直接转矩控制学习(两电平12扇区)

导读:传统的直接转矩控制方法6扇区电压矢量选择会导致磁链控制不对称、转矩脉动大等问题,本期介绍一种把扇区细分为12扇区的新型三相异步电机直接转矩控制方法,仿真结果证明磁链轨迹、转速及转矩脉动明显变小,异步电机三相定子电流…

Mac上protobuf环境构建-java

参考文献 getting-started 官网pb java介绍 maven protobuf插件 简单入门1 简单入门2 1. protoc编译器下载安装 https://github.com/protocolbuffers/protobuf/releases?page10 放入.zshrc中配置环境变量  ~/IdeaProjects/test2/ protoc --version libprotoc 3.12.1  …

Reset信号如何同步?

首先来复习一个更加基础的概念:同步reset和异步reset。 同步reset(synchronous reset)是说,当reset信号为active的时候,寄存器在下一个时钟沿到来后被复位,时钟沿到来之前寄存器还是保持其之前的值。 异步…

【计算机组成 课程笔记】7.1 存储层次结构概况

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 1 - 701-存储层次结构概况(15-14--)_哔哩哔哩_bilibili 这是我们已经非常熟悉的冯诺依曼计算机结构, 其中和存储功能相关的部件有:存储器和外部记录介质肯定具有…

WEB各类常用测试工具

一、单元测试/测试运行器 1、Jest 知名的 Java 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 …

Stm32_标准库_6_八种输入出模式

上拉输入与下拉输入 上拉输入:电平默认为高电平,只有当外部输入为低电平时,此IO口电平才会被拉低,经过触发器,再到寄存器,最后传入CPU GPIO_Mode_IPU;下拉输入:电平默认为低电平&am…

4.MySql安装配置(更新版)

MySql安装配置 无论计算机是否有安装其他mysql,都不要卸载。 只要确定大版本是8即可,8.0.33 8.0.34 差别不大即可。 MySql下载安装适合电脑配置属性有关,一次性安装成功当然是非常好的,因为卸载步骤是非常麻烦的 如果第一次安装…

基于SpringBoot的电影评论网站

目录 前言 一、技术栈 二、系统功能介绍 电影信息管理 电影评论回复 电影信息 用户注册 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了电影评…

用友移动管理系统存在任意文件上传漏洞 附POC

文章目录 用友移动管理系统存在任意文件上传漏洞 附POC1. 用友移动管理系统简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 用友移动管理系统存在任意文件上传漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试&…

Waves 14混音特效插件合集mac/win

Waves14是一款音频处理软件,主要用于音频编辑、混音和母带处理。该软件提供了各种插件,包括EQ、压缩、混响、延迟、失真等,以及一些专业的音频处理工具,如L2限幅器、Linear Phase EQ和多频道扬声器管理。 Mac软件下载:…

朋友圈怎么定点发朋友圈?

微信朋友圈是我们日常生活中常用的社交媒体之一。但有时我们忙碌而可能会忘记发布朋友圈,或是因时间不合适而无法发布。那么,有没有一种方法可以在规定的时间内自动发布朋友圈呢? 当然有啦! 定时发朋友圈可以帮助我们在特定时间点…

re学习(38)HGAME2020-re-Level-Week1-maze

题目描述 You won’t figure out anything if you give in to fear. 学习资料: https://ctf-wiki.github.io/ctf-wiki/reverse/maze/maze-zh/ 附加说明:请走最短路线 题解 分析题目 一看题目:maze 可以确定是一个迷宫题 void __fastcall __noreturn…