MMD :maximum mean discrepancy

MMD:maximum mean discrepancy。最大平均差异。最先提出的时候用于双样本的检测(two-sample test)问题,用于判断两个分布p和q是否相同。它的基本假设是:如果对于所有以分布生成的样本空间为输入的函数f,如果两个分布生成的足够多的样本在f上的对应的像的均值都相等,那么那么可以认为这两个分布是同一个分布。现在一般用于度量两个分布之间的相似性。在[1]中从任意空间到RKHS上介绍了MMD的计算,这里根据这个顺序来介绍。
1.任意函数空间(arbitary function space)的MMD
具体而言,基于MMD(maximize mean discrepancy)的统计检验方法是指下面的方式:基于两个分布的样本,通过寻找在样本空间上的连续函数f,求不同分布的样本在f上的函数值的均值,通过把两个均值作差可以得到两个分布对应于f的mean discrepancy。寻找一个f使得这个mean discrepancy有最大值,就得到了MMD。最后取MMD作为检验统计量(test statistic),从而判断两个分布是否相同。如果这个值足够小,就认为两个分布相同,否则就认为它们不相同。同时这个值也用来判断两个分布之间的相似程度。如果用F表示一个在样本空间上的连续函数集,那么MMD可以用下面的式子表示:
defination
假设X和Y分别是从分布p和q通过独立同分布(iid)采样得到的两个数据集,数据集的大小分别为m和n。基于X和Y可以得到MMD的经验估计(empirical estimate)为:
emperical definition
在给定两个分布的观测集X,Y的情况下,这个结果会严重依赖于给定的函数集F。为了能表示MMD的性质:当且仅当p和q是相同分布的时候MMD为0,那么要求F足够rich;另一方面为了使检验具有足够的连续性(be consistent in power),从而使得MMD的经验估计可以随着观测集规模增大迅速收敛到它的期望,F必须足够restrictive。文中证明了当F是universal RKHS上的(unit ball)单位球时,可以满足上面两个性质。
2.再生核希尔伯特空间的MMD(The MMD In reproducing kernel Hilbert Spaces):
这部分讲述了在RHKS上单位球(unit ball)作为F的时,通过有限的观测来对MMD进行估计,并且设立一些MMD可以用来区分概率度量的条件。
在RKHS上,每个f对应一个feature map。在feature map的基础上,首先对于某个分布p定义一个mean embedding of p,它满足如下的性质:
mean embedding
mean embedding存在是有约束条件的[1]。在p和q的mean embedding存在的条件下,MMD的平方可以表示如下:
squaredMMD
下面是关于MMD作为一个Borel probability measures时,对F的一个约束及其证明,要求F:be a unit ball in a universal RKHS。比如Gaussian和Laplace RKHSs。进一步在给定了RKHS对应核函数,这个MMD的平方可以表示:
kernelizedMMD
x和x’分别表示两个服从于p的随机变量,y和y‘分别表示服从q的随机变量。对于上面的一个统计估计可以表示为:
empirical kernelized MMD
对于一个two-sample test, 给定的null hypothesis: p和q是相同,以及the alternative hypothesis: p和q不等。这个通过将test statistic和一个给定的阈值相比较得到,如果MMD大于阈值,那么就reject null hypothesis,也就是两个分布不同。如果MMD小于某个阈值,就接受null hypothesis。由于MMD的计算时使用的是有限的样本数,这里会出现两种类型的错误:第一种错误出现在null hypothesis被错误的拒绝了;也就是本来两个分布相同,但是却被判定为相同。反之,第二种错误出现在null hypothesis被错误的接受了。文章[1]中提供了许多关于hypothesis test的方法,这里不讨论。
在domain adaptation中,经常用到MMD来在特征学习的时候构造正则项来约束学到的表示,使得两个域上的特征尽可能相同。从上面的定义看,我们在判断两个分布p和q的时候,需要将观测样本首先映射到RKHS空间上,然后再判断。但实际上很多文章直接将观测样本用于计算,省了映射的那个步骤。

reference
[1] A kernel two sample test
[2] Optimal kernel choice for large-scale two-sample tests
[3] Deep domain confusion: maximizing for domain invariance
[4] Learning transferable feature with deep adaptation nets
[5] Deep transfer network:Unsupervised domain adaptation
[6] Adaptive visual category models to new domains
[7] Geodesic flow kernel for unsupervised domain adaptation
[8] Transfer sparse coding for robust image representation

  • 44
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
PyTorch对于求maximum mean discrepancy(最大均值差异)可以通过以下步骤实现: 首先,通过定义核函数来测量两个分布之间的差异。可以使用高斯核函数来计算样本的欧氏距离,并通过指定带宽参数来调整核函数的宽度。PyTorch提供了torch.exp函数来计算指数函数。 其次,计算两个分布的均值。对于每个分布,可以通过计算样本张量的平均值来得到。 然后,计算最大均值差异。最大均值差异是指两个分布之间的最大差异,可以通过选择最大均值差异的值来判断两个分布是否相同。计算最大均值差异可以通过计算样本集之间的核矩阵并选择其中的最大值来实现。PyTorch提供了torch.mm函数来计算矩阵乘法,并使用torch.max函数选择最大值。 最后,将上述步骤结合起来,使用PyTorch的张量操作和数学函数来实现maximum mean discrepancy的计算。具体代码如下: ```python import torch def maximum_mean_discrepancy(x, y, bandwidth): # 计算高斯核 def gaussian_kernel(x, y, bandwidth): diff = torch.unsqueeze(x, 1) - torch.unsqueeze(y, 0) norm = torch.norm(diff, dim=2) return torch.exp(-0.5 * (norm / bandwidth) ** 2) # 计算样本均值 def mean(x): return torch.mean(x, dim=0) # 计算最大均值差异 kernel_xx = gaussian_kernel(x, x, bandwidth) kernel_xy = gaussian_kernel(x, y, bandwidth) kernel_yy = gaussian_kernel(y, y, bandwidth) mmd = torch.max(torch.mean(kernel_xx) + torch.mean(kernel_yy) - 2 * torch.mean(kernel_xy)) return mmd # 示例数据 x = torch.tensor([[1, 2], [3, 4], [5, 6]]) y = torch.tensor([[2, 3], [4, 5], [6, 7]]) bandwidth = 1 # 求解最大均值差异 mmd = maximum_mean_discrepancy(x, y, bandwidth) print(mmd) ``` 这段代码演示了如何使用高斯核函数和PyTorch的张量操作来计算两个样本集之间的最大均值差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值