论文阅读 (二):Multi-instance learning with key instance shift (2017)

前言

  这几天读ISK那篇文章把人伤着了,o( ̄ヘ ̄o#)
鸭梨山大
  先找一篇看起来要简单些的论文看看,论文地址如下:
  https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/ijcai17miki.pdf

摘要

  熟悉的话语。。周老师这篇文章属于标准多示例,即一个包中的实例至少有一个拥有某类标签,则该包属于该类。特别的,对于二分类数据集,如果一个包包含至少一个正实例,则该包为正,反之为负。这个正实例也叫做关键 (key)实例,毕竟它叫“啥”,这个包就得叫“啥”。以往的大佬们大都假设训练数据和测试数据同一分布,现实里可不一定行哦ㄟ( ▔, ▔ )ㄏ,所有,“我们”就来解决关键实例在测试与训练阶段的分布变化问题。取个名字,就叫关键实例位移 (key instance shift)问题吧,注意instance没有加s,初步推测每个包最多一个。整个问题流程的名字就叫MIKI,是一种基于嵌套 (embedding)的方法。具体的步骤如下:

  1. 将包转换为向量,这个就和ISK的解决方式类似了,即将多示例转换为单示例问题解决,提出了一种加权多类模型 (weighted multi-class model),以选择具有高positiveness score(积极性?正面性?暂且叫“正分”吧)的实例作为实例原型;
  2. 对转换后的包向量 (bag vectors)重要性权重 (importance weights)进行学习,再将原型实例权重融合,以缩小测试、训练分布之间的差距;
  3. 实验证明“我们”牛逼。

1 引入

  部分要点摘要中已经提及,这里只说明新增的部分:

  1. 包标签已知,实例标签未知。
  2. 在不同时间、地点或者标记代价下训练集和测试集的收集会出现分布差异。以文本数据 (text categorization)为例:
    2.1 训练/测试集收集于2012/2016,年,需要判断文字是否与sport有关;
    2.2 与训练数据相比,测试数据中关于“Kobe Bryant”的文字可能更少,而关于“Stephen Curry”的文字更多;
    2.3 包含“Kobe Bryant”以及“Stephen Curry”的字段可以被视为关键实例;
    2.4 这种情况下,因为收集时间的差异,训练、测试阶段的关键实例分布就会有差异。
  3. MIKI采用基于manner的嵌入方法1,通过嵌入将包转换为实例。
  4. 通过对包级别 (bag-level)信合和关键实例位移信息编码,以此选择原型实例。

2 MIL of key instance shift

2.1 问题陈述和符号

  以下给出符号表:

符号 意义
X = R d \mathcal{X = \mathbb{R}^d} 实例空间
Y = { 1 , + 1 } \mathcal{Y} = \{ -1, +1 \} 标签空间
B t r = { ( X 1 t r , y 1 t r ) , , ( X i t r , y i t r ) , , ( X m t r , y m t r ) } \mathcal{B}_{tr} =\{ (X^{tr}_1, y^{tr}_1), \dots, (X^{tr}_i, y^{tr}_i), \dots, (X^{tr}_m, y^{tr}_m)\} 给定大小 m m 的训练集
m m 数据集大小
X i = { x i 1 , , x i j , , x i n i } X_i = \{ x_{i1}, \dots, x_{ij}, \dots, x_{in_i} \} , where x i j X x_{ij} \in \mathcal{X}
n i n_i 包大小
B t e = { X 1 t e , , X n t e } \mathcal{B}_{te} = \{ {X_1^{te}}, \dots, X_n^{te} \} 给定大小 n n 的测试集
P ( ) P ( \cdot) 分布
x x_* 关键实例
D = { x 1 t r , x p t r , x 1 t e , x q t e } \mathcal{D} = \{ x_{*1}^{tr}, \dots x_{*p}^{tr}, x_{*1}^{te}, \dots x_{*q}^{te} \} 实例原型
V t r \mathcal{V}_{tr} 训练包映射向量
V t e \mathcal{V}_{te} 测试包映射向量
W = { W 1 , , W m } W = \{ W_1, \dots, W_m \} 训练包权重
{ w 11 , , w 1 n 1 , , w m 1 , , w m n m } \{ w_{11}, \dots, w_{1n_1}, \dots, w_{m1}, \dots, w_{mn_m} \} 训练实例权重
M \mathcal{M} 最终模型

  在关键实例位移问题中,训练和测试阶段的关键实例分布是不同的,即 P ( x t r ) P ( x t e ) P (x_*^{tr}) \neq P (x_*^{te}) 。周老师这篇文章便着力于transductive setting (转换?映射?):
  给定 B t r \mathcal{B}_{tr} B t e \mathcal{B}_{te} ,满足 P ( x t r ) P ( x t e ) P (x_*^{tr}) \neq P (x_*^{te}) ,目标是习得这种映射 f f 2 X Y 2^{\mathcal{X}} \rightarrow \mathcal{Y} ,使其能够在测试集上表现good。

2.2 MIKI

  MIKI的步骤如图1:

  1. 假设正实例属于不同的子概念 (sub-concepts),关键实例位移可以落在其中任何一个上;
  2. 假设子概念和负概念一共 K K 个,建立 K + 1 K + 1 类模型将其区分;
  3. 如果一个实例属于任意一个子概念,即“得分高”,则有很高的概率被认为是关键实例候选。因此,不同的位移 (shift)信息将会被捕获;
  4. 为降低关键实例位移的影响,引入实例权重来平衡不同分布,因此关键实例选择时就能包含更多的关键实例以及关键实例位移的信息;
  5. 获得包映射向量后,通过权重学习来减小训练和测试分布之间的差距;
  6. 如果一个实例很重要,其所属的包也应该被评估,再进一步将原型实例的权重合并到转换后训练包向量的权重中;
  7. 最终的模型将从训练包向量权重和训练包之间习得。

在这里插入图片描述

图1:MIKI流程图

2.2.1 实例原型学习

  在实例原型学习阶段,使用迭代来建立多类模型并优化并选择的关键实例候选,即算法1
  具体的,在迭代中,对 K K 个正示例子概念与负概念训练权重 K + 1 K + 1 类模型 M D \mathcal{M}_D 。如果一个属于任意子概念的实例具有高得分,将被看做高正性 (high positiveness),其被定义为实例 x i j x_{ij} 属于第 k k 类的概率,即 P r i j k {Pr}_{ij}^k 。相应的,每个实例 x i j x_{ij} 的正分计算如下:
S i j = max k { 1 , , K } ( P r i j k P r i j 0 ) . (1) S_{ij} = \max_{k \in \{ 1, \dots, K \}} ({Pr}_{ij}^k - {Pr}_{ij}^0). \tag{1}
  算法2展示了模型 M D \mathcal{M}_D 学习的细节:
  1)使用kMeans对正包中的所有实例进行聚类,并初始化他们的标签为所属簇数,例如聚类成了2簇,那么一簇标签为0,另一簇则为1;负包中所有实例的标签设为0;
  2)带有权重的实例与相应标签用于训练多类SVM模型 M \mathcal{M}
  3)给定一个实例 x i j x_{ij} ,模型将输出 P r i j k {Pr}_{ij}^k
  4)每一个正包的标签将更新为:
y i j = arg max k { 0 , 1 , , K } P r i j k (2) y_{ij} = \argmax_{k \in \{0, 1, \dots, K \}} {Pr}_{ij}^k \tag{2}

扫描二维码关注公众号,回复: 11176777 查看本文章

  伸个懒腰ヾ(´∀`o)+ヾ(´ ・ω・`)ノ
在这里插入图片描述
  5)言归正传,负包的标签将不会改变。对于每一个正包 X i X_i ,如果其中所有的实例标签为负,则其中正分最高的实例 x i p x_{ip} 的标签将会调整为:
y i p = arg max k { 1 , , K } P r i p k (3) y_{ip} = \argmax_{k \in \{1, \dots, K \}} {Pr}_{ip}^k \tag{3}   这将保证每个正包中至少拥有一个正实例。这个过程将一直进行,知道没有标签改变或者达到最大迭代次数,最终输出模型 M D \mathcal{M}_D

  一旦获得模型 M D \mathcal{M}_D ,就能为每个实例计算“正分” S i j S_{ij} 以及选取关键实例候选。
  特别的,令 S θ t r ( S θ t e ) S_{\theta}^{tr} (S_{\theta}^{te} ) 表示具有最高得分的 n θ t r n θ t e n_\theta^{tr} (n_\theta^{te}) 个训练 (测试)实例,然后将所有实例按照如下划分为关键实例候选和负实例候选:
C p t r = { x i j S i j S θ t r , x i j B t r } , C n t r = { x i j S i j < S θ t r , x i j B t r } , C p t e = { x i j S i j S θ t e , x i j B t e } , C n t e = { x i j S i j < S θ t e , x i j B t e } . (4) \begin{matrix} C_p^{tr} = \big\{ x_{ij} | S_{ij} \geq S_{\theta}^{tr}, x_{ij} \in \mathcal{B}_{tr} \},\\ C_n^{tr} = \{ x_{ij} | S_{ij} < S_{\theta}^{tr}, x_{ij} \in \mathcal{B}_{tr} \},\\ C_p^{te} = \{ x_{ij} | S_{ij} \geq S_{\theta}^{te}, x_{ij} \in \mathcal{B}_{te} \},\\ C_n^{te} = \{ x_{ij} | S_{ij} < S_{\theta}^{te}, x_{ij} \in \mathcal{B}_{te} \}.\\ \end{matrix} \tag{4} C p t r ( C p t e ) C_p^{tr} (C_p^{te}) 即关键实例 (负实例)候选,其将携带更多的关键实例位移信息。
  划分之后,使用 C p t e ( C n t e ) C_p^{te} (C_n^{te}) C p t r ( C n t r ) C_p^{tr} (C_n^{tr}) 的权重进行再评估,因此所有训练实例的权重均更新。模型训练与该过程交替进行,直至达到最大迭代次数。此时的 C p t r C p t e C_p^{tr} \cup C_p^{te} 将被作为原型实例 D \mathcal{D} 输出。这里具体怎么更新原文没有说明 ( ´・・)ノ(._.`) (坑1),不过周老师提供了原代码,先撸一遍,再来实现。
  有了 D \mathcal{D} ,包 X i X_i 将被映射为 n θ t r + n θ t e n_{\theta}^{tr} + n_{\theta}^{te} 维的实例 v i v_i ,其第 j j 个属性 v i j v_{ij} 计算如下:
v i j = max x i k X i exp ( γ x i k D j 2 ) , (5) v_{ij} = \max_{x_{ik} \in X_i} \exp (- \gamma || x_{ik} - D_j ||^2), \tag{5} 其中 D j D_j D \mathcal{D} 中的第 j j 项。这种新的表示保留了包级别和关键实例位移的信息。

算法1:MIKI实例原型选择

  输入:训练包 B t r \mathcal{B}_{tr} ,测试包 B t e \mathcal{B}_{te} ,实例原型参数 n θ t r n_{\theta}^{tr} n θ t e n_{\theta}^{te}
  输出:实例原型集 D \mathcal{D}
  1:初始化训练实例权重 w w
  2:重复
  3:  通过算法2训练多类模型 M D \mathcal{M}_D
  4:  通过公式1为所有实例计算正分;
  5:  通过公式4将所有实例划分为: C p t r , C n t r , C p t e , C n t e C_p^{tr}, C_n^{tr}, C_p^{te}, C_n^{te}
  6:  再评估 C p t r ( C n t r ) C_p^{tr} (C_n^{tr}) 中的实例以近似 ( approximate) C p t e ( C n t e ) C_p^{te} ( C_n^{te}) 中的实例;
  7:直至达到最大迭代次数
  8:输出 D = C p t r C p t e \mathcal{D} = C_p^{tr} \cup C_p^{te}

算法1:多类模型 M D \mathcal{M}_D 学习算法
  输入:训练包 B t r \mathcal{B}_{tr} ,训练实例权重 w w ,聚类簇数 K K
  输出:多类模型 M D \mathcal{M}_D
  1:初始化训练实例标签。
  2:重复
  3:  基于训练实例权重训练多类模型 M \mathcal{M}
  4:  根据公式2对实例标签中属于正包的实例标签进行更新;
  5:  对于每一个正包,如果其中所有的实例都标记为负,则根据公式3选择最“正”的那个并调整其标签;
  6:直至没有标签改变或者达到最大迭代次数
  7:输出最终模型 M D \mathcal{M}_D

2.2.2 权重学习

  该部分介绍转换后向量权重学习的细节:

  1. 给定带有密度 p t r ( v ) p_{tr} (v) (坑2)的训练向量 { v i t r } i = 1 m \{v_i^{tr} \}_{i = 1}^{m} 以前带有密度 p t e ( v ) p_{te} (v) 的测试向量 { v i t e } i = 1 n \{v_i^{te} \}_{i = 1}^{n} ,“我们”想要评估所有训练向量的权重 w ( v ) = p t e ( v ) / p t r ( v ) w (v) = p_{te} (v) / p_{tr} (v) ,且采用以下线性模型2
    w ^ ( v ) = l = 1 b α l φ l ( v ) , (6) \hat{w} (v) = \sum_{l = 1}^{b} \alpha_l \varphi_l (v), \tag{6} 其中 α = { α 1 , , α b } T \mathbf{\alpha} = \{ \alpha_1, \dots, \alpha_b \}^T (坑3)是习得参数, { φ l ( v ) } l = 1 b \{ \varphi_l (v) \}^b_{l = 1} 是对于所有的 v v l l 均满足 φ l ( v ) 0 \varphi_l (v) \geq 0 ,这里选择为高斯核。
  2. 评估参数 { α l } l = 1 b \{ \alpha_l \}^b_{l = 1} 使得 w ^ ( v ) \hat{w} (v) 尽可能接近 w ( v ) w (v) ,这里为最小化均方误差:
    L 0 ( v ) = 1 2 ( w ^ ( v ) w ( v ) ) 2 p t r ( v ) d v = 1 2 ( w ^ ( v ) 2 p t r ( v ) 2 w ^ ( v ) w ( v ) p t r ( v ) + w ( v ) 2 p t r ( v ) ) d v , (7) L_0 (v) = \frac{1}{2} \int (\hat{w} (v) - w (v))^2 p_{tr} (v) dv\\ = \frac{1}{2} \int ( \hat{w} (v)^2 p_{tr} (v) - 2 \hat{w} (v) w (v) p_{tr} (v) + w (v)^2 p_{tr} (v)) dv, \tag{7} 上式的最后一项为常数,可以忽略,且有 p t e ( v ) = w ( v ) p t r ( v ) p_{te} (v) = w (v) p_{tr} (v) 则:
    L ( v ) = 1 2 w ^ ( v ) 2 p t r ( v ) d v w ^ ( v ) p t e ( v ) = 1 2 l , l = 1 b α l α l ( φ l ( v ) φ l ( v ) p t r ( v ) d v ) l = 1 b α l ( φ l ( v ) p t e ( v ) d v ) . (8) L (v) = \frac{1}{2} \int \hat{w} (v)^2 p_{tr} (v) dv - \int \hat{w} (v) p_{te} (v)\\ = \frac{1}{2} \sum_{l, l' = 1}^{b} \alpha_l \alpha_{l'} (\int \varphi_l (v) \varphi_{l'} (v) p_{tr} (v) dv) - \sum_{l = 1}^{b} \alpha_l (\int \varphi_l (v) p_{te} (v) dv). \tag{8}
  3. 通过经验值近似 L ( v ) L (v) ,即:
    L ^ ( v ) = 1 2 l , l = 1 b α l α l ( 1 m i = 1 m φ l ( v i t r ) φ l ( v i t r ) ) l = 1 b α l ( 1 n i = 1 n φ l ( v i t e ) ) = 1 2 α T H ^ α h ^ T α , (9) \hat{L} (v) = \frac{1}{2} \sum_{l, l' = 1}^{b} \alpha_l \alpha_{l'} (\frac{1}{m} \sum_{i = 1}^{m} \varphi_l (v_i^{tr}) \varphi_{l'} (v_i^{tr})) - \sum_{l = 1}^{b} \alpha_l (\frac{1}{n} \sum_{i = 1}^{n} \varphi_l (v_i^{te}))\\ = \frac{1}{2} \alpha^T \hat{H} \alpha - \hat{h}^T \alpha, \tag{9} 其中 H ^ \hat{H} b × b b \times b 的矩阵,第 ( l , l ) (l, l') 号元素 H ^ l , l = 1 m i = 1 m φ l ( v i t r ) φ l ( v i t r ) \hat{H}_{l, l'} =\frac{1}{m} \sum_{i = 1}^{m} \varphi_l (v_i^{tr}) \varphi_{l'} (v_i^{tr}) h ^ \hat{h} b b 维向量,第 l l 号元素 h ^ l = 1 n i = 1 n φ l ( v i t e ) \hat{h}_l = \frac{1}{n} \sum_{i = 1}^{n} \varphi_l (v_i^{te})
  4. 基于公式9,可以得到以下优化问题:
    min α R b [ 1 2 α T H ^ α h ^ T α + λ 2 α T α ] . (10) \min_{\alpha \in \mathbb{R}^b} [ \frac{1}{2} \alpha^T \hat{H} \alpha - \hat{h}^T \alpha + \frac{\lambda}{2} \alpha^T \alpha]. \tag{10} 公式10是无约束凸二次规划 (unconstrained convex quadratic program),可解析为 α = ( H ^ + λ I b ) 1 h ^ \alpha = {(\hat{H} + \lambda I_b)}^{-1} \hat{h} ,其中 I b I_b b b 维单位矩阵 ( identity matrix),由此可以轻松的获得训练样本的权重 (坑2、坑3被解决,然鹅理解起来还是不容易。。)
  5. 基于上述方法,将获得每一个训练向量的权重,定义为 M 0 M^0 。然后,如果一个包包含一个需要评估的实例,该包也应该被评估。因此,实例的权重需要合并到转换后的包的权重之中。具体的,对于训练包 X i t r X_i^{tr} 、包权重 W i 0 W_i^0 、相应的实例 v i t r v_i^{tr} 以及实例权重 { w i j } j = 1 n i \{ w_{ij}\}_{j = 1}^{n_i} v i t r v_i^{tr} 最终的权重被设置为:
    W i = max j { 1 , , n i } w i j W i 0 . (11) W_i = \max_{j \in \{ 1, \dots, n_i \}} w_{ij} \cdot W_i^0. \tag{11}
  6. 使用训练包转换后的向量及相应的权重来构建分类模型,再对测试包转换后的向量进行分类。

3 具体实现

  待续。。。


  1. Y. Chen, J. Bi, and J. Z. Wang. MILES: Multiple-instance learning via embedded instance selection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 28(12):1931–1947, 2006. ↩︎

  2. T. Kanamori, S. Hido, and M. Sugiyama. A least-squares approach to direct importance estimation. Journal of Machine Learning Research, 10:1391–1445, 2009. ↩︎

原创文章 35 获赞 44 访问量 8622

猜你喜欢

转载自blog.csdn.net/weixin_44575152/article/details/105706071