///////////////////////////////////////////推荐学习组//////////////////////////////

http://www.robots.ox.ac.uk/~vgg/

////////////////////////////////////////////////////////////////////////////////////////

多示例学习(Multiple Instance Learning)

今天一直在准备组会seminar,是导师点名要我做的报告,一篇有关weakly supervised的论文《Weakly supervised discriminative location and classification: a joint learning process》。读了第一遍就觉得所谓weakly supervised似乎就是多示例学习换了一个说法而已。再看更多的论文之前,这个结论还有待验证。不管怎么说,多示例学习是一个影响深远的大坑,很多令人印象深刻的重要工作都直接或者间接的应用了多示例的思想。其中我觉得最耀眼的应该是Felzenszwalb大牛的《Object Detection with Discriminatively trained part based models》。在那篇文章里他把这个模型叫做latent SVM,实际上就是MILSVM的变种。

监督学习 (Supervised Learning)

“学习是透过教授或体验而获得知识、技术、态度或价值的过程,从而导致可量度的稳定的行为变化,更准确一点来说是建立新的精神结构或审视过去的精神结构。”                                                                                                                  ————百度百科

上面这段话里,我觉得说的最贴切的地方是“学习需要审视过去”。对于计算机来说,所谓过去就是训练样本,机器学习是一个根据训练样本得到分类器或者拟合函数的过程。而监督学习意味着每个训练样本都有属于自己的标记。当这个标记代表着分类类别的时候,学习得到的就是分类函数。当这个标记代表着某种连续的取值的时候,学习得到的就是拟合函数。更复杂的,每个标记可以是一个集合,这时候学习得到的是结构化预测函数。

很多时候,不是每个训练样本都有标记,而是只有一部分被标记,而另一部分只有数据本身,标记缺失掉了。这时候需要将没有标记的数据和有标记的数据结合起来进行机器学习,这就是半监督学习。又有的时候,甚至所有的样本都没有标记,这就是非监督学习。但是实际上,非监督学习没法进行目标明确的分类、拟合任务,只能做一些分析性的任务,比如说聚类,PCA,字典学习等等。

多示例问题 (Multiple Instance Problem)

我们考虑这样一种训练数据,这个数据是有标记的,标记只有两个类别,正和负。但这一次标记的目标不是一个样本,而是一个数据包(bag)。某一个或者几个数据合在一起叫做一个bag,每个bag有自己的标记。当一个bag的标记为负时,这个bag里面所有样本的标记都是负的。当一个bag的标记为正时,这个bag里面至少有一个样本的标记为正。 我们的目标是学习得到一个分类器,使得对新输入的样本,可以给出它的正负标记。这样的一类问题就是多示例问题。

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

求解方法

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

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

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

第一点, 训练监督学习的模型的时候,只从正样本包里挑选被预测的“最像正确”(也就是分类得分最高)的那一个,正样本包里面其他的样本,不管预测出来是正的还是负的都不要了。这是因为,其实多示例的问题也可以描述为,正样本包里面“最正确”的一个样本标记是正的,跟其他样本无关。所以,这种选择策略恰恰是符合问题定义的。

第二点,如果负样本足够多的话,可以只挑选每个负样本包里面被预测“最像正确"的一个样本作为负样本进行训练,这样子的负样本也叫做hard sample或者most violated sample。实践上来说,它们对于模型快速收敛是最有效的。

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

多示例学习:


输入:数据矩阵X=[x1,x2,⋯,xn], 包标记Y=[Y1,Y2,⋯,Ym],包与样本的关系I=[I1,I2,⋯,Im]

输出: 分类函数 f

将每个标记包j中的样本i∈Ij初始化为包的标记yi=Yj,初始化集合U为空,将所有样本加入样本集U

重复下面的过程

取i∈U的样本的数据xi以及标记yi训练得到一个分类函数f

利用f预测所有样本的标记yi

清空U

对于每个正标记包,选取f预测得分最高的样本加入集合U

对于每个负标记包,选取f预测得分最高的样本加入集合U(或者取较高的某些样本,也可以取全部样本都加入U,这取决于负样本是否充足)

直到满足结束条件

返回f

Multiple Instance Learning的更多相关文章

  1. 多示例学习 multiple instance learning (MIL)

    多示例学习:包(bags) 和 示例 (instance). 包是由多个示例组成的,举个例子,在图像分类中,一张图片就是一个包,图片分割出的patches就是示例.在多示例学习中,包带有类别标签而示例 ...

  2. ObjecT4:On-line multiple instance learning (MIL)学习

    原文链接:http://blog.csdn.net/ikerpeng/article/details/19235391 用到论文,直接看翻译. 文章:Robust object tracking wi ...

  3. [paper reading] C-MIL: Continuation Multiple Instance Learning for Weakly Supervised Object Detection CVPR2019

    MIL陷入局部最优,检测到局部,无法完整的检测到物体.将instance划分为空间相关和类别相关的子集.在这些子集中定义一系列平滑的损失近似代替原损失函数,优化这些平滑损失. C-MIL learns ...

  4. 论文笔记(5):Fully Convolutional Multi-Class Multiple Instance Learning

    这篇论文主要介绍了如何使用图片级标注对像素级分割任务进行训练.想法很简单却达到了比较好的效果.文中所提到的loss比较有启发性. 大体思路: 首先同FCN一样,这个网络只有8层(5层VGG,3层全卷积 ...

  5. 读《Tooth-Marked Tongue Recgnition Using Multiple Instance Learning and CNN Features》

    本人 组会汇报的一篇关于齿痕舌判定的文章,贴上PPT 涉及多示例学习和神经网络方面知识. 准确率有待提高哈哈.

  6. Multiple Instance .NET Windows Service

    It's not readily apparent how to install a Windows Service multiple times on a single machine. At fi ...

  7. Stochastic Multiple Choice Learning for Training Diverse Deep Ensembles

    作者提出的方法是Algotithm 2.简单来说就是,训练的时候,在几个模型中,选取预测最准确的(也就是loss最低的)模型进行权重更新.

  8. multiple instance of mac app

    一般情况下,mac系统上的应用程序只能启动一个实例,现在做项目,需要mac上同时启动多个实例,如何做呢,下面就说明完成这个功能的方法: 主要原理:利用 open -n Applications/XXX ...

  9. Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用

    摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...

随机推荐

  1. JAVA的关键特性

    Java团队对设计Java时的关键考虑因素进行了总结,关键特性包含以下列表: 简单性 安全性 可移植性 面向对象 健壮性 多线程 体系结构中立 解释执行 高性能 分布式 动态性 简单性 Java的设计 ...

  2. 3、ObjectARX开发创建直线、圆、圆弧和修改对象属性

    一.本节课程 Arx二次开发创建直线.圆.圆弧和修改对象属性 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建直线. 2.如何应用C++ ARX二次开发创建圆. 3.如何应用C++ AR ...

  3. (转)CentOS7系统信息及运行情况查看

    原文链接:https://blog.csdn.net/qq_42196196/article/details/85063911 系统信息 CPU信息 内存信息 显卡信息 硬盘信息 网络信息 用户信息 ...

  4. 使用tensorflow进行mnist数字识别【模型训练+预测+模型保存+模型恢复】

      import sys,os sys.path.append(os.pardir) import numpy as np from tensorflow.examples.tutorials.mni ...

  5. CHAPTER 24 History of Our Planet 第24章 我们行星的历史

    CHAPTER 24 History of Our Planet 第24章 我们行星的历史 Uncovering the bones of ancient beasts is only part of ...

  6. 分享一篇IBN(Intent-based networking)调研报告

    IBN调研报告 背景 SDN(Software-defined network):最大特点在于具有松耦合的控制平面与数据平面.支持集中化的网络状态控制.实现底层网络设施对上层应用的透明.具有灵活的软件 ...

  7. [T-ARA][느낌 아니까][懂得那份感觉]

    歌词来源:http://music.163.com/#/song?id=27808771 作曲 : 박덕상/박현중 [作曲 : p/bag-ddeog-ssang-/p/ba-Kyeon-c/jung ...

  8. Less 的用法

    1. node.js node.js是一个前端的框架 自带一个包管理工具npm node.js 的安装 官网:http://nodejs.cn/ 在命令行检验是否安装成功 切换到项目目录,初始化了一个 ...

  9. iOS 静态库生成(引用第三方SDK、开源库、资源包)

    一.静态库创建 打开Xcode, 选择File ----> New ---> Project  选择iOS ----> Framework & Library ---> ...

  10. PHP中的文件包含

    在PHP中,包含文件有两种方式:include和require.这两种方式的功能一样,只有一个区别,就是使用require包含一个文件时,如果出现错误,脚本不会继续执行:而如果使用include包含, ...