Maximum Mean Discrepancy理解
MMD理解
1.定义
MMD:maximum mean discrepancy。最大平均差异。参考网上定义为:基于两个分布的样本,通过寻找在样本空间上的连续函数f,求不同分布的样本在f上的函数值的均值,通过把两个均值作差可以得到两个分布对应于f的mean discrepancy。寻找一个f使得这个mean discrepancy有最大值,就得到了MMD。最后取MMD作为检验统计量(test statistic),从而判断两个分布是否相同。
如果这个值足够小,就认为两个分布相同,否则就认为它们不相同。同时这个值也用来判断两个分布之间的相似程度。而在迁移学习中,我们这个f一般是用高斯核函数(RBF)。
基于RHKS的MMD公式为:
2.推导
根据定义来理解,我们可以知道求解MMD首先需要知道样本s和t经过函数f输出后的均值
既然知道了分布的均值的求法,那映射函数
核(kernel)其实就是帮助我们省去在高维空间中进行繁琐计算的“简便运算法”,甚至还能解决无限维空间无法计算的问题。核运算隐式地将两个向量转换为其他形式然后求内积
所以我们的样本经过函数
高斯核函数
这里我们取
需要注意的一点是,在这里求解
那这个[n_batch, m_vector]向量矩阵是怎么来的呢?在迁移学习任务中,我们首先通过特征抽取层将每个batch输入的n张图片向量化为一个大小为[n,m]的矩阵,m为每张图片特征向量的长度。我们假定源域
同理可求得
所以我们可以进一步得到
MMD的大致计算过程就这么多,有兴趣可自行推导。
3.理解
根据以上推导,我们可以将MMD公式简化为
怎么理解这句话呢?我们由梯度公式
由图像可知:
1)MMD函数和两个分布之间的差异接近线性关系;
2)当两个分布重合的时候,MMD为0.
具体到三维空间中来,假设我们的源域S的分布如下:X和Y为在源域中不同的抽样方式,Z维(
这样通过求得不同域下样本间的差异度的差异度,就是我们的MMD值。
4.问题
1)在迁移学习中,为什么要挨个对样本间求差呢?
因为我们从目标域数据集中抽取一个batch样本的时候,事先并不知道每一个样本的类别。所以为了消除类别间差异的特殊性,我们能想到的就是对全局样本间分别计算差异。
2)MMD和GAN有什么区别呢?
两者都是对数据分布距离的一种度量。在迁移学习方面也有很多使用GAN替代MMD的例子。MMD我们采用的RKHS空间类间差的欧几里得距离,GAN采用的JS距离。但GAN在考虑样本间关系上是采用鉴别器多层神经元来拟合。
3)MMD是如何在源域和目标域类别不对应的情况下还能迁移呢?
如果是传统方法我们首先肯定会疑惑,既然不知道从数据集抽取样本的类别,那在拉近距离的过程中把不同类别的距离拉近怎么办。所以MMD才会考虑把同域的类间差异当做是比较项而不是跨域的类别互相比较。
4)域适应忠的MMD和风格迁移中的提取content feature的Gram Matrax有什么区别?
已经有人证明了Gram Matrix就是多项式核的MMD。具体证明过程可以参照论文《Demystifying Neural Style Transfer》
reference
【1】http://blog.****.net/a1154761720/article/details/51516273
【2】Gretton A, Borgwardt K M, Rasch M J, et al. A kernel two-sample test[J]. Journal of Machine Learning Research, 2012, 13(Mar): 723-773.
【3】Long M, Zhu H, Wang J, et al. Unsupervised domain adaptation with residual transfer networks[C]//Advances in Neural Information Processing Systems. 2016: 136-144.
【4】https://github.com/thuml/transfer-caffe
【5】https://www.zhihu.com/question/30371867
【6】Li Y, Wang N, Liu J, et al. Demystifying Neural Style Transfer[J]. 2017:2230-2236.