##代码及参考资料来源
Source code: easezyc/deep-transfer-learning [Github]
参考资料:迁移学习简明手册
MMD介绍
MMD(最大均值差异)是迁移学习,尤其是Domain adaptation (域适应)中使用最广泛(目前)的一种损失函数,主要用来度量两个不同但相关的分布的距离。两个分布的距离定义为:
M M D ( X , Y ) = ∣ ∣ 1 n ∑ i = 1 n ϕ ( x i ) − 1 m ∑ j = 1 m ϕ ( y j ) ∣ ∣ H 2 (1) MMD(X,Y) = ||\frac{1}{n}\sum_{i=1}^n\phi(x_i)-\frac{1}{m}\sum_{j=1}^m\phi(y_j)||_H^2\tag{1} MMD(X,Y)=∣∣n1i=1∑nϕ(xi)−m1j=1∑mϕ(yj)∣∣H2(1)
其中 H H H 表示这个距离是由 ϕ ( ) \phi() ϕ() 将数据映射到再生希尔伯特空间(RKHS)中进行度量的。
为什么要用MMD?
Domain adaptation的目的是将源域(Source domain)中学到的知识可以应用到不同但相关的目标域(Target domain)。本质上是要找到一个变换函数,使得变换后的源域数据和目标域数据的距离是最小的。所以这其中就要涉及如何度量两个域中数据分布差异的问题,因此也就用到了MMD。至于Domain adaptation的前生今世可以参考王晋东大佬的知乎专栏
MMD的理论推导
MMD的关键在于如何找到一个合适的 ϕ ( ) \phi() ϕ() 来作为一个映射函数。但是这个映射函数可能在不同的任务中都不是固定的,并且这个映射可能高维空间中的映射,所以是很难去选取或者定义的。那如果不能知道 ϕ \phi ϕ,那MMD该如何求呢?我们先展开把MMD展开:
M M D ( X , Y ) = ∣ ∣ 1 n 2 ∑ i n ∑ i ′ n ϕ ( x i ) ϕ ( x i ′ ) − 2 n m ∑ i n ∑ j m ϕ ( x i ) ϕ ( y j ) + 1 m 2 ∑ j m ∑ j ′ m ϕ ( y j ) ϕ ( y j ′ ) ∣ ∣ H (2) MMD(X,Y) =||\frac{1}{n^2}\sum_{i}^n\sum_{i'}^n\phi(x_i)\phi(x_i')-\frac{2}{nm}\sum_{i}^n\sum_{j}^m\phi(x_i)\phi(y_j)+\frac{1}{m^2}\sum_{j}^m\sum_{j'}^m\phi(y_j)\phi(y_j')||_H\tag{2} MMD(X,Y)=∣∣