一、介绍
在机器学习当中,我们的数据可能存在着一些bug,这些bug可以分为两类,一类是和一般数据偏差较大的“粗大误差”,另一类是数据整体向某个方向偏差的“系统误差”。DUTI算法主要用于发现数据的bug,即“粗大误差”和“系统误差”。
为实现这一工作,需要机器学习算法,以及一些可靠数据
二、训练“捉虫”工具
2.1 三个输入
1、训练数据
所有训练数据的集合
{
(
x
i
,
y
i
)
}
1
:
n
\{(x_i,y_i)\}_{1:n}
{(xi,yi)}1:n,其中
y
i
y_i
yi是
x
i
x_i
xi的预测输出,可能存在错误。可以设
y
i
=
f
(
x
i
,
θ
)
y_i=f(x_i,\theta)
yi=f(xi,θ),其中
θ
\theta
θ是待求参数。当回归函数
记
X
=
(
x
1
,
x
2
,
⋯
,
x
n
)
X=(x_1,x_2,\cdots,x_n)
X=(x1,x2,⋯,xn),
Y
=
(
y
1
,
y
2
,
⋯
,
y
n
)
Y=(y_1,y_2,\cdots,y_n)
Y=(y1,y2,⋯,yn)
2、可靠数据
所有可靠数据的集合 { ( x ~ i , y ~ i , c i ) } 1 : m \{(\widetilde x_i,\widetilde y_i,c_i)\}_{1:m} {(x i,y i,ci)}1:m,这些数据是已经被专家证实可靠的,可靠程度 c i ≥ 0 c_i \ge 0 ci≥0。记 X ~ = ( x ~ 1 , x ~ 2 , ⋯ , x ~ m ) \widetilde X=(\widetilde x_1,\widetilde x_2,\cdots,\widetilde x_m) X =(x 1,x 2,⋯,x m), Y ~ = ( y ~ 1 , y ~ 2 , ⋯ , y ~ m ) \widetilde Y=(\widetilde y_1,\widetilde y_2,\cdots,\widetilde y_m) Y =(y 1,y 2,⋯,y m)
我们假设 m < < n m<<n m<<n,所以仅由可靠数据,是远远不够训练神经网络的
3、学习算法
学习算法是由训练数据得到的一组参数 θ ∈ R p \theta \in R^p θ∈Rp, p p p根据需要来确定。
学习算法 A ( X , Y ) = arg min θ ∈ R p 1 n ∑ i = 1 n l ( x i , y i , θ ) + λ Ω ( θ ) \Alpha (X,Y)= \argmin \limits_{\theta \in R^p} \frac 1n \sum \limits_{i=1}^n l(x_i,y_i,\theta)+\lambda \Omega(\theta) A(X,Y)=θ∈Rpargminn1i=1∑nl(xi,yi,θ)+λΩ(θ),其中 l ( x , y , θ ) l(x,y,\theta) l(x,y,θ)为损失函数, Ω ( θ ) \Omega(\theta) Ω(θ)为正则项, λ \lambda λ为事先取定的系数。关于损失函数和正则项的具体解释可参见损失函数和正则项。通俗来讲, A ( X , Y ) \Alpha(X,Y) A(X,Y)得到的是 θ \theta θ的极大后验估计,即使得 P ( θ ∣ ( X , Y ) ) P(\theta|(X,Y)) P(θ∣(X,Y))最大的 θ \theta θ。
DUTI事实上是在求
θ
\theta
θ使得:
P
r
e
d
i
c
t
o
r
=
A
(
X
,
Y
′
)
Predictor=A(X,Y')
Predictor=A(X,Y′)
P
r
e
d
i
c
t
o
r
(
X
~
)
=
Y
~
,
P
r
e
d
i
c
t
o
r
(
X
)
=
Y
′
Predictor(\widetilde X)=\widetilde Y,Predictor(X)=Y'
Predictor(X
)=Y
,Predictor(X)=Y′
要让
∣
∣
Y
−
Y
′
∣
∣
||Y-Y'||
∣∣Y−Y′∣∣尽可能小。在这里,我们取L1型范数,即希望
Y
Y
Y和
Y
′
Y'
Y′之间的曼哈顿距离尽可能小。
接下来,就是要对其做一些松弛操作,好让其可解
2.2 回归捉虫
设
δ
=
Y
−
Y
′
\delta=Y-Y'
δ=Y−Y′,则原问题等价于为:
θ
=
arg min
β
∈
R
p
1
n
∑
i
=
1
n
l
(
x
i
,
y
i
+
δ
i
,
β
)
+
λ
Ω
(
β
)
(
2.1
)
l
(
x
~
i
,
y
~
i
)
=
0
(
2.2
)
l
(
x
i
,
y
i
)
=
0
(
2.3
)
min
∣
∣
δ
∣
∣
1
(
2.4
)
\begin{aligned} & \theta =\argmin \limits_{\beta \in R^p} \frac 1n \sum \limits_{i=1}^nl(x_i,y_i+\delta_i,\beta)+\lambda \Omega(\beta)&(2.1) \\ & l(\widetilde x_i,\widetilde y_i) =0 &(2.2)\\ & l(x_i,y_i)=0 &(2.3)\\ & \min||\delta||_1 &(2.4) \end{aligned}
θ=β∈Rpargminn1i=1∑nl(xi,yi+δi,β)+λΩ(β)l(x
i,y
i)=0l(xi,yi)=0min∣∣δ∣∣1(2.1)(2.2)(2.3)(2.4)
对
(
2.1
)
(2.1)
(2.1)右式做全微分,
(
2.1
)
(2.1)
(2.1)式等价于
g
(
δ
,
θ
)
=
1
n
∑
i
=
1
n
∇
θ
l
(
x
i
,
y
i
+
δ
i
,
θ
)
+
λ
∇
θ
Ω
(
θ
)
=
0
g(\delta,\theta)=\frac 1n\sum \limits_{i=1}^n\nabla_{\theta}l(x_i,y_i+\delta_i,\theta)+\lambda \nabla_\theta \Omega(\theta)=0
g(δ,θ)=n1i=1∑n∇θl(xi,yi+δi,θ)+λ∇θΩ(θ)=0
而
(
2
,
2
)
,
(
2.3
)
,
(
2.4
)
(2,2),(2.3),(2.4)
(2,2),(2.3),(2.4)可松弛写成
min
δ
∈
R
n
,
θ
1
m
∑
i
=
1
m
c
i
l
(
x
~
i
,
y
~
i
,
θ
)
+
1
n
∑
i
=
1
n
l
(
x
i
,
y
i
+
δ
i
,
θ
)
+
γ
∣
∣
δ
∣
∣
1
n
(2.5)
\min \limits_{\delta \in R^n,\theta} \frac 1m\sum \limits_{i=1}^mc_il(\widetilde x_i,\widetilde y_i,\theta)+\frac 1n\sum \limits_{i=1}^nl(x_i,y_i+\delta_i,\theta)+\gamma \frac {||\delta||_1}n \tag{2.5}
δ∈Rn,θminm1i=1∑mcil(x
i,y
i,θ)+n1i=1∑nl(xi,yi+δi,θ)+γn∣∣δ∣∣1(2.5)
其中
γ
\gamma
γ可以自行取值。
由
g
(
δ
,
θ
)
=
0
g(\delta,\theta)=0
g(δ,θ)=0可得到隐函数
θ
=
θ
(
δ
)
\theta=\theta(\delta)
θ=θ(δ)。将其代入
(
2.5
)
(2.5)
(2.5),设函数的结果为
O
γ
(
δ
)
O_{\gamma}(\delta)
Oγ(δ)。接下来,我们就可以通过梯度下降的方法,求
O
γ
(
δ
)
O_{\gamma}(\delta)
Oγ(δ)的最小值