MMD讲解

最大间隔度量(MMD)是一种衡量两个概率分布之间差异的方法,尤其在迁移学习中常用作损失函数。通过高阶矩来描述随机变量,MMD假设若任意阶矩相同则分布一致。MMD公式涉及再生希尔伯特空间中的函数期望,通过核函数可以将分布映射到高维空间并计算内积。实际应用中,可以通过样本的均值估计分布的核均值,进而计算MMD的近似值。MMD的平方可以简化为两个样本集内核矩阵的迹之差,便于计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MMD讲解

描述一个随机变量

去描述一个随机变量,最直接的方法就是给出它的概率分布函数 f ( x ) f(x) f(x)。一些简单的分布可以这么干,比如正态分布给出均值和方差就可以确定,但是对于一些复杂的、高维的随机变量,我们无法给出它们的分布函数。

这时候我们可以用随机变量的来描述一个随机变量,比如一阶中心矩是均值,二阶中心矩是方差等等。如果两个分布的均值和方差都相同的话,它们应该很相似,比如同样均值和方差的高斯分布和拉普拉斯分布。但是很明显,均值和方差并不能完全代表一个分布,这时候我们就需要更高阶的矩来描述一个分布。

举个例子,就好比描述人一样,如果两个人身高、轮廓都一样,我们会说这两个人很像。但是如果要说这两个人是一个人的话,我们如要更多的信息,比如血型、DNA等更加复杂的信息

而MMD的基本思想就是,如果两个随机变量的任意阶都相同的话,那么两个分布就是一致的。而当两个分布不相同的话,那么使得两个分布之间差距最大的那个矩应该被用来作为度量两个分布的标准。

衡量两个随机变量的差异

MMD常被用来度量两个分布之间的距离,是迁移学习中常用的损失函数。定义如下, x x x的分布为 p p p y y y的分布为 q q q

M M D [ F , p , q ] = sup ⁡ ∥ f ∥ H ⩽ 1 ( E p [ f ( x ) ] − E q [ f ( y ) ] ) MMD[F,p,q]=\sup\limits_{\Vert f\Vert_{\mathcal{H}\leqslant1}}({E_p[f(x)]-E_q[f(y)])} MMD[F,p,q]=fH1sup(Ep[f(x)]Eq[f(y)])

其中sup表示求上界, E p E_p Ep表示求期望, f ( ⋅ ) f(·) f()表示求映射函数,sup下面表示的式子在再生希尔伯特空间中的范数应该小于等于1。

式子中的 f f f就相当于将x映射到高阶上去,比如 x n x^n xn,那么对应的期望值就相当于在求n阶矩,然后将他们的上确界(最大值)作为MMD的值。

如何表示一个随机变量的任意阶矩

两个分布应该是由高阶矩来描述的,那么如何获得一个随机变量的高阶矩呢?核函数。高斯核函数,它对应的映射函数恰好可以映射到无穷维上,映射到无穷维上再求期望,正好可以得到随机变量的高阶矩,这个方法有一个更高大上的名字,叫做kernel embedding of distributions,这个简单理解就是将一个分布映射到再生希尔伯特空间(每个核函数都对应一个RKHS)上的一个点,这样两个分布之间的距离就可以用两个点的内积进行表示!

M M D [ F , p , q ] = sup ⁡ ∥ f ∥ H ⩽ 1 ( E p [ f ( x ) ] − E q [ f ( y ) ] ) MMD[F,p,q]=\sup\limits_{\Vert f\Vert_{\mathcal{H}}\leqslant1}({E_p[f(x)]-E_q[f(y)])} MMD[F,p,q]=fH1sup(Ep[f(x)]Eq[f(y)])

其中 E p [ f ( x ) ] = ∫ X p ( d x ) f ( x ) = ∫ X p ( d x ) < k ( x , ⋅ ) , f > H k = < ∫ X p ( d x ) k ( x , ⋅ ) , f > H k = < μ p , f > H k E_p[f(x)]=\int_{\mathcal{X}}p(dx)f(x)=\int_{\mathcal{X}}p(dx)\left< k(x,·),f\right>_{\mathcal{H}_k}=\left<\int_{\mathcal{X}}p(dx)k(x,·),f \right>_{\mathcal{H}_k}=\left<\mu_p,f \right>_{\mathcal{H}_k} Ep[f(x)]=Xp(dx)f(x)=Xp(dx)k(x,),fHk=Xp(dx)k(x,),fHk=μp,fHk

∥ f ∥ H ⩽ 1 \Vert f\Vert_{\mathcal{H}}\leqslant1 fH1目的也是为了上界避免随意取到无穷大

第一个等号就是利用期望展开;第二个等号利用的是RKHS的再生性,其实就是RKHS中的 f ( x ) f(x) f(x)都可以写成一个无穷维的向量 k ( x , ⋅ ) k(x,·) k(x,)与基底向量 f f f的内积;第三个等号利用的是内积的性质;最后一个等号 μ p \mu_p μp表示的就是kernel mean embedding。意义就是将 x x x利用 k ( x , ⋅ ) k(x,·) k(x,)映射到无穷维上,然后在每一个维度上都求期望。

这样一来MMD的公式就变为

M M D [ F , p , q ] = sup ⁡ ∥ f ∥ H ⩽ 1 ( < μ p − μ q , f > H ) MMD[F,p,q]=\sup\limits_{\Vert f\Vert_{\mathcal{H}\leqslant1}}(\left<\mu_p-\mu_q,f \right>_{\mathcal{H}}) MMD[F,p,q]=fH1sup(μpμq,fH)

根据内积的性质 < a , b > ⩽ ∥ a ∥ ∥ b ∥ \left< a,b\right>\leqslant \Vert a\Vert\Vert b\Vert a,bab,MMD公式可以写为

M M D ( p , q , H ) = ∥ μ p − μ q ∥ H MMD(p,q,\mathcal{H})=\Vert \mu_p-\mu_q\Vert_{\mathcal{H}} MMD(p,q,H)=μpμqH

但是 μ p \mu_p μp无法直接计算,可以使用均值代替,因为均值是期望的无偏估计。

假设 X ∼ p , Y ∼ q \mathbf{X}\sim p,\mathbf{Y}\sim q Xp,Yq,而且 X \mathbf{X} X有n个样本, Y \mathbf{Y} Y有m个样本,则

M M D [ F , X , Y ] = ∥ 1 n ∑ i = 1 n f ( x i ) − 1 m ∑ j = 1 m f ( y i ) ∥ H MMD[F,X,Y]=\Vert \frac{1}{n}\sum\limits_{i=1}\limits^{n}f(x_i)-\frac{1}{m}\sum\limits^{m}\limits_{j=1}f(y_i) \Vert_{\mathcal{H}} MMD[F,X,Y]=n1i=1nf(xi)m1j=1mf(yi)H

到这里我们还算是没有办法求,因为 f ( x i ) f(x_i) f(xi)是无穷维的。但是核技巧的关键就在于不需要显式地表示映射函数 f ( x ) f(x) f(x)来求两个向量的内积。因此我们对MMD进行平方,化简得到内积并用核函数表达

MMD ^ ( P , Q ) 2 = ∥ 1 m ∑ x i ϕ ( x i ) − 1 n ∑ y i ϕ ( y i ) ∥ 2 2 \widehat{\text{MMD}}(P,Q)^2=\left \|\frac{1}{m}\sum_{x_i} \phi(x_i) - \frac{1}{n}\sum_{y_i} \phi(y_i)\right \|^2_2 MMD (P,Q)2=m1xiϕ(xi)n1yiϕ(yi)22

= ∥ 1 m ∑ x i ϕ ( x i ) ∥ 2 + ∥ 1 n ∑ y i ϕ ( y i ) ∥ 2 − 2 ∥ 1 m ∑ x i ϕ ( x i ) 1 n ∑ y i ϕ ( y i ) ∥ =\|\frac{1}{m}\sum_{x_i} \phi(x_i)\|^2 + \|\frac{1}{n}\sum_{y_i} \phi(y_i)\|^2 - 2\|\frac{1}{m}\sum_{x_i} \phi(x_i) \frac{1}{n}\sum_{y_i} \phi(y_i)\| =m1xiϕ(xi)2+n1yiϕ(yi)22m1xiϕ(xi)n1yiϕ(yi)

∥ 1 m ∑ x i ϕ ( x i ) ∥ 2 = 1 m 2 ( ϕ ( x 1 ) + ϕ ( x 2 ) + ⋯ + ϕ ( x m ) ) T ( ϕ ( x 1 ) + ϕ ( x 2 ) + ⋯ + ϕ ( x m ) ) \|\frac{1}{m}\sum_{x_i} \phi(x_i)\|^2=\frac{1}{m^2} (\phi(x_1)+\phi(x_2)+\cdots+\phi(x_m))^T(\phi(x_1)+\phi(x_2)+\cdots+\phi(x_m)) m1xiϕ(xi)2=m21(ϕ(x1)+ϕ(x2)++ϕ(xm))T(ϕ(x1)+ϕ(x2)++ϕ(xm))

= 1 m 2 { ϕ ( x 1 ) T ϕ ( x 1 ) + ⋯ + ϕ ( x 1 ) T ϕ ( x m ) =\frac{1}{m^2}\{\phi(x_1)^T\phi(x_1) + \cdots + \phi(x_1)^T\phi(x_m) =m21{ϕ(x1)Tϕ(x1)++ϕ(x1)Tϕ(xm)

+ ϕ ( x 2 ) T ϕ ( x 1 ) + ⋯ + ϕ ( x 2 ) T ϕ ( x m ) +\phi(x_2)^T\phi(x_1) + \cdots + \phi(x_2)^T\phi(x_m) +ϕ(x2)Tϕ(x1)++ϕ(x2)Tϕ(xm)

⋯ + ϕ ( x m ) T ϕ ( x 1 ) + ⋯ + ϕ ( x m ) T ϕ ( x m ) } \cdots+\phi(x_m)^T\phi(x_1) + \cdots + \phi(x_m)^T\phi(x_m)\} +ϕ(xm)Tϕ(x1)++ϕ(xm)Tϕ(xm)}

= 1 m 2 { k ( x 1 , x 1 ) + k ( x 1 , x 2 ) + ⋯ + k ( x 1 , x m ) + k ( x 2 , x 1 ) + ⋯ + k ( x 2 , x m ) + ⋯   } =\frac{1}{m^2}\{k(x_1,x_1)+k(x_1,x_2)+\cdots +k(x_1,x_m) + k(x_2,x_1)+\cdots+k(x_2,x_m) +\cdots\} =m21{k(x1,x1)+k(x1,x2)++k(x1,xm)+k(x2,x1)++k(x2,xm)+}

= 1 m 2 ∑ i , j k ( x i , x j ) =\frac{1}{m^2}\sum_{i,j} k(x_i,x_j) =m21i,jk(xi,xj)

同理

∥ 1 n ∑ y i ϕ ( y i ) ∥ 2 = 1 n 2 ∑ i , j k ( y i , y j ) \|\frac{1}{n}\sum_{y_i} \phi(y_i)\|^2=\frac{1}{n^2}\sum_{i,j} k(y_i,y_j) n1yiϕ(yi)2=n21i,jk(yi,yj)

∥ 1 m ∑ x i ϕ ( x i ) 1 n ∑ y i ϕ ( y i ) ∥ = 1 m n ∑ i , j k ( x i , y j ) \|\frac{1}{m}\sum_{x_i} \phi(x_i) \frac{1}{n}\sum_{y_i} \phi(y_i)\|=\frac{1}{mn}\sum_{i,j}k(x_i,y_j) m1xiϕ(xi)n1yiϕ(yi)=mn1i,jk(xi,yj)

所以有

MMD ^ 2 = 1 m 2 ∑ i , j k ( x i , x j ) + 1 n 2 ∑ i , j k ( y i , y j ) − 2 m n ∑ i , j k ( x i , y j ) \widehat{\text{MMD}}^2=\frac{1}{m^2}\sum_{i,j} k(x_i,x_j)+\frac{1}{n^2}\sum_{i,j} k(y_i,y_j)-\frac{2}{mn}\sum_{i,j}k(x_i,y_j) MMD 2=m21i,jk(xi,xj)+n21i,jk(yi,yj)mn2i,jk(xi,yj)

转载/参考:https://zhuanlan.zhihu.com/p/163839117

https://www.cnblogs.com/zhangcn/p/13710192.html

### 如何使用MMD(最大平均差异)在迁移学习中找到相似样本 #### 方法概述 为了实现这一目标,在源域和目标域之间计算特征表示的最大均值差异(MMD),以此作为衡量两个分布之间的距离指标[^1]。具体来说,通过最小化这两个领域间的MMD值,可以使得模型学到更具有泛化的表征。 #### 计算过程 假设存在来自不同但相关联的数据集\(X_s\)(源域)以及\(X_t\)(目标域),每组数据都服从各自的概率分布P(X) 和 Q(Y)[^3]。对于任意给定的核函数k(x, y), MMD被定义为: \[ \text{MMD}(F,P,Q)=\left \| E_{x,x'\sim P}[k(x,x')]+E_{y,y'~Q}[k(y,y')]-2E_{x\sim P,y\sim Q}[k(x,y)] \right \|_F \] 其中\(E[\cdot]\)代表期望运算符;而下标中的变量指示是从哪个分布抽取样本来估计该表达式的值[^4]。 当试图寻找最能反映两批数据共同特性的映射时,则需优化上述公式以获得最佳参数配置下的低MMD得分。这通常涉及到构建一个合适的损失函数并将此项加入到训练过程中去。 #### 应用实例 在一个典型的场景中,比如图像分类任务里的跨域适应问题,可以通过调整网络结构或引入额外组件来降低源域与目标域间基于某些预选特征空间上的MMD差距。这样做有助于提高目标任务性能的同时减少过拟合风险。 ```python import torch from torch import nn class FeatureExtractor(nn.Module): def __init__(self): super().__init__() self.model = nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.ReLU(), ... ) def compute_mmd(source_features, target_features): """Compute the Maximum Mean Discrepancy between source and target features.""" diff = mean_kernel_matrix(source_features) + \ mean_kernel_matrix(target_features) - \ 2 * cross_kernel_matrix(source_features, target_features) return torch.mean(diff) # During training loop... for epoch in range(num_epochs): optimizer.zero_grad() src_output = feature_extractor(src_data).view(-1, output_size) tgt_output = feature_extractor(tgt_data).view(-1, output_size) mmd_loss = compute_mmd(src_output, tgt_output) total_loss = task_specific_loss + lambda_param * mmd_loss total_loss.backward() optimizer.step() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值