什么是MMD Maximum Mean Discrepancy 最大均值差异?

server/2024/12/14 12:42:33/

9多次在迁移学习看到了,居然还是Bernhard Schölkopf大佬的论文,仔细看看。

一.什么是MMD?

1. MMD要做什么?

判断两个样本(族)是不是来自于同一分布

2.怎么做?(直观上)

  • 我们通过找到一个表现良好(例如,平滑)的函数来检验分布p和q是否不同,该函数在p的点上表现得很大,在q的点上表现得尽可能小(尽可能负)。我们使用两个样本的平均函数值之间的差异作为检验统计量;当这个值很大时,样本可能来自不同的分布。我们称这个检验统计量为最大平均差异(MMD)。[1]
  • 检验统计量是再现核希尔伯特空间(RKHS)的单位球中函数期望的最大差异,称为最大平均差异。[1]

所以就是要找一个最合理的指标,能够表示出这两个分布p q之间的差距。

3.怎么做?(统计上)

首先我们如果有两个分布的具体的分布函数f_Xf_Y,只要对比这两个函数,这个问题非常理想地解决了。

或者如[1]中所引用的引理:

所说,我们如果能获得所有有界连续函数,那么也能知道这两者分布是不是一样的。但是实际上这两个条件都实现不了或者难度太大。

那有没有什么指标(或者函数)能方便刻画分布的差别呢?

回想到在统计上有一个矩的概念[2],一阶中心矩是均值,二阶中心矩是方差,统计上还有任意n对应的n阶矩。

此处有一个引理:

如果f_Xf_Y的任意n阶矩都相等,那么这两个分布相等。

这个引理是错误的!这是必要不充分而不是充分必要的)那么如果找到适当的n,使得f_Xf_Y的n阶矩不相等,这就可以作为评估f_Xf_Y差别的一个标准了~也就是满足1.2节提出的性质,具体可以参考[2]。

或者更简单来说,我们先对比期望方差,期望方差一样了再找更高级的指标,直到找到不一样的。

但是实际上,我们并不是找一个适当的n,而是直接找一个映射也就是4.1节的f(x),在4.2节的具体实现中,简而言之就是所有n阶矩张成的无穷维线性空间的向量(可以理解为无穷维多项式函数)的内积导出的函数,具体可以看第4节。

4.怎么做?(定义详解)

4.1 定义MMD的公式

[1]里给了很清晰的定义,贴在下面:

(补充嘴一句,无偏估计和有效估计我随便看了[5],其实就是看是不是均值出现偏差)

熟悉泛函分析和统计的朋友肯定一眼看出,这是mapping!f把原始的数据点映射称为一个新的点并计算了距离。值得一提的是,这个是把原本高维的样本x映射为一个值f(x),再研究f(x)的期望。这有两个问题,(1)压缩为1维看似很粗暴,但是其实是有数学依据的。(2)不同的f肯定效果不一样,具体选择了什么样的映射呢?依据见4.2节。

4.2实现的具体形式(RKHF版本)

实际上,将再现核希尔伯特空间H中的单位球作为我们的MMD函数类F。[1]

这个再现核希尔伯特空间在SVM里出现过!(可参考我的博客[3]的2.3)在SVM里,我们用再现核希尔伯特空间来把弯曲的“分割面”进行"拉直":通过把原始点投影到高维空间中、牺牲了变量的低维度换取线性可分的好性质。

而在MMD,我们是通过投影、牺牲低维度获取什么好性质呢?[2]里讲的很好

在支持向量机中我们都知道有一个高斯核函数,它对应的映射函数恰好可以映射到无穷维上,映射到无穷维上再求期望,正好可以得到随机变量的高阶矩,这个方法有一个更高大上的名字,叫做kernel embedding of distributions[2],这个简单理解就是将一个分布映射到再生希尔伯特空间(每个核函数都对应一个RKHS)上的一个点,

这样两个分布之间的距离就可以用两个点的内积进行表示!

本来一个分布有乌泱泱一堆点,这样“压缩”到高维空间的一个点,就能求内积了是不是很帅!

remark:此处是把样本点集中样本个数“压缩”,但是向量维数“升高”到高维空间了。

然而,根据4.1可以看出,我们最终的MMD形式的f(x)是一个映射到一维而不是更高维,那么这个映射函数肯定不是我们想要的f(x)。因此我们还需要RKHF的额外性质和推导。

具体定义的公式先贴在最前面,还是参考[1]:

上述式子可以直接用,但是怎么证明呢?证明RKHS的结论(也就是把最早定义的含f的MMD版本实例化为核函数k导出的版本)要用到以下的推导: (也就是怎么表示式(1)中的期望)[1]

the MMD may be expressed as the distance in H between mean embeddings
(Borgwardt et al., 2006).

这个引理证明,MMD可以表示为平均嵌入之间的距离H 

((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(补充)RKHF 那些事(谱分解&Riesz表示定理)

这个式子来源于[2],理解可以看[2]引用的[6]。

推导再生性用到的无穷维线性空间是这个:[6]

太漂亮了,基础的希尔伯特空间这一套理论看的真爽,就是现在用不上,后续闲暇可以细看。简单来说就是用到矩阵理论中的谱分解和泛函里的Riesz表示定理,能够推出上面引用的这个式子。

5.具体的高斯核函数以及代码实现:

同SVM一样,我们不关心核函数(记为k(x))本身,而关心它的内积(一个二元函数k(x,y)=<k(x),k(y)>_H),这样我们定义了一个内积(可参考[4]证明符合内积的性质)

常用的依旧是高斯核函数: [4]

代码可以参考[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/163839117icon-default.png?t=O83Ahttps://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...icon-default.png?t=O83Ahttps://www.onurtunali.com/ml/2019/03/08/maximum-mean-discrepancy-in-machine-learning.html#references[5]什么是无偏估计?https://www.zhihu.com/question/22983179icon-default.png?t=O83Ahttps://www.zhihu.com/question/22983179 [6]Kernel Distribution Embedding https://zhuanlan.zhihu.com/p/114264831


http://www.ppmy.cn/server/150094.html

相关文章

OpenCV--项目:虚拟计数器

OpenCV--项目&#xff1a;虚拟计数器 代码和笔记 代码和笔记 import cv2 import numpy as np import time from cvzone.HandTrackingModule import HandDetector""" 项目&#xff1a;虚拟计数器 cvzone&#xff1a;cv任务开源库 mediapipe&#xff1a;姿态估计…

Docker安装MySQL5.5版本数据库(图文教程)

本章教程,介绍如何使用Docker安装MySQL低版本5.5版本的数据库。 一、拉取镜像 docker pull mysql:5.5二、启动容器 docker run -d --name mysql5.5 --restart=always

一键找出图像中物体的角点

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

关于消息队列性能是否能接收 5 万个 MQ

影响性能的因素 消息队列本身的性能&#xff1a; 不同的消息队列系统&#xff08;如 RabbitMQ、Kafka、RocketMQ 等&#xff09;有不同的性能特点。例如&#xff0c;Kafka 是高吞吐量的分布式消息队列&#xff0c;能够处理大规模的消息流。它的性能在设计上可以通过分区&…

deepin下载mysql教程

官方下载 Mysql 8.2 支持 here 解压到需要的文件夹去 (建议放到 /opt/mysql/mysql8) 建立 mysql 的用户与组 &#xff08;groupadd mysql && useradd -r -g mysql mysql&#xff09; 创建软链接到系统中,后继服务与配置中会使用到 cd /usr/local &&…

12.13 深度学习-空间注意力仿射变换STN

# 就是对图像做一个仿射 变换 仿射变换的参数要去学习 直接用nn.Linear()就行 # 仿射变换的原理就是 线性变换 # 这个仿射变换要加在模型最开始的地方 import torch import torch.nn as nn import torch.nn.functional as F class STN(nn.Module): def __init__(self, c, …

【Unity高级】如何获取着色器(Shader)的关键词

在动态设置Shader时&#xff0c;会需要通过EnableKeyword, DisableKeyword来完成。但一个Shader有哪些关键词呢&#xff1f;Unity的文档中并没有列出来&#xff0c;但我们可以通过遍历Shader的KeywordSpace来查看。 1. 代码如下 using UnityEngine;public class KeywordExamp…

中信建投张青减持交易课堂:金融智慧与公益的交响曲

在当今瞬息万变的金融市场中&#xff0c;中信建投张青减持交易课堂如同一股清流&#xff0c;不仅以其专业的金融培训体系引领行业风向&#xff0c;更将公益精神深深融入教育之中&#xff0c;谱写了一曲金融智慧与公益情怀的华美乐章。张青&#xff0c;这位在金融界享有盛誉的投…