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

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.mzph.cn/bicheng/63978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机操作系统虚拟化与云计算教学指南

一、引言 在当今数字化时代&#xff0c;计算机操作系统虚拟化和云计算已成为信息技术领域的核心技术。无论是大型企业的数据中心&#xff0c;还是个人开发者的工作环境&#xff0c;都广泛应用着这些技术。本教学博客将深入探讨虚拟化的基本概念、虚拟化技术、云计算等重要内容…

电梯内电动车识别数据集,可准确识别电梯内是否有电动车 支持YOLO,COCO,VOC三种格式的标注 7111张图片

电梯内电动车识别数据集&#xff0c;可识别电梯内是否有电动车 支持YOLO&#xff0c;COCO&#xff0c;VOC三种格式的标注 7111张图片 7111总图像数 数据集分割 训练组 74&#xff05; 5291图片 有效集 16% 1168图片 测试集 9&#xff05; 652…

Collection接口

目录 一. Collection基本介绍 二. Collection中的方法及其使用 1. 添加元素 (1) 添加单个元素 (2) 添加另一集合中的所有元素 2. 删除元素 (1) 删除单个元素 (2) 删除某个集合中包含在其他集合中的元素 (3) 保留两个集合中的交集部分, 删除其他元素. 3. 遍历元素 (1) …

Mybatis Plus 3.0 快速入门

1、简介 MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、创建并初始化数据库 2.1、创建数据库 mybatis_plus 2.2、创建 User 表 其表结构如下: idnameageemail1Jone18test1@baomidou.com2Jack…

图像清晰度计算

对于单图清晰度检测&#xff0c;可以采用基于梯度的方法来评估图像的清晰度。这些方法通过计算图像中边缘信息的强度来量化图像是否足够清晰。以下是几种常用的技术及其具体实现方式&#xff0c;特别适用于单张图片的清晰度检测。 拉普拉斯变换&#xff08;Laplacian&#xff…

Verilog实现图像处理的行缓存Line Buffer

在图像处理中&#xff0c;难免会遇到对图像进行卷积或者模板的局部处理&#xff0c;例如ISP中的一些算法&#xff0c;很大部分都需要一个窗口&#xff0c;在实时视频处理中&#xff0c;可以利用行缓存Line buffer可以暂存几行数据&#xff0c;然后同时输出每行中的对应列的像素…

【银河麒麟高级服务器操作系统】有关dd及cp测试差异的现象分析详解

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn dd现象 使用银河麒麟高级服务器操作系统执行两次…

C++ 中面向对象编程如何处理异常?

一、引言 在 C 编程中&#xff0c;异常处理是一项重要的技术&#xff0c;它可以帮助我们更好地管理程序中的错误情况&#xff0c;提高程序的稳定性和可靠性。特别是在面向对象编程中&#xff0c;异常处理更是不可或缺的一部分。本文将介绍 C 中面向对象编程如何处理异常&#…

ORACLE逗号分隔的字符串字段,关联表查询

使用场景如下&#xff1a; oracle12 以前的写法&#xff1a; selectt.pro_ids,wm_concat(t1.name) pro_names from info t,product t1 where instr(,||t.pro_ids|| ,,,|| t1.id|| ,) > 0 group by pro_ids oracle12 以后的写法&#xff1a; selectt.pro_ids,listagg(DIS…

记录2024-leetcode-字符串DP

10. 正则表达式匹配 - 力扣&#xff08;LeetCode&#xff09;

微信开发者工具(小程序)的版本管理,Git Push 和 Pull

微信开发者工具&#xff08;小程序&#xff09;的版本管理&#xff0c;Git Push 和 Pull 一、设置 第一次用微信开发者工具自带的版本管理的拉取和推送功能&#xff0c;稍稍的研究了下。 1、首先要先设置 “用户”&#xff0c;名字和邮箱&#xff0c;不一定要真名&#xff0c…

MyBatis学习笔记:进阶知识2

MyBatis 作为一款优秀的持久层框架&#xff0c;在 Java 开发中占据着重要地位。它简化了数据库操作&#xff0c;提供了灵活且高效的数据访问方式。本文将深入探讨 MyBatis 的核心功能&#xff0c;包括分页查询、联表查询、动态 SQL 以及代码自动生成&#xff0c;并结合实际案例…

2020-12-07 光棍数

由光棍数的特征可推导其商的个位数不存在偶数且只有1、3、7、9这4个数。一个数可匹配多个光棍数且必定是中间隔着0的循环数。 void 光棍数(int n) {//缘由http://ask.csdn.net/questions/3444069 做乘法运行时间超长int w 0; long long x 111111111111111, j 0;//j x*n;/…

【Linux系统】—— 初识 shell 与 Linux 中的用户

【Linux系统】—— 初识shell 与 Linux 中的用户 1 Xshell 运行原理1.1 命令行的组成1.2 外壳程序 2 Linux中的用户2.1 两种用户2.2 创建普通用户2.3 用户切换2.3.1 普通->超级2.3.2 超级->普通 3 指令的短暂提权3.1 为什么要提权3.2 sudo 指令3.3 人人都能提权吗 1 Xshe…

.NET平台使用C#设置Excel单元格数值格式

设置Excel单元格的数字格式是创建、修改和格式化Excel文档的关键步骤之一&#xff0c;它不仅确保了数据的正确表示&#xff0c;还能够增强数据的可读性和专业性。正确的数字格式可以帮助用户更直观地理解数值的意义&#xff0c;减少误解&#xff0c;并且对于自动化报告生成、财…

Android显示系统(10)- SurfaceFlinger内部结构

一、前言: 之前讲述了native层如何使用SurfaceFlinger,我们只是看到了简单的API调用,从本文开始,我们逐步进行SurfaceFlinger内部结构的分析。话不多说,莱茨狗~ 二、类图: 2.1、总体架构: 先看下SurfaceFlinger的关键成员和我们BootAnimation侧关键成员如何对应起来…

深度学习中的多通道卷积与偏置过程详解

目录 ​编辑 多通道卷积的深入理解 &#x1f50d; 卷积核的多维特性 &#x1f30c; 卷积操作的细节 &#x1f527; 多通道卷积的优势 &#x1f31f; 偏置过程的深入理解 &#x1f3af; 偏置的两种实现方式 &#x1f6e0;️ 偏置的作用与重要性 &#x1f308; 多通道卷…

易语言鼠标轨迹算法(游戏防检测算法)

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

LeetCode 718. 最长重复子数组 java题解

https://leetcode.cn/problems/maximum-length-of-repeated-subarray/description/ 动态规划 class Solution {public int findLength(int[] nums1, int[] nums2) {int len1nums1.length,len2nums2.length;int[][] dpnew int[len11][len21];dp[0][0]0;//没有意义&#xff0c;…

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scratc…