@article{XiuShenWei2017ScalableAF,
title={Scalable Algorithms for Multi-Instance Learning},
author={Xiu-Shen Wei and Jianxin Wu and Zhi-Hua Zhou},
journal={IEEE Transactions on Neural Networks},
year={2017}
}
当前大多数的多示例学习算法只能处理小型或中型规模的数据,为了能够处理大规模数据的多示例学习问题,本文提出了基于局部聚合描述符向量表示的多示例学习算法miVLAD以及基于Fisher向量表示的多示例学习算法miFV。这两个算法通过相应的映射函数将包映射为新的向量,并且保留了重要的包级信息。
实验表明,miVLAD与miFV不仅实现了高准确率,而且提高了执行速度。
现有的多示例学习算法:
(1)基于密度的算法,如:Diverse Density与EM-DD;
(2)基于KNN的算法:如citation-kNN与Bayesian-kNN;
(3)基于SVM的算法:如miSVM与MISVM;
(4)基于集成的算法:如MIBoosting;
(5)将多示例转换为单实例的算法:如MIWrapper与MILES;
(6)基于距离的算法:如MIMEL;
(7)基于核函数的算法:如miGraph。
这些算法有着不错的准确率,但大多数算法只能处理小型或中等规模的数据。现有的算法无法处理大规模的多示例数据。
VLAD与FV都是计算机视觉中的方法。从给定图像数据中提取一系列的描述符(向量),VLAD与FV能够将这些向量编码为高维度向量。然后,将包级的向量利用SVM来训练分类器。
在VLAD与FV中,图片被表示为一组局部块,每一块都是图片的一小部分。这种表示方式与MIL中包的表示方式有一定的关联,但又不同。
不同之处在于:MIL中每个实例是包中的一小部分,且带有标签;但在VLAD与FV的表示方式中,每一个图片局部块并没有其意义。如:一张标记为建筑物的图片中,从中提取的局部块并不会被视为建筑物。
首先,从所有的训练包集中提取出所有实例 x ⋅ j x_{·j} x⋅j。然后,将所有实例通过k-means算法分成 K K K个中心 C = { c 1 , . . . , c k , . . . , c K } C=\left \{ c_{1},...,c_{k},...,c_{K} \right \} C={c1,...,ck,...,cK}以及 K K K个簇。每一个实例 x i j x_{ij} xij都隶属于其距离最近的中心 c k = N N ( x i j ) c_{k}=NN(x_{ij}) ck=NN(xij)。
聚类完成后,就基于这 K K K个簇,利用差值计算和拼接的方法将每个包 X i X_{i} Xi映射为特征向量 v i v_{i} vi,映射方法是将包中每个实例与每个中心的差异累加起来 x i − c k x_{i}-c_{k} xi−ck,其中实例 x i x_{i} xi属于包 X i X_{i} Xi且隶属于 c k c_{k} ck簇。
这种映射函数将 K K K维差异体现在特征向量 v i v_{i} vi来表示一个包 X i X_{i} Xi。
v i k l = ∑ x i j ∈ Ω x i j l − c k l (1) v_{ikl}=\sum_{x_{ij}∈Ω}x_{ijl}-c_{kl}\tag{1} vikl=xij∈Ω∑xijl−ckl(1)
其中, Ω = { x i j ∣ N N ( x i j ) = c k } Ω=\left \{ x_{ij}|NN(x_{ij})=c_{k} \right \} Ω={xij∣NN(xij)=ck}, v i k l v_{ikl} vikl表示第 i i i个包的第 j j j个实例的第 l l l维属性值。
得到 v i v_{i} vi后,我们再用下面这个公式对 v i v_{i} vi中的每一个值进行处理:
v i ⋅ l = s i g n ( v i ⋅ l ) ∣ v i ⋅ l ∣ (2) v_{i·l}=sign(v_{i·l})\sqrt{|v_{i·l}|}\tag{2} vi⋅l=sign(vi⋅l)∣vi⋅l∣(2)
再对 v i v_{i} vi进行二范式处理:
v i = v i ∥ v i ∥ 2 (3) v_{i}=\frac{v_{i}}{\|v_{i}\|_{2}}\tag{3} vi=∥vi∥2vi(3)
最后,我们将 ( v i , y i ) (v_{i},y_{i}) (vi,yi)放入标准监督学习模型(如:SVM)中进行学习并进行包级别的预测。