引入
传统机器学习就不逼逼了。想象这样一个问题,咋花了老半天训练了一个模型,结果效果西撇,啥子原因来?啊~可能算法没整好,或者有标记样本都不给够,想欺负窝小老弟些蛮?
哎呀也不一定都是这样,华哥
[
1
]
\color{red}^{[1]}
[1]团队就给出另一个可能:训练集中的一些未知类别的被搞成了其他类别。 不过是哪些囊个晓得来?姑且叫做unknown unknown classes,简称unknown unknowns。
对此,探索性机器学习来了,弄啥呢?如果未知未知类存在,就找到它并学习,over。
【1】http://129.211.169.156/publication/aaai21_exml.pdf
1 小故事一个
如下图,去大医病的时候,一个人可能得了哮喘、肺炎或者癌症 (日耶),前两个可以轻松地检测出,后面的就需要CT啊什么的高端操作,贵啊哥哥。那如果去小医院呢?不太可能说:“哎呀我看你有哮喘,回去该吃吃该喝喝了吧?”
“不得哟医生,我就是多人运动玩多了,不至于嘛。”
这个时候了,就算有癌症,医生也不晓得瑟,“其实就是普通的肺炎,来整颗头孢。”
呼松口气,但是这样真的好吗哈哈哈?
这样就导致已习得模型不能察觉到未知类。
传统的有监督不能解决的问题,就由“我们”来解决。
2 ExML:另辟蹊径
关键在于如何识别那些未知的未知类。前人巴拉巴拉,本文先抛开不看,直接开启新的版本:特征信息不完备–>标签空间信息不完备–>训练集不太行啊~
特征空间和标签空间缠绵,两个老几也不可信,不松和哟。
第一个挑战:模型性能不佳时,是否真的是未知未知类导致? 对此,加大训练数据并重新选择模型,还是不得行,那就有理由相信未知未知类的存在。
第二个挑战:既然有,如何识别未知未知类? 直接选择低预测置信度的实例作为未知未知类?№ №,理由有下:
1)预测置信度低,可能是标签空间不完备导致;
2)同上,已知的类别也可能被预测为低置信度。
日弄人噢~看来有必要搞一下外部特征信息 (external feature information)。
2.1 探索性机器学习
即使增大训练数据量,模型的性能也无法有效提升时,学习者就有理由猜疑未知未知类的存在,并寻求一些候选的特征增强。
如下图,已知的两类数据傻傻分不开,结果就是出现显著的低置信度区域。通过合理的特征增强,学习者就可以:
获得识别未知未知类的能力。
通过以上,本文提出探索性机器学习框架,用来发掘更多的特征信息,以处理由于特征缺乏导致的未知未知类问题。
下图展示了传统有监督学习与探索性机器学习的区别,后者有点主动学习的味道了。
所提出的ExML包含三个要素:
1)拒绝模型 (rejection model):鉴定哪些实例可能是未知未知类;
2)特征发掘 (feature exploration):指导特征的发掘,并基于增强特征空间重新训练模型;
3)模型级联 (model cascade):逐层处理以优化可疑实例的选择。
装逼结束,开始推理与实验证明。
2.2 一些基础理论
训练集:
D
^
t
r
=
{
(
x
^
i
)
,
y
^
i
}
i
=
1
m
\hat{D}_{tr} = \{ (\hat{x}_i), \hat{y}_i \}_{i = 1}^m
D^tr={(x^i),y^i}i=1m,其中
x
^
i
∈
X
^
⊆
R
d
\hat{x}_i \in \hat{\mathcal{X}} \subseteq \mathbb{R}^d
x^i∈X^⊆Rd是来自 已观测特征空间的实例,说白了就是拿来个数据集中的实例。
y
^
i
∈
Y
^
\hat{y}_i \in \hat{\mathcal{Y}}
y^i∈Y^来自有
N
N
N个已知类别的不完备标签空间。
简便起见,只讨论二分类。
候选特征和代价预算:令
C
=
{
c
1
,
⋯
,
c
k
}
\mathcal{C} = \{ c_1, \cdots, c_k \}
C={c1,⋯,ck}表示候选特征的集合,其中的每个值在购买之前都是未知的。例如小故事中,去看病的人花钱做了CT。此外,购买任意的特征都需要付出代价。这和主动学习的不同之处就是一个买样本一个买特征了。
于学习器而言,需要在低于预算
B
B
B的同时获取
k
k
k个最有信息的特征。
这里,每一次购买的代价都是
1
1
1,且设置
k
=
1
k = 1
k=1。
测试阶段:假设学习器找到了最好的特征
c
i
c_i
ci,此特征将用于测试样本的增强:
X
i
=
(
X
∪
X
i
^
)
⊆
R
d
+
1
\mathcal{X}_i = (\hat{\mathcal{X} \cup \mathcal{X}^i}) \subseteq \mathbb{R}^{d + 1}
Xi=(X∪Xi^)⊆Rd+1,其中
X
i
\mathcal{X}^i
Xi是
c
i
c_i
ci对应的特征空间。
简单说来,就是找一列特征,加到原始的特征空间。
此时,已有模型就需要预测增强测试样本的标签,它是已有的类别之一呢?还是未知未知类?哈哈,猜一个/xyx
3 开干开干
请牢记我们的出发点:由于已有数据的特征缺乏,学习者可能无法意识到未知未知类的存在。
给出的基本假设:具有高预测置信度的实例能够正确地被预测为已知类别。
什么时候需要怀疑未知未知类的存在? 无论是加数据量,换数据模型,都搞不好的时候。
流程如下:
3.1 拒绝模型
低置信度的实例可能来自已知类,或者未知未知类。这一点窝们参照了
[
1
]
\color{red}[1]
[1]的拒绝技术:学习模型将放弃预测条件概率低于给定值
1
−
θ
1 - \theta
1−θ的实例。奇怪的知识增加了鸭~
具体的,习得函数
f
=
(
h
,
g
)
f = (h, g)
f=(h,g),其中
h
:
X
^
↦
R
h: \hat{\mathcal{X}} \mapsto \mathbb{R}
h:X^↦R是一个已知类的预测函数,
g
:
X
^
↦
R
g: \hat{\mathcal{X}} \mapsto \mathbb{R}
g:X^↦R是一个是否拒绝为未知未知类的阀函数。
如果
g
(
⋅
)
<
0
g(\cdot) <0
g(⋅)<0就接受,否则就预测为
sign
(
h
(
x
^
)
)
\text{sign} ( h (\hat{x}))
sign(h(x^))。那拒绝模型怎么来?来淦一下下面这个:
min
f
E
x
^
,
y
^
∼
D
^
[
ℓ
0
/
1
(
f
,
x
^
,
y
^
;
θ
)
]
,
(1)
\min_f \mathbb{E}_{\hat{x}, \hat{y} \sim \hat{D}} \left[ \ell_{0 / 1} (f, \hat{x}, \hat{y}; \theta) \right], \tag{1}
fminEx^,y^∼D^[ℓ0/1(f,x^,y^;θ)],(1)其中
ℓ
0
/
1
(
f
,
x
^
,
y
^
;
θ
)
=
I
y
^
⋅
h
(
x
^
)
<
0
⋅
I
g
(
x
^
)
>
0
+
θ
⋅
I
g
(
x
^
)
≤
0
\ell_{0 / 1} (f, \hat{x}, \hat{y}; \theta) = \mathbb{I}_{\hat{y} \cdot h (\hat{x}) < 0} \cdot \mathbb{I}_{g (\hat{x}) > 0} + \theta \cdot \mathbb{I}_{g (\hat{x}) \leq 0}
ℓ0/1(f,x^,y^;θ)=Iy^⋅h(x^)<0⋅Ig(x^)>0+θ⋅Ig(x^)≤0是一个
0
−
1
0 - 1
0−1损失函数,
θ
∈
(
0
,
0.5
)
\theta \in (0, 0.5)
θ∈(0,0.5),
D
^
\hat{\mathcal{D}}
D^就是把数据和标签弄一起。
原文用的空心数字1窝打不出来,就是下面那个家伙,用
I
\mathbb{I}
I来代替了。
说实话目前这个公式打脑壳哈,以前还没有见过这样写的,欸嘿~
θ
\theta
θ越小拒绝能力越强,其被预测为已知类的结果就越可信。 不过这个损失函数是一个非凸优化,看看就行。
[
1
]
\color{red}[1]
[1]提出了一个替代的
ℓ
s
u
r
r
:
=
ℓ
s
u
r
r
(
f
,
x
^
,
y
^
;
θ
)
\ell_{surr}: = \ell_{surr} (f, \hat{x}, \hat{y}; \theta)
ℓsurr:=ℓsurr(f,x^,y^;θ):
ℓ
s
u
r
r
=
max
{
1
+
1
2
(
g
(
x
^
)
−
y
^
⋅
h
(
x
^
)
)
,
θ
(
1
−
g
(
x
^
)
1
−
2
θ
)
,
0
}
.
\ell_{surr} = \max \left\{1 + \frac{1}{2} (g (\hat{x}) - \hat{y} \cdot h (\hat{x})), \theta (1 - \frac{g (\hat{x})}{1 - 2 \theta}), 0 \right\}.
ℓsurr=max{1+21(g(x^)−y^⋅h(x^)),θ(1−1−2θg(x^)),0}.
h
h
h是预测函数,
g
g
g是阀函数,不要弄混了哈。
在这里,由于分布未知,不能够直接计算风险,这里的风险我理解是:将未知未知类当作已知类的风险评估。自然,风险是越小越好,这是模型需要优化的,文章里说是经验风险:
min
f
∈
H
×
H
1
m
∑
i
=
1
m
ℓ
s
u
r
r
(
f
,
x
^
i
,
y
^
i
;
θ
)
+
C
h
∥
h
∥
H
2
+
C
g
∥
g
∥
H
2
,
(2)
\tag{2} \min_{f \in \mathbb{H} \times \mathbb{H}} \frac{1}{m} \sum_{i = 1}^m \ell_{surr} (f, \hat{x}_i, \hat{y}_i; \theta) + C_h \| h \|_{\mathbb{H}^2} + C_g \| g \|_{\mathbb{H}^2},
f∈H×Hminm1i=1∑mℓsurr(f,x^i,y^i;θ)+Ch∥h∥H2+Cg∥g∥H2,(2)其中
C
h
C_h
Ch、
C
g
C_g
Cg是正则参数,
H
\mathbb{H}
H是由核
K
:
X
^
×
X
^
↦
R
K: \hat{\mathcal{X}} \times \hat{\mathcal{X}} \mapsto \mathbb{R}
K:X^×X^↦R推出的 再生核希尔伯特空间 (Reproducing Kernel Hilbert Space, RKHS),简单的说就是核函数构成的空间,有线性空间的数乘、加减操作,也有内积操作这些。
得益于
[
2
]
\color{red}[2]
[2]的工作,这里
h
(
x
^
)
=
∑
i
=
1
m
u
i
K
(
x
^
,
x
^
i
)
h (\hat{x}) = \sum_{i = 1}^m u_i K (\hat{x}, \hat{x}_i)
h(x^)=∑i=1muiK(x^,x^i)、
g
(
x
^
)
=
∑
i
=
1
m
u
i
K
(
x
^
,
x
^
i
)
g (\hat{x}) = \sum_{i = 1}^m u_i K (\hat{x}, \hat{x}_i)
g(x^)=∑i=1muiK(x^,x^i),其中
u
i
u_i
ui和
w
i
w_i
wi是需要学习的参数。
至此,式 (2)可以使用二次编程解决 (quadratic programming),更多的细节去看
[
1
]
\color{red}[1]
[1],华哥你们怎么这样甩锅啊啊啊~~~~~~~~~~~~~
 啊啊啊啊这小节就没了鸭,/(ㄒoㄒ)/~~
【1】Cortes, C.; DeSalvo, G.; and Mohri, M. 2016b. Learning with Rejection. In Proceedings of International Conference on Algorithmic Learning Theory, 67–82.
【2】Sch¨olkopf, B.; and Smola, A. J. 2002. Learning with Kernels: support vector machines, regularization, optimization, and beyond. Adaptive computation and machine learning series. MIT Press.
3.2 特征发掘
在已有模型弄死不得行的时候,就可以跟上本文的步伐。
本文的设置中,学习者需要从
K
K
K个候选中选择最好的特征来重训练,如下图:
这里牵起耳朵给大家说,传统的特征选择不适合本设置,因为候选特征在查询之前是不可知的。
所以呢,本文提出了特征探索,来在无需提前提供特征值的情况下且低于预设代价找到最优信息的特征。
这???
先不管,先甩两个问题哟:
1)怎样度量候选特征的质量?
2)怎么有效分配预算又找到最好?
接下来听贫道道来:
嘛米嘛米弘,走错片场了哈哈~
第一个问题:特征质量度量↓
令
D
i
\mathcal{D}_i
Di表示覆盖
Y
i
×
Y
^
\mathcal{Y}_i \times \hat{\mathcal{Y}}
Yi×Y^的数据分布,其中
X
i
\mathcal{X}_i
Xi是增强特征空间的第
i
i
i个候选特征。本文使用
D
i
\mathcal{D}_i
Di上的贝叶斯风险来作为特征质量度量:
R
i
∗
=
R
i
(
f
i
∗
)
=
min
f
E
(
x
,
y
^
∼
D
i
)
[
ℓ
0
/
1
(
f
,
x
,
y
^
;
θ
)
]
,
(3)
\tag{3} R_i^* = R_i (f_i^*) = \min_f \mathbb{E}_{ ( x, \hat{y} \sim \mathcal{D}_i)} [\ell_{0 / 1} (f, x, \hat{y}; \theta)],
Ri∗=Ri(fi∗)=fminE(x,y^∼Di)[ℓ0/1(f,x,y^;θ)],(3)其中
R
i
(
f
)
R_i (f)
Ri(f)是给定
f
f
f下的预期
0
/
1
0 / 1
0/1风险,
f
i
∗
f_i^*
fi∗是使得
R
i
(
f
)
R_i (f)
Ri(f)最小化的函数。
贝叶斯风险的近似为:
R
^
D
i
=
R
^
i
(
f
^
i
)
=
∑
j
=
1
n
i
ℓ
0
/
1
(
f
^
i
,
x
j
,
y
^
j
;
θ
)
(4)
\tag{4} \widehat{R}_{D_{i}}=\widehat{R}_{i}\left(\widehat{f}_{i}\right)=\sum_{j=1}^{n_{i}} \ell_{0 / 1}\left(\widehat{f}_{i}, \mathrm{x}_{j}, \widehat{y}_{j} ; \theta\right)
R
Di=R
i(f
i)=j=1∑niℓ0/1(f
i,xj,y
j;θ)(4)其中
D
i
=
{
(
x
j
,
y
^
j
)
}
j
=
1
n
i
∼
D
i
D_i = \{ (x_j, \hat{y}_j ) \}_{j = 1}^{n_i} \sim \mathcal{D}_i
Di={(xj,y^j)}j=1ni∼Di,
x
j
∈
X
i
x_j \in \mathcal{X}_i
xj∈Xi,
y
^
j
∈
Y
^
\hat{y}_j \in \hat{\mathcal{Y}}
y^j∈Y^,
f
^
i
\hat{f}_i
f^i是在增强数据集
D
i
D_i
Di上优化式 (2)得到。
有了公式 (4),以下给出预算分布策略来找最好的候选特征 (说实话看到这里我不知道怎么做哈哈哈):
预算分布策略:在不失一般性的前提下,假设特征按照其价值排序,即
R
1
∗
≤
⋯
≤
R
K
∗
R_1^* \leq \cdots \leq R_K^*
R1∗≤⋯≤RK∗。我们的目标就是在给定预算下找到最好的特征,并基于增强数据集训练好的更一般性的模型。以下给出具体策略:
均匀分布:对于任意的候选特征
c
i
c_i
ci,
I
∈
[
K
]
I \in [K]
I∈[K],每一个增强数据集
D
i
D_i
Di的预算分配为
⌊
B
/
K
⌋
\lfloor B / K \rfloor
⌊B/K⌋。这个策略将选择最大概率的特征作为最好的特征 (证明看原论文)。
中位消除 (Median Elimination):对于每一次迭代,首先去除一半戳的候选特征,再从余下的里面选一个最好的。具体的,评估过程将进行
T
=
⌈
log
2
K
⌉
T = \lceil \log_2 K \rceil
T=⌈log2K⌉轮次,每一轮每个特征分配的预算为
⌊
B
/
T
⌋
\lfloor B / T \rfloor
⌊B/T⌋。具体的伪代码如下:
算法1:中位消除下的特征探索
输入:
预算 B B B,原始数据集 D ^ t r = { ( x ^ i , y ^ i ) } i = 1 m \hat{D}_{tr} = \{ (\hat{x}_i, \hat{y}_i) \}_{i = 1}^m D^tr={(x^i,y^i)}i=1m,候选特征池 C { c 1 , ⋯ , c K } \mathcal{C} \{ c_1, \cdots, c_K \} C{c1,⋯,cK},阈值 θ ∈ ( 0 , 1 ) \theta \in (0, 1) θ∈(0,1)
输出:
所选择的特征 c i s ∈ C c_{i_s} \in \mathcal{C} cis∈C,增强模型 f ^ i s \hat{f}_{i_s} f^is
1:为每一个特征 c i c_i ci初始化数据集 D i = ∅ D_i = \emptyset Di=∅, C 1 = C \mathcal{C}_1 = \mathcal{C} C1=C记录当前特征, T = ⌈ log 2 K ⌉ T = \lceil \log_2 K \rceil T=⌈log2K⌉
2:for t = 1 , ⋯ , T t = 1, \cdots, T t=1,⋯,T do
3: 于 D ^ t r \hat{D}_{tr} D^tr中随机选择 n t = ⌊ B / ( T ∣ C t ) ⌋ n_t = \lfloor B / (T | \mathcal{C}_t) \rfloor nt=⌊B/(T∣Ct)⌋个样本和特征 c i ∈ C t c_i \in \mathcal{C}_t ci∈Ct
4: