MIML(一):Fast Multi-Instance Multi-label learning

MIML(一):Fast Multi-Instance Multi-label learning

2014 AAAI 有代码


一、存在的问题

大多数MIML算法只能解决中等规模的问题,无法解决大规模的问题或者在解决大规模问题的时候需要大量的计算时间。

二、解决方法

提出了MIMLfast算法

三、MIMLfast算法概述

(1)构建一个由所有标签所共享的低维空间,将原始空间的数据映射到这个低维空间。
(2)在示例级别,基于这个共享空间,识别每个包中的关键示例用以表示包,使用SGD(随机梯度下降算法)优化排名损失,得到线性模型。
(3)训练过程中通过对复杂标签设置子概念的方法,减少标签语义性差异对算法产生的影响。

四、算法详解

X:包
x:示例
Y:标签集
l:一个标签
MIMLfast算法,在示例级别建立分类模型,通过示例级分类生成包标签。
基本假设:一个正包中至少有一个示例的标签为正,一个负包中所有示例的标签都为负,即这个包中得分最高的示例可以代表这个包。
在示例级别建立分类模型需要两个步骤:1. 学习从原始特征空间到被所有标签共享的低维空间的线性映射。2.基于共享空间建立线性模型。这两个部分交互优化,具体过程如下:
(1)线性函数的基本形式(示例的分类模型)
在这里插入图片描述
在这里插入图片描述

(2)标签的子概念
对于复杂标签可能有多种语义例如(苹果可以表示水果、电脑、手机。。),将复杂标签拆分成多个子概念,每个子概念一个模型,设置子概念个数为K,允许有空的子概念。
设对于标签l,有K个子概念,那么示例x在标签l上就有K个模型,K个预测值,取预测值最大的作为示例x在标签l上的预测值。
在这里插入图片描述

(3)包的分类模型
根据基本假设,包X在标签l上的预测值就是包X中所有示例x在标签l上预测值的最大值。而这个具有最大预测值的示例x就是包X的关键示例。
在这里插入图片描述

(4)排名损失
在这里插入图片描述

(5)排名损失的变形(没看明白)
根据公式(2)和公式(3)可得(这儿这种类似于y=y*x/x的操作,是因为左侧的那个损失他是对于X和l的函数,但是X和L在求和函数上面,所以在梯度下降的过程中要对其进行求导很困难,必须想办法对他做近似,让他变成一个常数或者更简单的表达,才能在后续的SGD中进行求导!)
在这里插入图片描述
别人的理解:
在这里插入图片描述

(6)利用随机梯度下降优化损失(SGD)
在这里插入图片描述

如果这个损失不为0,说明所选的不相关标签是违规标签(也就是预测值比较大)。
如果要最小化这个损失,那么在计算这个损失的时候,需要先知道R的值,但是每次都计算所有的R,计算量太大了,因此用近似值来对R进行估计。
R的估计:每次迭代中从不相关标签中随机抽取一个不相关标签,直到出现违规的标签,设第一个违规标签是第v次采样的结果,则
在这里插入图片描述

(7)算法伪代码
在这里插入图片描述

机器学习算法的训练基本过程:提出一个训练函数,形成从特征向量到输出标签结果之间的映射,初始化这个映射中的参数,使用特征、参数进行计算得到预测结果,使用损失函数和真实标签计算损失,然后根据参数更新准则更新参数再次及计算,直到损失满足要求。使用得到的参数值对测试集的特征向量进行测试。
算法输入:训练数据,m(共享空间的维度)、C(标签,训练的时候需要知道每个包X的相关标签集和不相关标签集)、K(子概念个数)、r(步长)
对参数进行初始化。
随机去一个包X及其一个相关标签y,根据初始化参数,计算这个包X及其相关标签y的关键示例x及其对应的子概念k,也就是可以得到包X对于标签y的预测值。
(计算损失)对于所有包X的不相关标签集中的标签,随机抽取,计算这个不相关标签在包X中的关键示例和对应的子概念,计算损失,如果损失不为0,使用SGD更新参数。
直到损失达到标准停止。
(8)预测
上述代码可以得出一个分类函数(具有最优参数),将测试数据包X输入,可以得到包X对于所有标签Y的预测值,但是如何根据预测值来划分相关标签和不相关标签呢?
划分方法:为每个包分配一个虚标签,在训练模型的时候,将虚标签放在所有不相关标签之前,所有相关标签之后,在进行采样的时候,先判断所选择的标签是不是虚标签,如果是虚标签,那么放在所有不相关标签之前,如果不是,那么不相关标签中还含有虚标签。
通过这种方法得到的分类模型,输入包X的示例特征后,可以得到一系列的标签值,只需要识别出虚标签即可将分类结果划分出来(所有大于虚标签预测值的都是这个包X的标签)。

五、实验

(1)数据集
在这里插入图片描述
(2)评价指标
hamming loss、one error、coverage、ranking loss、average precision

六、可能的思路来源

(1)Ando, R. K., and Zhang, T. 2005. A framework for learning predictive structures from multiple tasks and unlabeled data.The Journal of Machine Learning Research 6:1817–1853。从特征空间中学习子空间。(可能想到特征空间的映射)
(2)Ji, S.; Tang, L.; Yu, S.; and Ye, J. 2008. Extracting shared subspace for multi-label classification. In Proceedings of the 14th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 381–389.从特征空间学习子空间。
(3)Weston, J.; Bengio, S.; and Usunier, N. 2011. Wsabie: Scaling up to large vocabulary image annotation. In Proceedings of the 22nd International Joint Conference on Artificial Intelligence, 2764–2770.使用类似的技术来优化图像标注中的排名损失。(可能想到使用排名损失作为损失函数)
(4)Li, Y.-F.; Hu, J.-H.; Jiang, Y.; and Zhou, Z.-H. 2012. Towards discovering what patterns trigger what labels. In Proceedings of the 26th AAAI Conference on Artificial Intelligence, 1012–1018.提出了使用聚类为复杂的概念发现子概念的方法(可能想到利用子概念来降低标签语义的复杂性,提高分类准确率)
(5)Usunier, N.; Buffoni, D.; and Gallinari, P. 2009. Rankng with ordered weighted pairwise classification. In Proceedings of the 26th International Conference on Machine Learning, 1057–1064.排名损失。
(6)Ben-David, S.; Loker, D.; Srebro, N.; and Sridharan, K.2012. Minimizing the misclassification error rate using a surrogate convex loss. In Proceedings of the 29th International Conference on Machine Learning.铰链损失(解决非凸不连续损失函数求解问题)

七、感悟

(1)复杂标签子概念可以扩展到挺多应用中,能够减少标签语义性差异所带来的问题。
(2)模型比较简单,只用了线性模型,那么W所代表的由标签构成的共享的低维空间就显得比较重要,这个空间具体有哪些作用呢,用着个新的空间的原因是所么,是通过这个由标签构成的共享空间可以表达一定的标签之间的关系么?
(3)设置虚拟标签可能是一个不错的选择,进行多标签分类的时候
(4)使用铰链损失来代替原来的损失进行优化,是解决非凸不连续函数优化的一个办法。
(5)如果使用别的损失函数,考虑标签之间的关系、用非线性模型会达到所么效果?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值