标题
Multi-Instance Learning with Key Instance Shift
具有关键实例转移的多实例学习
会议:IJCAI
摘要
多示例学习 (MIL) 处理每个示例由一组实例表示的任务。如果一个包至少包含一个正实例,则它是正实例,否则为负实例。正面实例也称为关键实例。仅观察到袋子标签,而 MIL 中没有特定的实例标签。以前的研究通常假设训练和测试数据遵循相同的分布,这在许多现实世界的任务中可能会被违反。在本文中,我们解决了关键实例的分布在训练和测试阶段之间变化的问题。我们将此问题称为具有关键实例移位的 MIL,并通过提出基于嵌入的方法 MIKI 来解决它。具体来说,为了将包转换为信息向量,我们提出了一个加权多类模型来选择具有高积极性的实例作为实例原型。然后我们学习变换后的包向量的重要性权重,并将原始实例权重合并到它们中,以缩小训练/测试分布之间的差距。实验结果验证了我们的方法在关键实例转移发生时的有效性。
Introduction
关键实例转移问题
以前对 MIL 的研究通常假设训练和测试数据来自相同的分布,这在许多现实世界的任务中可能会被违反。当训练和测试数据在不同的时间、地点或不同的标记成本等情况下收集时,可能会出现分布差异。例如:
文本分类中2012年收集的训练数据集关于“Stephen Curry”的文字较多,2016年收集的关于“Kobe Bryant”的文字较多。这里包含“Kobe Bryant”或“Stephen Curry”的段落可以被视为关键实例。
在美国/中国收集训练/测试数据与训练数据相比,测试数据中关于“棒球”的文本可能更少,而更多关于“乒乓球”的文本。这里可以将带有“棒球”或“乒乓球”的段落视为关键实例。
本文
训练加权多类模型选择实例原型;
基于实例原型将将包转换为向量表示;
学习转换后包向量的权重;
将原始实例权重合并到其中
Related Work
分为两类:
1)直接解决任一实例级别的 MIL 问题 或袋级
2)通过嵌入将 MIL 转换为单实例学习
协变量转移(covariate shift )
在协变量移位中,训练和测试阶段的输入分布
P
(
x
)
P (x)
P(x) 不同,但输出
P
(
y
∣
x
)
P (y|x)
P(y∣x) 的条件分布保持不变。协变量转移的一种常见方法是重要性重新加权,它为每个训练实例
x
x
x分配权重
w
(
x
)
=
p
t
e
(
x
)
/
p
t
r
(
x
)
w(x) = pte(x)/ptr(x)
w(x)=pte(x)/ptr(x),以通过某些标准减少训练和测试边缘的差异。
需要测试集来估计分布的差异
百度的解释:
假设
x
x
x是属于特征空间的某一样本点,
y
y
y是标签。covariate指的是
x
x
x,那么covariate shift可以直接理解为:样本点
x
x
x的变化
规范解释:假设
q
t
r
(
x
)
q_{tr}(x)
qtr(x)是训练集中一个样本点的概率密度,
q
t
e
(
x
)
q_{te}(x)
qte(x)是测试集中一个样本点的概率密度。由
x
x
x和一组参数
θ
=
{
θ
1
,
θ
2
,
…
,
θ
m
}
θ={θ_1,θ_2,\dots,θ_m}
θ={θ1,θ2,…,θm}决定条件概率条件概率密度
p
(
y
∣
x
,
θ
)
p(y|x,θ)
p(y∣x,θ)。
传统机器学习假设训练集和测试集独立同分布,
q
t
r
(
x
)
=
q
t
e
(
x
)
q_{tr}(x)=q_{te}(x)
qtr(x)=qte(x),推出训练集上的最优
θ
\theta
θ可以保证测试集也最优
新数据产生老数据过时,
q
t
r
(
x
)
≠
q
t
e
(
x
)
q_{tr}(x) \neq q_{te}(x)
qtr(x)=qte(x)称作covariate shift
解决方法:重要性加权,为每个训练实例 x x x分配权重 ω ( x ) = p t e ( x ) / p t r ( x ) \omega(x)=p_{te}(x)/p_{tr}(x) ω(x)=pte(x)/ptr(x)。在训练过程当中对于 q t e ( x ) q_{te}(x) qte(x)很大或者 q t r ( x ) q_{tr}(x) qtr(x)很小的样本视作“重要”样本,“重要”样本有益于测试集预测;。而对于 q t e ( x ) q_{te}(x) qte(x)很小或者 q t r ( x ) q_{tr}(x) qtr(x)很大的样本,这些样本对于模型训练的意义也是无关紧要。
MIL with Key Instance Shift
符号系统
Notation | Mean |
---|---|
X = R d \mathcal{X}=\mathbb{R}^d X=Rd | 实例空间 |
Y = { − 1 , + 1 } \mathcal{Y}=\{-1,+1\} Y={−1,+1} | 标签 |
B t r = { ( X 1 t r , y 1 ) , … , ( X i t r , y i ) , … , ( X m t r , y m ) } \mathcal{B}_{tr}=\{(X_1^{tr},y_1),\dots,(X_i^{tr},y_i),\dots,(X_m^{tr},y_m)\} Btr={(X1tr,y1),…,(Xitr,yi),…,(Xmtr,ym)} | 训练集 |
B t e = { X 1 t e , … , X m t e } \mathcal{B}_{te}=\{X_1^{te},\dots,X_m^{te}\} Bte={X1te,…,Xmte} | 测试集 |
X i = { x i 1 , … , x i j , … , x i n i } X_i=\{\mathbf{x}_{i1},\dots,\mathbf{x}_{ij},\dots,\mathbf{x}_{in_i}\} Xi={xi1,…,xij,…,xini} | 包 |
P ( . ) P(.) P(.) | 分布 |
给定 B t r \mathcal{B}_{tr} Btr, B t e \mathcal{B}_{te} Bte, P ( x ∗ t r ) ≠ P ( x ∗ t e ) P(\mathbf{x}_*^{tr}) \neq P(\mathbf{x}_*^{te}) P(x∗tr)=P(x∗te),目标学习一个测试数据集上的映射: f : 2 X → Y f:2^{\mathcal{X}} \rightarrow \mathcal{Y} f:2X→Y
为了处理关键实例移位问题,我们尝试从训练集和测试集中选择关键实例候选作为实例原型,以便可以对包级信息和关键实例移位信息进行编码
提出的方法
通过子概念的形式来选择关键实例
引入实例权重平衡不同的分布(代表不足/过度代表的实例的权重较高/较低),一遍选择的实例原型包含更多关键实例。
在得到转换后的包向量,学习其权重以缩小训练/测试分布的差距。
如果一个实例很重要,则包含它的包也应该被重视,因此我们进一步将原始实例的权重合并到变换后的包向量的权重中
没看懂啊!!
实例原型学习
总框架:训练加权多类模型以选择关键实例候选作为实例原型。其中迭代构建多类模型并优化选择的关键实例候选,然后更新实例权重。
加权的
(
K
+
1
)
(K+1)
(K+1)类模型:
M
D
\mathcal{M}_D
MD
x
i
j
\mathbf{x}_{ij}
xij属于类
k
k
k的概率:
P
r
i
j
k
Pr_{ij}^{k}
Prijk
x
i
j
\mathbf{x}_{ij}
xij的正分:
S
i
j
=
m
a
x
k
∈
1
,
…
,
K
(
P
r
i
j
k
−
P
r
i
j
0
)
S_{ij}=\mathop{max}\limits_{k\in{1,\dots,K}}(Pr_{ij}^{k}-Pr_{ij}^{0})
Sij=k∈1,…,Kmax(Prijk−Prij0)
子概念:将整空间分为不同簇,每一簇属于一个概念。
K
K
K个子概念+负概念。
加权的
(
K
+
1
)
(K+1)
(K+1)类模型
a) 对正空间运行k-means,将它们的标签初始化为对应簇编号(
1
,
…
,
K
1,\dots,K
1,…,K);负空间所有实例标签为0
b) 使用训练集中的所有加权实例 以及标签训练多类SVM模型
M
\mathcal{M}
M。通过模型
M
\mathcal{M}
M预测
x
i
j
\mathbf{x}_{ij}
xij属于
k
k
k类的概率
P
r
i
j
k
Pr_{ij}^{k}
Prijk。
c) 更新来自正包中每个实例的标签:
y
i
j
=
a
r
g
m
a
x
k
∈
{
0
,
1
,
…
,
K
}
P
r
i
j
k
y_{ij}=\mathop{argmax}\limits_{k \in \{0,1,\dots,K\} }Pr_{ij}^{k}
yij=k∈{0,1,…,K}argmaxPrijk负包中实例标签不变。
为了使每个正包中都有一个正实例,如果一个正包中的所有实例都标记为负,则将正分最高的实例
x
i
p
\mathbf{x}_{ip}
xip的标签调整为:
y
i
p
=
a
r
g
m
a
x
k
∈
{
0
,
1
,
…
,
K
}
P
r
i
p
k
y_{ip}=\mathop{argmax}\limits_{k \in \{0,1,\dots,K\} }Pr_{ip}^{k}
yip=k∈{0,1,…,K}argmaxPripk
c) 接着利用新的加权实例和标签训练新的模型
M
\mathcal{M}
M,直到没有标签改变或达到最大迭代,则获得
M
D
\mathcal{M}_D
MD。
实例原型选择
a)计算所有实例的分数
S
i
j
S_{ij}
Sij
b)根据输入的参数(训练集和测试集中选择的实例原型的个数)
n
θ
t
r
n_{\theta}^{tr}
nθtr、
n
θ
t
e
n_{\theta}^{te}
nθte,将训练集中分数前
n
θ
t
r
n_{\theta}^{tr}
nθtr的实例作为关键实例候选
C
p
t
r
C_p^{tr}
Cptr,区域作为负候选
C
n
t
r
C_n^{tr}
Cntr,测试集中同样。即:
训练集关键实例候选:
C
p
t
r
C_p^{tr}
Cptr
训练集负候选:
C
n
t
r
C_n^{tr}
Cntr
测试集关键实例候选:
C
p
t
e
C_p^{te}
Cpte
测试集负候选:
C
n
t
e
C_n^{te}
Cnte
c) 重新计算训练实例中权重:使用
C
p
t
e
C_p^{te}
Cpte估计
C
p
t
r
C_p^{tr}
Cptr,
C
n
t
e
C_n^{te}
Cnte估计
C
n
t
r
C_n^{tr}
Cntr的权重,使得训练实例近似测试实例;
d) 基于新的权重再次得到
M
D
\mathcal{M}_D
MD,迭代
e) 知道达到最大迭代,将
C
p
t
r
∪
C
p
t
e
C_p^{tr}\cup C_p^{te}
Cptr∪Cpte作为实例原型集
D
\mathcal{D}
D
基于实例原型映射
将训练包和测试包均映射到新的向量表示
每个包被映射为
∣
D
∣
|\mathcal{D}|
∣D∣维的向量
v
i
\mathbf{v}_i
vi,其中
v
i
j
{v}_{ij}
vij:
v
i
j
=
m
a
x
x
i
k
∈
X
i
e
x
p
(
−
γ
∥
x
i
k
−
D
j
∥
2
)
v_{ij}=\mathop{max}\limits_{\mathbf{x}_{ik}\in X_i}exp(-\gamma \|\mathbf{x}_{ik}-D_j\|^2)
vij=xik∈Ximaxexp(−γ∥xik−Dj∥2)
权重学习
1)首先获得所有变换后训练向量的权重
W
0
\mathbf{W}^0
W0
2)如果一个包包含一个应该被评估的实例,那么这个包也应该被评估,因此进一步将实例权重合并到转换后的包权重中。将所有训练实例的权重整合到包权重中
3)对于训练包
X
i
t
r
X_i^{tr}
Xitr,单向量
v
i
t
r
\mathbf{v}_i^{tr}
vitr,包向量权重
W
i
0
{W}_i^0
Wi0,包中实例的权重
{
ω
i
j
}
j
=
1
n
i
\{\omega_{ij}\}_{j=1}^{n_i}
{ωij}j=1ni,最终权重:
W
i
=
m
a
x
j
∈
{
1
,
…
,
n
i
}
ω
i
j
W
i
0
W_i=\mathop{max}\limits_{j \in \{1,\dots,n_i\}}\omega_{ij} W_i^0
Wi=j∈{1,…,ni}maxωijWi0
重要性加权技术
转换后训练向量:
{
v
i
t
r
}
i
=
1
m
\{\mathbf{v}_i^{tr}\}_{i=1}^m
{vitr}i=1m,密度
p
t
r
(
v
)
p_{tr}(\mathbf{v})
ptr(v)
转换后测试向量:
{
v
i
t
e
}
i
=
1
n
\{\mathbf{v}_i^{te}\}_{i=1}^n
{vite}i=1n,密度
p
t
e
(
v
)
p_{te}(\mathbf{v})
pte(v)
转换后训练向量的权重:
ω
(
v
)
=
p
t
e
(
v
)
/
p
t
r
(
v
)
\omega(\mathbf{v})=p_{te}(\mathbf{v})/p_{tr}(\mathbf{v})
ω(v)=pte(v)/ptr(v)
学习参数:
α
=
{
α
1
,
…
,
α
b
}
T
\boldsymbol{\alpha}=\{\alpha_1,\dots,\alpha_b\}^{T}
α={α1,…,αb}T
基函数:
{
φ
l
(
v
)
}
l
=
1
b
\{\varphi_l(\mathbf{v})\}_{l=1}^b
{φl(v)}l=1b,
φ
l
(
v
)
≥
0
\varphi_l(\mathbf{v}) \geq 0
φl(v)≥0。以测试点为中心的固定数量的高斯核作为基函数
1)通过线性模型对
ω
(
v
)
\omega(\mathbf{v})
ω(v)进行建模:
ω
^
(
v
)
=
∑
l
=
1
b
α
l
φ
l
(
v
)
\hat{\omega}(\mathbf{v})=\mathop{\sum}_{l=1}^b \alpha_l \varphi_l(\mathbf{v})
ω^(v)=∑l=1bαlφl(v)
2) 估计参数
{
α
l
}
l
=
1
b
\{\alpha_l\}_{l=1}^b
{αl}l=1b,使得
ω
^
(
v
)
\hat{\omega}(\mathbf{v})
ω^(v)近似于
ω
(
v
)
\omega(\mathbf{v})
ω(v),最小化平方误差
L
0
(
v
)
L_0(\mathbf{v})
L0(v):
L
0
(
v
)
=
1
2
∫
(
ω
^
(
v
)
−
ω
(
v
)
)
2
p
t
r
(
v
)
d
v
=
1
2
∫
(
ω
^
(
v
)
2
p
t
r
(
v
)
−
2
ω
^
(
v
)
ω
(
v
)
p
t
r
(
v
)
+
ω
(
v
)
2
p
t
r
(
v
)
)
d
v
L_0(\mathbf{v})=\frac{1}{2}\int(\hat{\omega}(\mathbf{v})-\omega(\mathbf{v}))^2 p_{tr}(\mathbf{v}) d \mathbf{v}\\ =\frac{1}{2}\int(\hat{\omega}(\mathbf{v})^2p_{tr}(\mathbf{v})-2\hat{\omega}(\mathbf{v}){\omega}(\mathbf{v})p_{tr}(\mathbf{v})+{\omega}(\mathbf{v})^2p_{tr}(\mathbf{v}))d \mathbf{v}\\
L0(v)=21∫(ω^(v)−ω(v))2ptr(v)dv=21∫(ω^(v)2ptr(v)−2ω^(v)ω(v)ptr(v)+ω(v)2ptr(v))dv
3) 最后一项是给定训练集的常数,忽略。使用
p
t
e
(
v
)
=
ω
(
v
)
p
t
r
(
v
)
p_{te}(\mathbf{v})={\omega}(\mathbf{v})p_{tr}(\mathbf{v})
pte(v)=ω(v)ptr(v),前两项表示如下:
L
(
v
)
=
1
2
∫
ω
^
(
v
)
2
p
t
r
(
v
)
d
v
−
∫
ω
^
(
v
)
p
t
e
(
v
)
d
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
)
L(\mathbf{v})=\frac{1}{2}\int\hat{\omega}(\mathbf{v})^2p_{tr}(\mathbf{v})d \mathbf{v}-\int\hat{\omega}(\mathbf{v})p_{te}(\mathbf{v})d \mathbf{v}\\ =\frac{1}{2}\mathop{\sum}\limits_{l,l'=1}^b \alpha_l \alpha_{l'}(\int\varphi_l(\mathbf{v})\varphi_{l'}(\mathbf{v})p_{tr}(\mathbf{v})d \mathbf{v})-\mathop{\sum}\limits_{l'=1}^b \alpha_l (\int\varphi_l(\mathbf{v})p_{te}(\mathbf{v})d \mathbf{v})
L(v)=21∫ω^(v)2ptr(v)dv−∫ω^(v)pte(v)dv=21l,l′=1∑bαlαl′(∫φl(v)φl′(v)ptr(v)dv)−l′=1∑bαl(∫φl(v)pte(v)dv)
4) 通过经验平均值逼近
L
(
v
)
L(\mathbf{v})
L(v)中的期望值,得到
L
^
(
v
)
\hat{L}(\mathbf{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
∑
j
=
1
n
φ
l
(
v
j
t
e
)
)
=
1
2
α
T
H
^
α
−
h
^
T
α
\hat{L}(\mathbf{v})=\frac{1}{2}\mathop{\sum}\limits_{l,l'=1}^b \alpha_l \alpha_{l'}(\frac{1}{m}\mathop{\sum}\limits_{i=1}^m\varphi_l(\mathbf{v}_i^{tr})\varphi_{l'}(\mathbf{v}_i^{tr}))-\mathop{\sum}\limits_{l=1}^b \alpha_l (\frac{1}{n}\mathop{\sum}\limits_{j=1}^n\varphi_l(\mathbf{v}_j^{te}))\\=\frac{1}{2}\boldsymbol{\alpha}^T \hat{H}\boldsymbol{\alpha}-\hat{\boldsymbol{h}}^T\boldsymbol{\alpha}
L^(v)=21l,l′=1∑bαlαl′(m1i=1∑mφl(vitr)φl′(vitr))−l=1∑bαl(n1j=1∑nφl(vjte))=21αTH^α−h^Tα
其中
H
^
\hat{H}
H^是
b
×
b
b\times b
b×b的矩阵,
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}\mathop{\sum}\limits_{i=1}^m\varphi_l(\mathbf{v}_i^{tr})\varphi_{l'}(\mathbf{v}_i^{tr})
H^l,l′=m1i=1∑mφl(vitr)φl′(vitr);
h
^
\hat{\boldsymbol{h}}
h^是一个
b
b
b维向量,
h
^
l
=
1
n
∑
j
=
1
n
φ
l
(
v
j
t
e
)
\hat{h}_l=\frac{1}{n}\mathop{\sum}\limits_{j=1}^n\varphi_l(\mathbf{v}_j^{te})
h^l=n1j=1∑nφl(vjte)
5) 得到以下优化目标:
m
i
n
α
∈
R
b
[
1
2
α
T
H
^
α
−
h
^
T
α
+
λ
2
α
T
α
]
\mathop{min}\limits_{\alpha \in \mathbb{R}^b}[\frac{1}{2}\boldsymbol{\alpha}^T \hat{H}\boldsymbol{\alpha}-\hat{\boldsymbol{h}}^T\boldsymbol{\alpha}+\frac{\lambda}{2}\boldsymbol{\alpha}^T \boldsymbol{\alpha}]
α∈Rbmin[21αTH^α−h^Tα+2λαTα]
6) 目标是一个无约束的二次规划,所以解可以解析为:
α
=
h
^
H
^
+
λ
I
b
\boldsymbol{\alpha}=\frac{\hat{\boldsymbol{h}}}{\hat{H}+\lambda {I}_b}
α=H^+λIbh^
其中
I
b
{I}_b
Ib是
b
b
b 维的单位矩阵
对于训练实例的权重将
v
\mathbf{v}
v替换为
x
\mathbf{x}
x。
实验
对比算法
实例级:miSVM,MISVM
包级:miGraph,MILES,MILDE
三种变体:
1)miSVM+通过估计所有实例的权重并将它们直接合并到miSVM
2)MILES+ 的权重是基于变换后的特征向量获得
3)MILES++,使用来自训练包和测试包的所有实例进行特征映射,并结合了重要性加权技术
其他:MICS
参数设置
SVM采用RBF内核
Positive cluster number
K
K
K:合成数据集设置为5,其他数据集设置为10
最大迭代次数设置为5
合成数据集
生成数据
1.生成两个由高斯分布表示的正实例的子概念:
P
1
=
N
(
μ
1
,
σ
2
)
P_1=\mathcal{N}(\mu_1,\sigma_2)
P1=N(μ1,σ2)、
P
2
=
N
(
μ
2
,
σ
2
)
P_2=\mathcal{N}(\mu_2,\sigma_2)
P2=N(μ2,σ2)
负概念:
P
3
=
N
(
μ
3
,
σ
2
)
P_3=\mathcal{N}(\mu_3,\sigma_2)
P3=N(μ3,σ2)
2.每个包包含10个实例,每个正包包含一个正实例(来自子概念之一);共生成200正包,200负包;一半正包的正实例来自一个子概念,另一半正包来自另一半子概念
3.故意偏向抽样:训练数据中正包包含来自概念
P
1
P_1
P1的正实例较多(0.8),
P
2
P_2
P2(0.2)
参数
K
K
K的影响
随着
K
K
K接近真实值,效果更好。但是方法对
K
K
K并不是很敏感。
文本数据集
从20 Newsgroups得到25个数据集,包含6个主类和20个子类;将其中一个主类设置为正类;
一个主类为正,其余为负;正主类下的两个子类作为不同的子概念
生成200个正包,200个负包,每个正包包含来自正类的 1.5 个实例;一半的正包包含来自一个子概念的正实例,另一半来自另一个子概念
非转移数据
虽然它是为关键实例移位设置而设计的,但我们的方法在非移位设置中仍然可以正常工作,证明了 MIKI 的鲁棒性