【代码阅读】最大均值差异(Maximum Mean Discrepancy, MMD)损失函数代码解读(Pytroch版)

本文介绍了最大均值差异(MMD)在迁移学习中的作用,作为评估和减少不同但相关分布之间距离的手段。通过理论推导和代码示例,详细阐述了MMD的计算过程,特别是在域适应问题中的应用。通过实验展示了MMD如何量化不同数据分布的差异,并指出数据取值范围对MMD计算的影响。

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

##代码及参考资料来源
Source code: easezyc/deep-transfer-learning [Github]
参考资料:迁移学习简明手册

MMD介绍

MMD(最大均值差异)是迁移学习,尤其是Domain adaptation (域适应)中使用最广泛(目前)的一种损失函数,主要用来度量两个不同但相关的分布的距离。两个分布的距离定义为:
M M D ( X , Y ) = ∣ ∣ 1 n ∑ i = 1 n ϕ ( x i ) − 1 m ∑ j = 1 m ϕ ( y j ) ∣ ∣ H 2 (1) MMD(X,Y) = ||\frac{1}{n}\sum_{i=1}^n\phi(x_i)-\frac{1}{m}\sum_{j=1}^m\phi(y_j)||_H^2\tag{1} MMD(X,Y)=n1i=1nϕ(xi)m1j=1mϕ(yj)H2(1)
其中 H H H 表示这个距离是由 ϕ ( ) \phi() ϕ() 将数据映射到再生希尔伯特空间(RKHS)中进行度量的。

为什么要用MMD?

Domain adaptation的目的是将源域(Source domain)中学到的知识可以应用到不同但相关的目标域(Target domain)。本质上是要找到一个变换函数,使得变换后的源域数据和目标域数据的距离是最小的。所以这其中就要涉及如何度量两个域中数据分布差异的问题,因此也就用到了MMD。至于Domain adaptation的前生今世可以参考王晋东大佬的知乎专栏

MMD的理论推导

MMD的关键在于如何找到一个合适的 ϕ ( ) \phi() ϕ() 来作为一个映射函数。但是这个映射函数可能在不同的任务中都不是固定的,并且这个映射可能高维空间中的映射,所以是很难去选取或者定义的。那如果不能知道 ϕ \phi ϕ,那MMD该如何求呢?我们先展开把MMD展开:
M M D ( X , Y ) = ∣ ∣ 1 n 2 ∑ i n ∑ i ′ n ϕ ( x i ) ϕ ( x i ′ ) − 2 n m ∑ i n ∑ j m ϕ ( x i ) ϕ ( y j ) + 1 m 2 ∑ j m ∑ j ′ m ϕ ( y j ) ϕ ( y j ′ ) ∣ ∣ H (2) MMD(X,Y) =||\frac{1}{n^2}\sum_{i}^n\sum_{i'}^n\phi(x_i)\phi(x_i')-\frac{2}{nm}\sum_{i}^n\sum_{j}^m\phi(x_i)\phi(y_j)+\frac{1}{m^2}\sum_{j}^m\sum_{j'}^m\phi(y_j)\phi(y_j')||_H\tag{2} MMD(X,Y)=

评论 71
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值