MIML系列(一):Fast Multi-Instance Multi-Label Learning 快速多示例多标签学习
MIML系列(一):Fast Multi-Instance Multi-Label Learning 快速多示例多标签学习
目前的研究方向是基于MIML的,然而网上关于MIML的论文讲解有点少,因此打算自己看一些论文记录一下:
摘要
本篇论文主要是为了有效地处理大数据集而提出了MIMLfast方法,该方法首先构造所有标签共享的低维子空间,然后通过随机梯度下降法,对特定的线性模型进行排序,优化近似排序损失失。虽然MIML问题比较复杂,但是MIMLfast通过利用标签与共享空间的关系,发现复杂标签的子概念,可以获得很好的性能。此外,论文中的方法能够为每个标签识别最具代表性的实例,从而为理解输入模式和输出语义之间的关系提供了机会
介绍
MIMLSVM是将MIML问题退化为单实例多标签任务来解决。MIMLBoost则是将MIML退化到多实例单标签学习(这两个方法单独去看一下),但是这些方法通常是耗时的,并且不能处理大规模数据,因此极大地限制了MIML的应用。
本文提出了一种基于多实例多标签数据的MIMLfast快速学习方法,虽然使用了简单的线性模型来提高效率,但是MIMLfast提供了一个原始MIML问题的有效近似,具体来说,为了利用多个标签之间的关系,我们首先从原始特征中学习所有标签的共享空间,然后从共享空间中训练标签特定的线性模型,为了识别表示特定标签的包的关键实例,我们在实例级训练分类模型,然后选择具有最大预测的实例,为了使学习更有效率,我们使用随机梯度下降法(SGD)来优化近似的排名损失,在每次迭代中,MIMLfast随机抽取由一个袋子、一个袋子的相关标签和一个不相关标签组成的三元组作为样本,并且优化模型,如果排序是违反的(也就是与包不相关的标签的预测值大于相关标签预测值+1,1是marginmarginmargin),则将相关标签的排序在非相关标签前面,而大多数MIML方法的另一个重要任务是提高泛化能力,MIML的另一个任务是为了理解输入模式和输出语义之间的关系,MIMLfast可以自然地为每个标签识别最具代表性的实例。此外,我们建议发现复杂标签的子概念,它们经常出现在MIML任务中,此外,MIMLfast使用监督模型而不是启发式聚类来发现子概念
MIMLfast方法
我们用{(X1,Y1),(X2,Y2),⋅⋅⋅(Xn,Yn)}\{(X_{1},Y_{1}),(X_{2},Y_{2}), \cdot \cdot \cdot (X_{n},Y_{n})\}{(X1,Y1),(X2,Y2),⋅⋅⋅(Xn,Yn)}表示训练数据,其中包含nnn个例子,且每个包XiX_{i}Xi包含ziz_{i}zi个实例 {xi,1,xi,2,⋅⋅⋅xi,zi}\{x_{i,1},x_{i,2}, \cdot \cdot \cdot x_{i,z_{i}}\}{xi,1,xi,2,⋅⋅⋅xi,zi},且YiY_{i}Yi包含与包XiX_{i}Xi关联的标签,是所有可能的标签的子集{y1,y2,⋅⋅⋅yn}\{y_{1},y_{2},\cdot \cdot \cdot y_{n}\}{y1,y2,⋅⋅⋅yn}
1、示例级建立分类模型
我们首先讨论如何在实例级建立分类模型,然后尝试从实例预测中获得袋子的标签,要处理多个标签的问题,最简单的方法是通过独立地为每个标签训练一个模型,将其退化为一系列的单个标签问题,然而,这种退化的方法可能会丢失信息,因为模型是单独对待标签,将每个标签独立开来而忽略它们之间的关系。本文将模型表示为两个组件的组合,第一个组件学习 xxx从原始特征空间到低维空间的线性映射,所有标签都共享该映射(共享空间),然后,第二个组件根据共享空间学习标签特定的模型,这两个组件交互优化,以适应所有标签的训练示例, 这样,来自每个标签的示例将有助于共享空间的优化,相关标签将互相帮助。在形式上,给定一个实例xxx,我们将标签lll上的分类模型定义为:
fl(x)=wlTW0xf_{l}\left ( x\right )=w_{l}^{T}W_{0}xfl(x)=wlTW0x 在公式中W0W_{0}W0表示一个m×dm \times dm×d维的矩阵,是用来将原始特征向量映射到共享空间,wlw_{l}wl是标签lll的mmm维权重向量(维度:我们通常会说矩阵的维度,这里的维度也不是指的空间,而是指矩阵的行数),ddd和mmm分别是特征空间和共享空间的维数(ps:ps:ps:将每个实例从ddd维映射到mmm维, xxx为ddd维,则W0xW_{0} xW0x为mmm维,然后wlTw_{l}^{T}wlT为1∗m1*m1∗m,最终得到的fl(X)f_l (X)fl(X)为一个数字,也就是当前标签属于x的预测值)
多实例多标签学习任务中的对象通常具有复杂的语义;因此,内容不同的示例可能被赋予相同的标签。例如,一个标记为apple的图像的内容可以是移动电话、笔记本电脑或一个真正的苹果,因此训练一个单一的模型将内容如此不同的图像分类到同一类别是很困难的,相反,我们建议为一个复杂的标签学习多个模型,为每一个子概念学习一个模型,并自动决定一个例子属于哪个子概念,每个子概念的模型要简单得多,并且可以更容易地训练以适应数据,我们假设每一个标签有K个子概念,对于给定的标签为l的例子,首先检查K个模型的预测值,然后选择预测值最大的子概念,自动确定其所属的子概念,现在我们可以将实例x在标签l上的预测重新定义为:
wl,kw_{l,k}wl,k对应于标签lll的第kkk个子概念的权重(就像apple标签对应三个子概念:苹果,苹果电脑,苹果手机)。注意,虽然我们假设每个标签有K个子概念,但是允许有空的子概念,即,一个简单标签的例子可能只分布在几个甚至一个子概念中,属于标签的预测值也就是属于子概念中最大的预测值)
2、示例级模型获得包预测
我们看看如何从实例级模型中获得包的预测,通常假定一个包是正的,当且仅当它包含至少一个正的实例,在此假设下,袋子X在标签l上的预测(就是是否这个标签属于这个袋子)可以定义为袋子中所有实例预测的最大值:
我们将具有最大预测的实例称为标签lll上的XXX的关键实例,以上面的模型为例,对于一个包XXX和它的一个相关标签lll,我们定义了R(X,l)R(X,l)R(X,l):
Yˉ\bar{Y}Yˉ表示一组与XXX包不相关的标签,I[⋅]I[\cdot]I[⋅]是指示性函数,如果参数为真,则返回1,否则返回0,本质上来说,R(X,l)R(X,l)R(X,l)计算在袋子X上的标签l之前排列了多少个不相关的标签(也就是说,不属于这个包的标签的预测值大于属于这个包的标签的预测值,然后计算出来有多少个不相关的标签在l前面),可以进一步定义排序误差,是关于一个标签lll上的包XXX:
可以明显的看出,当标签lll的排名越靠后,则R(X,l)R(X,l)R(X,l)越大,则错误会越大,最终,我们可以获得整个数据集的排名错误:
基于公式(2),排序错误ϵ(X,l)ϵ(X,l)ϵ(X,l)可以被传播到所有不相关的标签Yˉ\bar{Y}Yˉ上:
这里我们使用约定0/0=00/0=00/0=0,如果R(X,l)=0R(X,l)=0R(X,l)=0,由于非凸性和不连续性,直接对上述方程进行优化是相当困难的,因为这种优化往往会导致np困难的问题,我们转而研究以下hingehingehinge损耗,它已被证明是所有凸替代损耗的最佳选择:
∣q∣+=max{q,0}|q|_{+}=max\{q,0\}∣q∣+=max{q,0},我们用边界1来惩罚R(X,l)R(X,l)R(X,l),也就是和超平面距离为1的线上面的点作为支持向量,在这里我们介绍一下∣1+fj(X)−fl(X)∣|1+f_{j}(X)-f_{l}(X)|∣1+fj(X)−fl(X)∣,我们可以知道,在hingehingehinge losslossloss当中,形式是l=max{0,1−f(x)}l=max\{0,1-f(x)\}l=max{0,1−f(x)},此处,fj(X)f_{j}(X)fj(X)是不相关标签预测值,fl(X)f_{l}(X)fl(X)是相关标签的预测值,如果我们设定margin=1margin=1margin=1,那么需要横坐标值越大越好,损失越小越好,那此时假设
loss=max{0,1+fj(X)−fl(X)}=max{0,1−(fl(X)−fj(X))}loss=max\{0,1+f_j (X)-f_l (X)\}=max\{0,1-(f_l (X)-f_j (X))\}loss=max{0,1+fj(X)−fl(X)}=max{0,1−(fl(X)−fj(X))} 那横坐标为(fl(X)−fj(X))(f_l (X)-f_j (X))(fl(X)−fj(X)),也就是说相关标签的预测值-非相关标签的预测值应该越大越好,当fl(X)−fj(X)<0f_l (X)-f_j (X)<0fl(X)−fj(X)<0时,此时相关标签预测值比非相关标签预测值小,此时分类有误;当0<fl(X)−fj(X)<10<f_l (X)-f_j (X)<10<fl(X)−fj(X)<1时,则能够分好类了,但是此时losslossloss值在(0,1)(0,1)(0,1)之间,因此会进行惩罚;而当fl(X)−fj(X)=1f_l (X)-f_j (X)=1fl(X)−fj(X)=1时,此时losslossloss达到最小,分类就很好了,但是不鼓励分类器分的太好,也就是说,当fl(X)−fj(X)>1f_l (X)-f_j (X)>1fl(X)−fj(X)>1时,则相关标签的预测值超过不相关的标签预测值很远,但是此时没必要关注那些离超平面很远的样本,为此,我们可以通过对距分离超平面的距离选择一个阈值,来过滤这些离超平面很远的样本,这样目的在于使分类器更专注于整体的分类误差,最终可以让与包X相关的标签和不相关的标签用超平面分离开来,1就是阈值,也就是超平面和最近的点的距离
则对R(X,l)R(X,l)R(X,l)重新定义为:
此时只有当不相关标签的预测值大于1+相关标签的预测值,也就是说真实标签的预测值和不相关标签的预测值在1之内则算是误差,在1之外则算进去,显然,Eq. 5是Eq. 4的一个上界,(因为hingehingehinge losslossloss只有marginmarginmargin取1时正好是上界)
3、使用SGD最小化排名误差
我们使用随机梯度下降法(SGD)来最小化排名误差,(SGD 一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本),在每一次迭代中,随机获得一个三元组 (X,y,yˉ)(X,y,\bar{y})(X,y,yˉ),包括一个包,与其相关的标签和不相关的标签,从而产生一个损失:
如果yˉ\bar{y}yˉ造成了一个非0的损失,则称此标签为违反标签,也就是说,查看此fy(X)f_{y}(X)fy(X)是否小于1+fyˉ(X)f_{\bar{y}}(X)fyˉ(X),如果小于,此时就成为违反标签了,在R(X,y)>0R(X,y)>0R(X,y)>0的情况下(也就是一定有不相关的标签在相关标签排序之前),排除来自Yˉ\bar{Y}Yˉ的不相关不违反标签(不会造成损失),随机选择一个违背的无关标签yˉ\bar{y}yˉ的概率是1/R(X,y)1/R(X,y)1/R(X,y) ,因为只有违反标签才算进 ,这样Ψ(X,y)\Psi (X,y)Ψ(X,y)能够被看成是 L(X,y,(ˉy))L(X,y,\bar(y))L(X,y,(ˉy))的期望:
为了最小化 L(X,y,(ˉy))L(X,y,\bar(y))L(X,y,(ˉy)) ,需要提前计算R(X,y)R(X,y)R(X,y),我们需要对每一个yˉϵ(Yˉ)\bar{y}\epsilon(\bar{Y})yˉϵ(Yˉ),也就是对每一个非相关标签,计算其预测值fyˉ(X)f_{\bar{y}}(X)fyˉ(X)以及相关标签预测值fy(X)f_{y}(X)fy(X) ,然而,当可能的标签数量很大时,这可能会很耗时,因此我们采用近似法来估计R(X,y)R(X,y)R(X,y),具体来说,在每一个SGD的迭代中,我们从不相关的标签集合Yˉ\bar{Y}Yˉ中随机抽取一个标签,直到一个违反标签yˉ\bar{y}yˉ的出现,在不失一般性的前提下,我们假设第一个违反的标签是在第v个采样步骤中发现的,此时R(X,y)R(X,y)R(X,y)可以被近似成 ⌊∣Yˉ/v∣⌋\left \lfloor |\bar{Y}/v|\right \rfloor⌊∣Yˉ/v∣⌋(意思是说,如果是第v次,那么很可能里面有的违规标签的个数为总个数/v 下采样),我们假设在第ttt次迭代中三元组 ,在标签yyy上,关键实例为xxx,并且在在第kkk个子概念上达到最大预测值,并且在标签yˉ\bar{y}yˉ上,实例xˉ\bar{x}xˉ在第kkk个子概念上获得最大预测值,这样我们则可以对三元组进行近似值排名损失:
为了便于表述,在这里我们介绍
如果抽取到一个违反标签yˉ\bar{y}yˉ,我们对这三个参数进行梯度下降:
其中γt\gamma_{t}γt是SGD的步长,参数更新后,wy,k,wyˉ,kˉw_{y,k},w_{\bar{y},\bar{k}}wy,k,wyˉ,kˉ和W0W_{0}W0的每一列,被标准化为L2模,且小于常数C
在算法1中给出了MIMLfast的伪代码,首先,所有标签lll和所有子概念kkk的W0W_{0}W0和wlkw_{l}^{k}wlk的每一列都是随机初始化的,均值为0,标准差为 1/d1/\sqrt{d }1/d,然后在SGD的每次迭代中,随机抽取一个三元组(X,y,yˉ)(X,y,\bar{y})(X,y,yˉ) ,识别其对应的关键实例和子概念,然后进行梯度下降,更新三个参数:根据公式7到9中的wy,k,wyˉ,kˉw_{y,k},w_{\bar{y},\bar{k}}wy,k,wyˉ,kˉ和W0W_{0}W0 ,最后对更新后的参数进行归一化,使得它们的范数是C的上界,重复此过程,直到达到停止条件。在我们的实验中,我们从训练数据中抽取一个小的验证集作为样本,一旦验证集上的排名损失没有减少,我们就停止训练,我们在一份技术报告中提出了一些关于算法收敛性的理论结果,同时,我们也将这一技术用于多标签主动学习
算法介绍:首先输入训练数据、参数,然后在训练的过程中先初始化权重,然后随机选取一个包和一个与其相关的标签,并且挑选出关键实例和子概念,接着查找每一个不相关标签,并选出其关键实例和子概念,如果预测值>相关标签预测值+1,则此标签为违反标签,此时用SGD进行参数更新并且归一化,
在算法的测试阶段,对于一个包XtestX_{test}Xtest,我们可以得到每个标签的预测值,从而得到所有标签的排名, 对于单标签分类问题,可以通过选择预测值最大的标签来获得XtestX_{test}Xtest的标签。然而,在多标签学习中,包XtestX_{test}Xtest可以有多个标签;因此,人们不知道排名的标签列表中应该选择多少个与包相关的标签, 为了解决这个问题,我们给每个袋子分配一个虚拟标签,用y ̂表示,并训练模型将虚拟标签排在所有不相关的标签之前,排在相关的标签之后, 为了实现这一思想,我们特别考虑构造不相关的标签集Yˉ\bar{Y}Yˉ,具体来说,当一个包XXX和它的标签yyy被抽取时,算法首先检查yyy是否为虚拟标签也就是y=y^y=\hat{y}y=y^,如果yy=y^y=\hat{y}y=y^,那么Yˉ\bar{Y}Yˉ包含所有不相关的标签,这意味着yyy(虚拟标签)将排在所有不相关的标签之前,否则Yˉ\bar{Y}Yˉ既包含了虚拟标签,又包含了所有不相关的标签,这意味着相关的标签yyy会排在虚拟标签和不相关标签之前,通过这种方式,对模型进行训练,将虚拟标签在相关标签和不相关标签之间进行排序。对于一个测试包,在虚拟标签之前的标签被选为相关的标签。
结论
MIML是一个学习复杂对象的框架,在许多应用中被证明是有效的。然而,现有的MIML方法在处理大规模问题时通常过于耗时。在本文中,我们提出了一种利用MIML实例快速学习的MIMLfast方法。一方面,基于两层线性模型,采用SGD对近似排序损失进行优化,有效地提高了排序效率;另一方面,通过在共享空间中利用标签关系,发现复杂标签的子概念来实现有效性。此外,MIMLfast可以检测每个标签的键实例,从而有机会发现输入模式和输出标签语义之间的关系。在未来,我们会尽量优化其他的lossfunctionloss functionlossfunction,而不是ranklossrank lossrankloss。此外,更大规模的问题和非线性模型将被研究
MIML系列(一):Fast Multi-Instance Multi-Label Learning 快速多示例多标签学习相关推荐
- 多示例多标签学习(MIML系列文章总结)
从入学以来就一直调研图像标注相关文章.调研发现,传统的监督学习中,一个图像区域以一个instance(示例)呈现,并仅关联于一个label(标签).很多图像多标签标注的方法是通过将图像进行物体分割(o ...
- 论文翻译 —— Disambiguation-Free Partial Label Learning 非消歧偏标记学习(PL-ECOC)
标题:Disambiguation-Free Partial Label Learning 文章链接:http://aaai.org/ocs/index.php/AAAI/AAAI17/paper/v ...
- activiti串行多实例报错Could not execute inner activity behavior of multi instance behavior解决办法
如你报的是这个错误.你看到的是Could not execute inner activity behavior of multi instance behavior.你先去看看你的流程图,他这个报错 ...
- 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述
概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...
- 【STL】rb_tree (multi)set (multi)map
rb_tree rb_tree源码实现 G2.9版本的rb_tree源码 rb_tree底层实现红黑树,其示意图和代码如下: 4个需要注意的模板参数:Key,Value,KeyOfValue,Comp ...
- 综述系列 | 多标签学习的新趋势
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 随着Deep learning领域的不断发展,我们面对的问题 ...
- 【RTX3060(暗夜精灵)等系列显卡正确配置Pytorch及其对于cuda和cudann版本的深度学习环境(避免由于版本不适应导致重装)】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 RTX3060(暗夜精灵)等系列显卡正确配置Pytorch及其对于cuda和cudann版本的深度学习环境(避免由于版本不适应导致重装 ...
- 【转载】ddr3参数-内存系列一:快速读懂内存条标签
内存系列一:快速读懂内存条标签 内存是我们平常接触最频繁的计算机硬件之一,内存的大小.多寡和型号和我们计算机.手机等性能密切相关.内存系列计划通过三篇文章由浅入深介绍内存的软硬件特性以及与固件的关系. ...
- 三菱FX5U系列PLC之间进行UDP以太网通信的具体方法示例详解(二)
三菱FX5U系列PLC之间进行UDP以太网通信的具体方法示例详解(二) 假设有A.B两个FX5U系列的PLC要进行UDP以太网通信,进行数据交互. 上次和大家分享了两台FX5U系列PLC进行UDP以太 ...
最新文章
- 为DropDownList 添加optgroup分组以及为ListItem 加式样
- 李志飞:想在中国复制 Echo 的成功,肯定都不靠谱
- Python编程基础:第十三节 循环控制语句Loop Control Statements
- LSGO软件技术团队内部技术交流【2015-2016(1)第七周】
- 每天2分钟,10个简单方法改变你的生活
- 谁说贾跃亭不还钱?人家已偿还超30亿美元的国内债务
- MySQL可以生成E-R图嘛_使用Navicat for mysql生成E-R图,添加外键约束
- Pandas 求余运算
- easyUI+servlet+mysql项目总结
- 更改Cygwin的主机名,改WINDOWS的计算机名即可
- win11系统下安装java 8的教程
- keras-迁移学习-resnet101-踩过的坑
- 【转】计算机网络之域名、主机名、IP地址和URL
- 抖音实战~实现App端视频上传、发布、落库
- Java工程师是做什么的 岗位职责都有哪些
- 干货!史上最全Java进阶好书清单来了!
- 树莓派的linux操作系统,树莓派的6种轻量级操作系统介绍
- 华南师范大学计算机学院联系方式,华南师范大学计算机学院导师介绍:曾碧卿...
- mac搜不到Android模拟器,听不到声音Android模拟器Mac
- 随机过程4-宽平稳过程,严平稳过程的定义和判定