多实例学习MIL(easy / hard)

多示例学习(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.xdnf.cn/news/149948.html

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

相关文章

【附代码】使用Shapely计算点面关系

文章目录 相关文献基础点面关系展示图点面关系代码 作者:小猪快跑 基础数学&计算数学,从事优化领域5年,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法 本文档介绍如何使用 Shapely Python 包 计算几何点面关系。…

Linux CentOS7 vim宏操作

vim的macro就是用来解决重复的问题。在vim寄存器的文章里面已经对macro有所涉及,macro的操作都是以文本的方式存放在寄存器中。 宏是一组命令的集合,应用极其广泛,包括MS Office中的word编辑器,excel编辑器和各种文本编辑器&…

输入电压转化为电流性 5~20mA方案

输入电压转化为电流性 5~20mA方案 方案一方案二方案三 方案一 XTR111是一款精密的电压-电流转换器是最广泛应用之一。原因有二:一是线性度非常好、二是价格便宜。总结成一点,就是性价比高。 典型电路 最终电路 Z1二极管处输出电流表达式:…

Linux-centos系统安装MySql5.7

1.配置yum仓库 1.1配置yum仓库 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 1.2 安装Mysql yum库 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 2.使用yum安装Msql 说明:下载大约5分钟左右 yum -y install mysq…

2023计算机保研——双非上岸酒吧舞

我大概是从22年10月份开始写博客的,当时因为本校专业的培养方案的原因,课程很多,有些知识纸质记录很不方便,于是选择了打破了自己的成见使用博客来记录学习生活。对于我个人而言,保研生活在前一大半过程中都比较艰难&a…

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

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

c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现)

前段时间也是把指针较为详细系统的讲解完毕,接下来介绍一个全新的知识点,就是字符函数和字符串函数 前几期文章可进我主页观看:总之就是非常唔姆_Matlab,经验分享,c语言题目分享-CSDN博客 想要源代码可以去我的github看看:Neros…

5. Mysql卸载

Mysql卸载 已经成功安装mysql,没有必要卸载,卸载之后不一定再次会安装成功。 双击安装包 检查如下三个目录是否有mysql,有的话,删除掉即可(前提,电脑只有Mysql8,否则mysql其他版本也会被删除)…

【数据结构】排序算法(二)—>冒泡排序、快速排序、归并排序、计数排序

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.冒泡排序 2.快速排序 2.1Hoare版 2.2占…

vue3 中使用echarts图表——柱状图

柱状图是比较常用的图形结构&#xff0c;所以我先收集一些精美的柱状图 一、柱状图&#xff1a;设置圆角和颜色 <template><div class"box" ref"chartDom"></div> </template> <script setup> import { ref, onMounted } fr…

无法启动此程序,因为计算机中“找不到msvcp140.dll”的解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个动态链接库文件&#xff0c;它是许多基于Visual Studio开发的应用程序和游戏的必要组件。当计算机上缺失msvcp140.dll文件时&#xff0c;可能会导致以下问题&#xff1a; 1. 程序无法启动&#xff0c;提示“找不到…

位图/布隆过滤器

一、位图 1.1位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 1.2位图的实现 template<size_t N>class bitset{public:bitset(){//需要N个比特位&#xff0c;…

生产设备巡检管理系统

凡尔码搭建生产设备巡检系统是通过确保巡检工作的质量以及提高巡检工作的效率来提高设备维护水平的一种系统&#xff0c;它对巡检管理考核工作从巡检人员、巡检任务、隐患管理、图像视频、盯防考核进行严格、科学的统计、分析&#xff0c;从而有效的保障巡检工作的顺利展开&…

Opengl之立方体贴图

简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面:一个有纹理的立方体。你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独的纹理呢?立方体贴图有一个非常有用的特性,它可以通过一…

约束优化算法(optimtool.constrain)

import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2约束优化算法&#xff08;optimtool.constrain&#xff09; import optimtool.constrain as oc oc.[方法名].[函数名]([目标函数], [参数表], [等式约束表], [不等式约数表], [初…

VulnHub Earth

一、信息收集 1.主机和端口扫描 nmap -sS 192.168.103.1/24 发现443端口有DNS解析&#xff0c;在hosts文件中添加DNS解析&#xff1a; 2.收集earth.local信息 发现有Previous Messages 37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161…

Electron笔记

基础环境搭建 官网:https://www.electronjs.org/zh/ 这一套笔记根据这套视频而写的 创建项目 方式一: 官网点击GitHub往下拉找到快速入门就能看到下面这几个命令了 git clone https://github.com/electron/electron-quick-start //克隆项目 cd electron-quick-start //…

前端position: absolute是相对于谁定位的?

1. 当祖父元素是relative定位, 父元素是absolute定位, 子元素也是absolute定位 <script setup></script><template><div class"relative"><p class"absolute1">absolute1<p class"absolute2">absolute2<…

计算机竞赛 题目:基于python的验证码识别 - 机器视觉 验证码识别

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于pyt…

使用ebpf 监控linux内核中的nat转换

1.简介 Linux NAT&#xff08;Network Address Translation&#xff09;转换是一种网络技术&#xff0c;用于将一个或多个私有网络内的IP地址转换为一个公共的IP地址&#xff0c;以便与互联网通信。 在k8s业务场景中&#xff0c;业务组件之间的关系十分复杂. 由于 Kubernete…