9多次在迁移学习看到了,居然还是Bernhard Schölkopf大佬的论文,仔细看看。
一.什么是MMD?
1. MMD要做什么?
判断两个样本(族)是不是来自于同一分布
2.怎么做?(直观上)
- 我们通过找到一个表现良好(例如,平滑)的函数来检验分布p和q是否不同,该函数在p的点上表现得很大,在q的点上表现得尽可能小(尽可能负)。我们使用两个样本的平均函数值之间的差异作为检验统计量;当这个值很大时,样本可能来自不同的分布。我们称这个检验统计量为最大平均差异(MMD)。[1]
- 检验统计量是再现核希尔伯特空间(RKHS)的单位球中函数期望的最大差异,称为最大平均差异。[1]
所以就是要找一个最合理的指标,能够表示出这两个分布p q之间的差距。
3.怎么做?(统计上)
首先我们如果有两个分布的具体的分布函数和,只要对比这两个函数,这个问题非常理想地解决了。
或者如[1]中所引用的引理:
所说,我们如果能获得所有有界连续函数,那么也能知道这两者分布是不是一样的。但是实际上这两个条件都实现不了或者难度太大。
那有没有什么指标(或者函数)能方便刻画分布的差别呢?
回想到在统计上有一个矩的概念[1],一阶中心矩是均值,二阶中心矩是方差,统计上还有任意n对应的n阶矩。
此处有一个引理:
如果和的任意n阶矩都相等,那么这两个分布相等。
那么我们只要找最低的n使得和的n阶矩不相等,这就可以作为评估和差别的一个标准了~(可以证明满足1.2的性质,具体可以参考[1])
或者更简单来说,我们先对比期望方差,期望方差一样了再找更高级的指标,直到找到不一样的。
4.怎么做?(定义详解)
4.1 定义MMD的公式
[1]里给了很清晰的定义,贴在下面:
(补充嘴一句,无偏估计和有效估计我随便看了[5],其实就是看是不是均值出现偏差)
熟悉泛函分析和统计的朋友肯定一眼看出,这是mapping!把原始的数据点映射称为一个新的点并计算了距离。但是不同的f肯定效果不一样~具体选择了什么呢?看下一节。
4.2实现的具体形式(RKHF版本)
实际上,将再现核希尔伯特空间H中的单位球作为我们的MMD函数类F[1],
这个再现核希尔伯特空间在SVM里出现过!(可参考我的博客[3]的2.3)在SVM里,我们用再现核希尔伯特空间来把弯曲的“分割面”进行"拉直":通过把原始点投影到高维空间中、牺牲了变量的低维度换取线性可分的好性质。
而在MMD,我们是通过投影、牺牲低维度获取什么好性质呢?[2]里讲的很好
在支持向量机中我们都知道有一个高斯核函数,它对应的映射函数恰好可以映射到无穷维上,映射到无穷维上再求期望,正好可以得到随机变量的高阶矩,这个方法有一个更高大上的名字,叫做
kernel embedding of distributions
[2],这个简单理解就是将一个分布映射到再生希尔伯特空间(每个核函数都对应一个RKHS)上的一个点,这样两个分布之间的距离就可以用两个点的内积进行表示!
本来一个分布有乌泱泱一堆点,这样“压缩”到高维空间的一个点,就能求内积了是不是很帅!
具体定义的公式先贴在最前面,还是参考[1]:
上述式子可以直接用,但是怎么证明呢?证明RKHS的结论(也就是把最早定义的实例化为核函数)要用到以下的推导: (也就是怎么表示式(1)中的期望)[1]
这个引理证明,MMD可以表示为平均嵌入之间的距离H
the MMD may be expressed as the distance in H between mean embeddings
(Borgwardt et al., 2006).
(Borgwardt et al., 2006).指的是:K. M. Borgwardt, A. Gretton, M. J. Rasch, H.-P. Kriegel, B. Scholkopf, and A. J. Smola. Integrating ¨structured biological data by kernel maximum mean discrepancy. Bioinformatics (ISMB), 22(14):e49–e57, 2006. 我没看 有需求可以参考哈。
以上定理证明最重要的式第二行,这两个期望的差咋就成了一个内积?回答这个问题,就需要很长的故事了……
4.3(补充)RKHS 那些事(谱分解&Riesz表示定理)
这个式子来源于[2],理解可以看[2]引用的[6]。
推导再生性用到的无穷维线性空间是这个:[6]
太漂亮了,基础的希尔伯特空间这一套理论看的真爽,就是现在用不上,后续闲暇可以细看。简单来说就是用到矩阵理论中的谱分解和泛函里的Riesz表示定理,能够推出上面引用的这个式子。
具体的再生性的无穷维线性空间是
5.具体实现:
同SVM一样,我们不关心核函数(记为)本身,而关心它的内积(一个二元函数),这样我们定义了一个内积(可参考[4]证明符合内积的性质)
常用的依旧是高斯核函数: [4]
6.代码实现:
[2][6]里很清晰!
参考文献:
[1]Gretton, Arthur, et al. "A kernel two-sample test." The Journal of Machine Learning Research 13.1 (2012): 723-773.
[2]统计知识(一)MMD Maximum Mean Discrepancy 最大均值差异https://zhuanlan.zhihu.com/p/163839117https://zhuanlan.zhihu.com/p/163839117
[3]什么是支持向量机(Support vector machine)和其原理_支持向量机(support vector machine, svm)-CSDN博客
[4]Maximum Mean Discrepancy (MMD) in Machine LearningMaximum mean discrepancy (MMD) is a kernel based statistical test used to determine whether given two distribution are the same which is proposed in [1]. MMD...https://www.onurtunali.com/ml/2019/03/08/maximum-mean-discrepancy-in-machine-learning.html#references[5]什么是无偏估计?https://www.zhihu.com/question/22983179https://www.zhihu.com/question/22983179 [6]Kernel Distribution Embedding https://zhuanlan.zhihu.com/p/114264831https://zhuanlan.zhihu.com/p/114264831