【ML算法学习】多核最大均值差异(MK-MMD)与深度适应网络(DAN)

本文介绍了多核最大均值差异(MK-MMD)和深度适应网络(DAN)的概念和应用。MK-MMD是一种衡量分布间差异的统计方法,而DAN是用于迁移学习的深度神经网络,通过最小化不同域之间的MMD来适应新任务。文章详细阐述了MMD的理论基础,包括核函数和最大均值差异的计算,以及DAN的结构和损失函数,展示了如何利用多核MMD进行层适应。

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

多核最大均值差异(MK-MMD)与深度适应网络(DAN)

1. 理论基础

(1)原点矩、中心矩

  1. 引言:当我们描述一个随机变量 x x x的时候,最直接的方法就是给出它的概率分布函数 f ( x ) f(x) f(x)。一些简单的分布可以这么干,但是对于一些复杂的、高维的随机变量,我们无法给出它们的分布函数。这时候可以用随机变量的矩来描述一个随机变量,比如一阶原点矩是均值,二至四阶中心矩被定义为方差(variance)、偏度(skewness)和峰度(kurtosis)。如果两个分布的均值和方差都相同的话,它们应该很相似,比如同样均值和方差的高斯分布和拉普拉斯分布。但是很明显,均值和方差并不能完全代表一个分布,这时候就需要更高阶的矩来描述一个分布。
  2. 定义:假设 x x x y y y是随机变量,若 E ( X k ) , k = 1 , 2 , ⋯ E\left(X^k\right), k=1,2, \cdots E(Xk),k=1,2,存在,则称其为 x x x k k k阶原点矩;若 E { [ X − E ( X ) ] k } , k = 2 , 3 , ⋯ E\left\{[X-E(X)]^k\right\}, k=2,3, \cdots E{ [XE(X)]k},k=2,3,存在,则称其为 x x x k k k阶中心矩。易得:均值 E ( X ) E(X) E(X) x x x的一阶原点矩,描述随机变量以概率为权重的平均值;方差 D ( X ) D(X) D(X) x x x的二阶中心矩,描述随机变量的离散程度。
  3. 对于任意已知矩母函数存在的分布,如果有另一个随机变量的所有n阶矩都与之相等,则这个随机变量服从于这个已知分布。但某些情况下,矩母函数可能并不收敛,则全部的n阶矩不能完全决定分布。
  4. 通俗解释:对于随机变量 x x x,每一个关于 x x x的矩都告诉你一些关于 x x x分布的信息,并且在一定情况下全部 n n n阶矩可以完全决定 x x x的分布。

(2)核函数定义(统计学习方法定义7.6)

  • 定义内容:假设有输入空间 X \mathcal{X} X X ∈ R n \mathcal{X} \in R^n XRn)和特征空间 H \mathcal{H} H(希尔伯特空间),若存在一个从 X \mathcal{X} X H \mathcal{H} H的映射 ϕ ( x ) : X → H \phi(x): \mathcal{X} \rightarrow \mathcal{H} ϕ(x):XH,使得对所有样本 x , z ∈ X x, z \in \mathcal{X} x,zX,有函数 K ( x , z ) K(x, z) K(x,z)满足条件 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x, z)=\phi(x) \cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)(内积),则称 K ( x , z ) K(x, z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数。

  • 核技巧思路:在学习和预测中只定义核函数 K ( x , z ) K(x, z) K(x,z),而不显式地定义映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ(),因为通常直接计算 K ( x , z ) K(x, z) K(x,z)比较容易,而由 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)来计算 K ( x , z ) K(x, z) K(x,z)比较困难( ϕ ( ⋅ ) \phi(\cdot) ϕ()是输入空间 X \mathcal{X} X到特征空间 H \mathcal{H} H的映射,特征空间一般是高维甚至无穷维的)。此外,对于给定的核函数 K ( x , z ) K(x, z) K(x,z),特征空间 H \mathcal{H} H和映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ()的取法不唯一,即便是在同一特征空间内也能取不同的映射。

  • 例:假设输入空间 X ∈ R 2 \mathcal{X} \in R^2 XR2,核函数为 K ( x , z ) = ( x ⋅ z ) 2 K(x, z)=(x \cdot z)^2 K(x,z)=(xz)2,试找出其相关的特征空间 H \mathcal{H} H和映射 ϕ ( ⋅ ) : R 2 → H \phi(\cdot): R^2 \rightarrow \mathcal{H} ϕ():R2H

    • 法1:取特征空间 H = R 3 \mathcal{H}=R^3 H=R3,记 x = ( x ( 1 ) , x ( 2 ) ) T x=\left(x^{(1)}, x^{(2)}\right)^{\mathrm{T}} x=(x(1),x(2))T z = ( z ( 1 ) , z ( 2 ) ) T z=\left(z^{(1)}, z^{(2)}\right)^{\mathrm{T}} z=(z(1),z(2))T,核函数为
      ( x ⋅ z ) 2 = ( x ( 1 ) z ( 1 ) + x ( 2 ) z ( 2 ) ) 2 = ( x ( 1 ) z ( 1 ) ) 2 + 2 x ( 1 ) z ( 1 ) x ( 2 ) z ( 2 ) + ( x ( 2 ) z ( 2 ) ) 2 (x \cdot z)^2=\left(x^{(1)} z^{(1)}+x^{(2)} z^{(2)}\right)^2=\left(x^{(1)} z^{(1)}\right)^2+2 x^{(1)} z^{(1)} x^{(2)} z^{(2)}+\left(x^{(2)} z^{(2)}\right)^2 (xz)2=(x(1)z(1)+x(2)z(2))2=(x(1)z(1))2+2x(1)z(1)x(2)z(2)+(x(2)z(2))2

      所以可以取映射 ϕ ( x ) = ( ( x ( 1 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^2, \sqrt{2} x^{(1)} x^{(2)},\left(x^{(2)}\right)^2\right)^{\mathrm{T}} ϕ(x)=((x(1))2,2 x(1)x(2),(x(2))2)T,易验证 ϕ ( x ) ⋅ ϕ ( z ) = ( x ⋅ z ) 2 = K ( x , z ) \phi(x) \cdot \phi(z)=(x \cdot z)^2=K(x, z) ϕ(x)ϕ(z)=(xz)2=K(x,z)

    • 法2:取 H = R 3 \mathcal{H}=R^3 H=R3以及 ϕ ( x ) = 1 2 ( ( x ( 1 ) ) 2 − ( x ( 2 ) ) 2 , 2 x ( 1 ) x ( 2 ) , ( x ( 1 ) ) 2 + ( x ( 2 ) ) 2 ) T \phi(x)=\frac{1}{\sqrt{2}}\left(\left(x^{(1)}\right)^2-\left(x^{(2)}\right)^2, 2 x^{(1)} x^{(2)},\left(x^{(1)}\right)^2+\left(x^{(2)}\right)^2\right)^{\mathrm{T}} ϕ(x)=2 1((x(1))2(x(2))2,2x(1)x(2),(x(1))2+(x(2))2)T同样满足条件。

    • 法3:取 H = R 4 \mathcal{H}=R^4 H=R4以及 ϕ ( x ) = ( ( x ( 1 ) ) 2 , x ( 1 ) x ( 2 ) , x ( 1 ) x ( 2 ) , ( x ( 2 ) ) 2 ) T \phi(x)=\left(\left(x^{(1)}\right)^2, x^{(1)} x^{(2)}, x^{(1)} x^{(2)},\left(x^{(2)}\right)^2\right)^T ϕ(x)=((x(1))2,x(1)x(2),x(1)x(2),(x(2))2)T满足条件。

  • 通俗理解:核方法将数据映射到更高维的空间,希望在这个更高维的空间中,数据可以变得更容易分离或更好的结构化。

2. 最大均值差异Maximum Mean Discrepancy(MMD)

(1)使用背景

  • Maximum Mean Discrepancy(MMD)是迁移学习,尤其是域适应中最常用的一种损失函数。其基本思想是:1)若两个随机变量的任意阶矩都相同,那么这两个分布就是一致的;2)若两个分布不相同,那么使得两个分布之间差距最大的那个矩应该被用来作为度量两个分布的标准。MMD主要被用来度量两个不同但相关的随机变量分布之间的距离。

(2)定义

  • 基本定义:
    M M D [ F , p , q ] : = sup ⁡ f ∈ F ( E p [ f ( x ) ] − E q [ f ( y ) ] ) M M D[\mathcal{F}, p, q]:=\sup _{f \in \mathcal{F}}\left(E_p[f(x)]-E_q[f(y)]\right) MMD[F,p,q]:=fFsup(Ep[f(x)]Eq[f(y)])
    其中, sup ⁡ \sup sup表示求上界即最大值, E p ( ⋅ ) E_p(\cdot) Ep()表示求期望值, f ( ⋅ ) f(\cdot) f()表示映射函数, F \mathcal{F} F表示函数域。 x x x为源域数据, y y y为目标域数据,假设它们的分布分别为 p \mathrm{p} p q \mathrm{q} q f ( x ) f(x) f(x) f ( y ) f(y) f(y)分别为源域和目标域数据经过映射 f ( ⋅ ) f(\cdot) f()后的值。

  • 定义式含义:寻找一个映射函数 f ( ⋅ ) f(\cdot) f() f ( ⋅ ) f(\cdot) f()能够将变量映射到高维空间,之后求两个分布的随机变量在映射后的期望的差,这个差值便是均值差异,然后寻找这个均值差异的上界,这个最大值便是MMD。

(3)数学推导

  1. 在实际使用中,函数域 F \mathcal{F} F不可以随便定义,因为即使两个随机变量分布一样,当样本有限时,在任意函数域中,总能找到一个函数 f ( ⋅ ) f(\cdot) f()使得两个随机变量分布的MMD距离无限大。因此,MMD中函数域定义在再生希尔伯特空间中单位球(即 ∥ f ∥ H ≤ 1 \|f\|_{\mathcal{H}} \leq 1 fH1)内的一个任意向量 f f f,表示基底向量 f f f在再生希尔伯特空间中的范数应该小于等于1。核函数对应的映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ()可以将随机变量 x x x映射到无穷维度上( ϕ ( x ) \phi(x) ϕ(x)), f ( x ) f(x) f(x)表示再生希尔伯特空间中基底向量 f f f与向量 ϕ ( x ) \phi(x) ϕ(x)的点积,即
    f ( x ) = ⟨ f , ϕ ( x ) ⟩ H f(x)=\langle f, \phi(x)\rangle_{\mathcal{H}} f(x)=f,ϕ(x)H
    一个随机变量经过映射后,其期望可以表示为:
    E p [ f ( x ) ] = ∫ X p ( d x

### 关于深度学习最大均值差异MMD)的概念 最大均值差异(Maximum Mean Discrepancy, MMD)是在统计学和机器学习领域内广泛应用的一个概念,用于量化两个概率分布之间的距离。具体而言,在高维特征空间中,如果两个分布相同,则它们的样本在该空间内的平均表示也应相等;反之亦然。因此,MMD可以作为检验两组数据是否源自同一分布的有效工具[^1]。 对于给定的概率分布 \(P\) 和 \(Q\) ,以及映射至再生核希尔伯特空间 (RKHS) 的函数 \(\phi(x)\)MMD被定义为: \[ \text{MMD}(P,Q)=\left \| E_{x∼P}[\phi(x)]−E_{y∼Q}[\phi(y)] \right \|_H^2 \] 其中 \(E_x\) 表示期望运算符,\(H\) 则代表 RKHS 中向量间的范数平方差。此表达式直观反映了当且仅当 P=Q 时,上述方程的结果才可能趋近零的事实[^3]。 ### 最大均值差异的应用场景 MMD不仅限于理论研究,在实际应用方面同样表现出色。特别是在无监督学习、生成对抗网络(GANs)训练过程中的模式崩溃问题解决上有着不可替代的作用。此外,在迁移学习特别是域适配任务里,利用MMD来最小化源域目标域间输入变量分布上的差距成为了一种常见策略[^2]。 ### 使用 PyTorch 实现 MMD 损失函数 为了便于开发者快速集成并应用于各种深度学习框架之中,社区提供了诸如 `MMD_Loss.Pytorch` 这样的开源库支持。下面给出一段简单的 Python 代码片段展示如何基于 PyTorch 计算 MMD: ```python import torch from torch import nn class MMDLoss(nn.Module): def __init__(self, kernel_mul=2.0, kernel_num=5): super(MMDLoss, self).__init__() self.kernel_num = kernel_num self.kernel_mul = kernel_mul self.fix_sigma = None @staticmethod def guassian_kernel(source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None): n_samples = int(source.size()[0]) + int(target.size()[0]) total = torch.cat([source, target], dim=0) total0 = total.unsqueeze(0).expand(int(total.size(0)), int(total.size(0)), int(total.size(1))) total1 = total.unsqueeze(1).expand(int(total.size(0)), int(total.size(0)), int(total.size(1))) L2_distance = ((total0-total1)**2).sum(2) bandwidth = [] if fix_sigma: bandwidth.append(fix_sigma) else: for i in range(kernel_num): bandwidth.append((L2_distance.max()/kernel_mul ** i).item()) bandwidth_torch = torch.tensor(bandwidth).to(device='cuda' if source.is_cuda else 'cpu') kernels_value = [torch.exp(-L2_distance / band) for band in bandwidth_torch] return sum(kernels_value) def mmd_loss(source_features, target_features): batch_size = int(source_features.size()[0]) kernels = MMDLoss.guassian_kernel( source_features, target_features, kernel_mul=MMDLoss().kernel_mul, kernel_num=MMDLoss().kernel_num, fix_sigma=None ) XX = kernels[:batch_size, :batch_size] YY = kernels[batch_size:, batch_size:] XY = kernels[:batch_size, batch_size:] YX = kernels[batch_size:, :batch_size] loss = torch.mean(XX + YY - XY -YX) return loss ``` 这段代码实现了多尺度高斯径向基函数(RBF)核下的MMD计算方式,并将其封装成易于调用的形式以便其他神经网络组件组合使用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夺命猪头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值