Mk-MMD在深度学习中经常用于对不同分布的数据的隐层特征进行分布差异度量,那么Mk-MMD究竟是什么呢?我们首先从MD开始解释。
MD(mean discrepency,均值差异)
判断两个分布p和q是否相同,p分布对应的样本空间为P,q分布对应的样本空间为Q。在深度学习中,P、Q通常对应来自不同分布的训练样本,而p、q则可以视为决定这些样本分布的隐层特征。
假设我们有函数f:可以将多维特征映射为一个实数。此时,若:
m
e
a
n
(
f
(
P
)
)
=
=
m
e
a
n
(
f
(
Q
)
)
{\rm{mean}}(f(P)) = = {\rm{mean}}(f(Q))\
mean(f(P))==mean(f(Q))
则我们认为,隐层特征p和q是同一分布。
那么,当P样本空间包含样本P1, P2, …, Pn;Q样本空间包含样本Q1, Q2, …,Qm时,若:
(
f
(
P
1
)
+
.
.
.
+
f
(
P
n
)
)
/
n
=
=
(
f
(
Q
1
)
+
.
.
.
+
f
(
Q
m
)
)
/
m
(f(P1) + ... + f(Pn)) / n = = (f(Q1) + ... + f(Qm)) / m
(f(P1)+...+f(Pn))/n==(f(Q1)+...+f(Qm))/m
则认为p、q为同一分布。
此时,我们可以定义两个分布之间的均值差异为:
m
e
a
n
d
i
s
c
r
e
p
e
n
c
y
=
∣
m
e
a
n
(
f
(
P
)
)
−
m
e
a
n
(
f
(
Q
)
)
∣
{\rm{mean \ discrepency = }}\left| {{\rm{mean(f(P))}} - {\rm{mean(f(Q))}}} \right|
mean discrepency=∣mean(f(P))−mean(f(Q))∣
MMD(Maximum Mean Discrepency,最大均值差异)
我们已经知道了什么是MD度量,那么什么是MMD呢?
在MD度量中,我们只使用了一个f函数对样本进行映射,计算均值距离。实际上,两个样本空间通过同一个函数映射出的均值相同,并不能说明两个样本空间的分布就相同。我们举如下例子:
假设有两条生产线p和q生产玻璃:产线p产出P1,P2,…,Pn个玻璃,另一条产线q产出Q1,Q2,…,Qm个玻璃。我们选择玻璃厚度作为映射函数f。
当 ∣ m e a n ( f ( P ) ) − m e a n ( f ( Q ) ) ∣ = = 0 \left| {{\rm{mean(f(P))}} - {\rm{mean(f(Q))}}} \right| = = 0 ∣mean(f(P))−mean(f(Q))∣==0时,我们能否认为这两条生产线的生产能力就相同呢?显然是不行的,还需要考虑透光率、平整度等因素。
因此我们可以选取多个函数
f
1
{{\rm{f}}_1}
f1,
f
2
{{\rm{f}}_2}
f2,…等,构成一个函数空间
F
{\cal F}
F,则MMD可表示为:
M
M
D
(
F
,
p
,
q
)
=
max
{
∣
m
e
a
n
(
f
1
(
P
)
)
−
m
e
a
n
(
f
1
(
Q
)
)
∣
,
∣
m
e
a
n
(
f
2
(
P
)
)
−
m
e
a
n
(
f
2
(
Q
)
)
∣
,
.
.
.
}
{\rm{MMD(}}{\cal F}{\rm{,p,q}}) = \max \{ \left| {mean({\rm{f}_1}(P)) - mean({\rm{f}_1}(Q))} \right|,\left| {mean({\rm{f}_2}(P)) - mean({\rm{f}_2}(Q))} \right|,...\}
MMD(F,p,q)=max{∣mean(f1(P))−mean(f1(Q))∣,∣mean(f2(P))−mean(f2(Q))∣,...}
上式可以写成更简洁的形式:
M
M
D
(
F
,
p
,
q
)
:
=
s
u
p
f
∈
F
(
∣
1
n
∑
i
=
1
n
f
(
P
i
)
−
1
m
∑
i
=
1
m
f
(
Q
i
)
∣
)
:
=
s
u
p
f
∈
F
(
∣
E
P
∼
p
f
(
P
)
−
E
Q
∼
q
f
(
Q
)
∣
)
\begin{array}{c} {\rm{MMD(}}{\cal F}{\rm{,p,q): = }}\mathop {sup}\limits_{{\rm{f}} \in {\cal F}} (\left| {\frac{1}{n}\sum\limits_{i = 1}^n {{\rm{f(}}{{\rm{P}}_i}{\rm{)}}} - \frac{1}{m}\sum\limits_{i = 1}^m {{\rm{f(}}{{\rm{Q}}_i}{\rm{)}}} } \right|)\\\\\ \qquad\qquad\quad: = \mathop {sup}\limits_{{\rm{f}} \in {\cal F}} (\left| {{E_{{\rm{P}} \sim {\rm{p}}}}{\rm{f}}(P) - {E_{{\rm{Q}} \sim {\rm{q}}}}{\rm{f}}(Q)} \right|) \end{array}
MMD(F,p,q):=f∈Fsup(
n1i=1∑nf(Pi)−m1i=1∑mf(Qi)
) :=f∈Fsup(∣EP∼pf(P)−EQ∼qf(Q)∣)
以上便是MMD的定义。
Mk-MMD(Multi-kernel Maximum Mean Discrepency,多核最大均值差异)
上节我们说到,应该用多个函数对分布映射的均值差异进行度量,那么选取的函数集应该具有什么样的特点?怎样选取合适的函数集呢?
特点一:函数集内的函数应该足够丰富,此时才能从多种维度度量两个分布的MD。
特点二:这个函数集应该能够随着数据集的增大,使MMD度量逐渐收敛。
可以证明:当函数集
F
{\cal F}
F是再生希尔伯特(RHKS)空间上的单位球(unit ball)时,此函数集可以满足以上特点(PS:留待以后证明)。
设X为样本空间(也可以是样本的隐层特征空间),H为希尔伯特特征空间,如果存在函数 φ ( x ) : X → H \varphi (x):X \to H φ(x):X→H,那么 φ ( x ) \varphi (x) φ(x)就是我们要找的映射函数。
实际上,我们无法直接给出 φ ( x ) \varphi (x) φ(x)的解析定义式,但我们能通过定义 k ( x , y ) = φ ( x ) ⋅ φ ( y ) k(x,y) = \varphi (x) \cdot \varphi (y) k(x,y)=φ(x)⋅φ(y)找到符合该条件的函数 k k k,如高斯核函数(又称Radial Basis Function, RBF,径向基函数)。我们称满足以上条件的函数 k k k为核函数,从而避免去显示地计算 φ ( x ) \varphi (x) φ(x)。
那么,我们应该如何计算
M
M
D
(
P
,
Q
)
=
∣
1
n
∑
i
=
1
n
φ
(
P
i
)
−
1
m
∑
i
=
1
m
φ
(
Q
i
)
∣
\rm{MMD}(P,Q) = \left| {\frac{1}{n}\sum\limits_{i = 1}^n {\varphi ({P_i})} - \frac{1}{m}\sum\limits_{i = 1}^m {\varphi ({Q_i})} } \right|
MMD(P,Q)=
n1i=1∑nφ(Pi)−m1i=1∑mφ(Qi)
呢?我们可以将MMD进行平方:
M
M
D
2
(
P
,
Q
)
=
1
n
2
∑
i
n
∑
i
′
n
φ
(
P
i
)
φ
(
P
i
′
)
−
2
n
m
∑
i
n
∑
j
m
φ
(
P
i
)
φ
(
Q
j
)
+
1
m
2
∑
j
m
∑
j
′
m
φ
(
Q
j
)
φ
(
Q
j
′
)
=
1
n
2
∑
i
n
∑
i
′
n
k
(
P
i
,
P
i
′
)
−
2
n
m
∑
i
n
∑
j
m
k
(
P
i
,
Q
j
)
+
1
m
2
∑
j
m
∑
j
′
m
k
(
Q
j
,
Q
j
′
)
\begin{array}{cc} {{\rm{MM}}{{\rm{D}}^{\rm{2}}}({\rm{P}},{\rm{Q}}){\rm{ = }}\frac{{\rm{1}}}{{{{\rm{n}}^{\rm{2}}}}}\sum\limits_{\rm{i}}^{\rm{n}} {\sum\limits_{{\rm{i'}}}^{\rm{n}} {\varphi ({{\rm{P}}_{\rm{i}}})\varphi ({{\rm{P}}_{{\rm{i'}}}})} } {\rm{ - }}\frac{{\rm{2}}}{{{\rm{nm}}}}\sum\limits_{\rm{i}}^{\rm{n}} {\sum\limits_{\rm{j}}^{\rm{m}} {\varphi ({{\rm{P}}_{\rm{i}}})\varphi ({{\rm{Q}}_{\rm{j}}})} {\rm{ + }}} \frac{{\rm{1}}}{{{{\rm{m}}^{\rm{2}}}}}\sum\limits_{\rm{j}}^{\rm{m}} {\sum\limits_{{\rm{j'}}}^{\rm{m}} {\varphi ({{\rm{Q}}_{\rm{j}}})\varphi ({{\rm{Q}}_{{\rm{j'}}}})} } }\\ {\qquad \qquad = \frac{1}{{{n^2}}}\sum\limits_i^n {\sum\limits_{i'}^n {k({{\rm{P}}_i},{{\rm{P}}_{i'}})} } - \frac{2}{{nm}}\sum\limits_i^n {\sum\limits_j^m {k({\rm{P}_i},{\rm{Q}_j})} + } \frac{1}{{{m^2}}}\sum\limits_j^m {\sum\limits_{j'}^m {k({\rm{Q}_j},{\rm{Q}_{j'}})} } } \end{array}
MMD2(P,Q)=n21i∑ni′∑nφ(Pi)φ(Pi′)−nm2i∑nj∑mφ(Pi)φ(Qj)+m21j∑mj′∑mφ(Qj)φ(Qj′)=n21i∑ni′∑nk(Pi,Pi′)−nm2i∑nj∑mk(Pi,Qj)+m21j∑mj′∑mk(Qj,Qj′)
通过以上公式已经可以对MMD的值进行计算,我们可以进一步将
M
M
D
2
\rm{MM{D^2}}
MMD2的表达式写成矩阵形式以简化公式:
M
M
D
2
(
P
,
Q
)
=
1
n
2
k
P
,
P
′
−
2
n
m
k
P
,
Q
+
1
m
2
k
Q
,
Q
′
\rm{MM{D^2}}(P,Q) = \frac{1}{{{n^2}}}{k_{P,P'}} - \frac{2}{{nm}}{k_{P,Q}} + \frac{1}{{{m^2}}}{k_{Q,Q'}}
MMD2(P,Q)=n21kP,P′−nm2kP,Q+m21kQ,Q′
进一步进行矩阵化:
K
=
[
k
P
,
P
′
k
P
,
Q
k
P
,
Q
k
Q
,
Q
′
]
,
L
=
[
1
n
2
−
1
n
m
−
1
n
m
1
m
2
]
K = \left[ {\begin{array}{cc} {{k_{P,P'}}}&{{k_{P,Q}}}\\ {{k_{P,Q}}}&{{k_{Q,Q'}}} \end{array}} \right],L = \left[ {\begin{array}{cc} {\frac{1}{{{n^2}}}}&{ - \frac{1}{{nm}}}\\ { - \frac{1}{{nm}}}&{\frac{1}{{{m^2}}}} \end{array}} \right]
K=[kP,P′kP,QkP,QkQ,Q′],L=[n21−nm1−nm1m21]
K
L
=
[
1
n
2
k
P
,
P
′
−
1
n
m
k
P
,
Q
d
o
n
′
t
c
a
r
e
d
o
n
′
t
c
a
r
e
−
1
n
m
k
P
,
Q
+
1
m
2
k
Q
,
Q
′
]
KL = \left[ {\begin{array}{cc} {\frac{1}{{{n^2}}}{k_{P,P'}} - \frac{1}{{nm}}{k_{P,Q}}}&{don't\ care}\\ {don't\ care}&{ - \frac{1}{{nm}}{k_{P,Q}} + \frac{1}{{{m^2}}}{k_{Q,Q'}}} \end{array}} \right]
KL=[n21kP,P′−nm1kP,Qdon′t caredon′t care−nm1kP,Q+m21kQ,Q′]
最终得到
M
M
D
2
\rm{MM{D^2}}
MMD2的矩阵化简化形式:
M
M
D
2
=
t
r
(
K
L
)
\rm{MM{D^2}}=tr(KL)
MMD2=tr(KL)
补充:高斯核函数
高斯核函数的定义为:
k
(
u
,
v
)
=
e
−
∥
u
−
v
∥
2
σ
k(u,v) = {e^{ - \frac{{{{\left\| {u - v} \right\|}^2}}}{\sigma }}}
k(u,v)=e−σ∥u−v∥2
实际应用中,会选取多个
σ
\sigma
σ作为核函数组成函数集
F
{\cal F}
F计算Mk-MMD。
本文参考:
https://www.bilibili.com/video/BV1vT4y177jt
https://blog.youkuaiyun.com/ChangHengyi/java/article/details/80577318