【GAN的优化】从KL和JS散度到fGAN

GAN学习笔记-KL散度(Kullback-Leibler Divergence)、JS散度(Jensen–Shannon divergence)、Wasserstein Distance 本篇文章主要介绍了KL散度(Kullback-Leibler Divergence)、JS散度(Jensen–Shannon divergence)、Wasserstein Distance 阅读详情

 

欢迎来到专栏《GAN的优化》,这是第二期。在这个专栏中,我们会讲述GAN的相关背景、基本原理、优化等相关理论,尤其是侧重于GAN目标函数的优化。小米粥和有三将带领大家从零学起,深入探究GAN的点点滴滴。

其实,比起来东拼西凑的资料的堆叠,我更喜欢讲故事,从头到尾讲一个故事,中间环环相扣,逻辑条理清晰,读完之后细细回想,便可融会贯通。

上一期我们从一般的生成模型开始说起,谈了谈极大似然法和显式定义概率分布的模型,最后讲到GAN的结构、本质。今天我将和大家一起学习fGAN。fGAN是一个具有一定“通用”意义的模型,它定义了一个框架,从这个框架中可以自然而然得衍生出其他GAN模型。这篇文章不一定能帮你提高你的实验效果,但是对了解早期的GAN,提升机器学习的水平和见解还是大有裨益的。

 

作者&编辑 | 小米粥 

今天是第二期,主要介绍fGAN。本文将先建立一下距离和度量的概念,然后引出f散度的概念,利用共轭函数和神经网络来计算f散度,最后将简述KL散度和JS散度的问题。

1 分布间的距离

最初提出的GAN是基于博弈论角度的,它包括一个判别器和一个生成器,判别器会给出输入的样本来源于训练集的概率,而生成器会努力产生可以欺骗判别器的样本。整个GAN的流程稍微复杂却非常具象,甚至可以将其拟人化来理解。其实,更一般地,我们应该从样本概率分布的角度去理解GAN,从这里入手虽然略微抽象,但是能触碰到GAN的本质。

GAN的生成器隐式地定义了一个概率分布,并依此概率分布来生成样本,而训练样本集也是在某一个概率分布上连续独立采样获得的,故GAN的核心目标就是:驱使生成器定义的隐式的概率分布接近训练样本集的本质概率分布,pg是生成器概率,pdata是训练集概率,如下:

640?wx_fmt=jpeg

不同的概率密度函数之间距离有“远近之分”,例如下图中黄色分布和蓝色分布的距离“感觉上”应该比较近,而红色分布和蓝色分布的距离“感觉上”应该比较远,我们需要定义度量函数来量化分布之间的距离(将两个概率密度函数映射为一个实数)。

640?wx_fmt=jpeg

在向量空间中,将每一个向量视为一个元素,存在许多种两个元素间距离的度量方式,比如闵科夫斯基距离、欧式距离、曼哈顿距离、切比雪夫距离等。类似的,将每一个概率分布视为概率密度函数空间中的一个元素,则可以定义元素之间的距离。需要注意定义的距离需要满足非负性、对称性、三角不等式。

640?wx_fmt=jpeg

2 f-divergence

f散度(f-divergence)提供了一套“距离”,对于数据集的本质概率分布和生成器隐式的概率分布,我们用以下公式来定义它们的距离:

640?wx_fmt=jpeg

其中要求f(u)为凸函数,且f(1)=0。f(1)=0保证了当两个分布完全重合时,f散度为0。f(u)为凸函数保证了f-divergence的值非负。我们用Jensen不等式来简单证明一下:

640?wx_fmt=jpeg

f散度中f(u)可以有很多形式,具体如下图所示:

640?wx_fmt=jpeg

常用的满足要求的凸函数f(u)的函数图像如下图所示:

640?wx_fmt=jpeg

3 共轭函数

即使知道了f散度的一般表达式,我们也无法精确计算其值,或许训练数据集的概率密度函数的表达式可以得到,但是生成器隐式定义的概率密度函数是不可知的。

我们利用共轭函数将f散度转变成可以计算的形式。共轭(或对偶)通常指成对出现的两个具有很强关系的实体,它们具有相同的结构和意义。额外提一句,无论原函数是否是凸函数,其共轭函数必为凸函数(凸函数在做优化时拥有非常好的数学性质)。

定义共轭函数为

640?wx_fmt=jpeg

t的定义域为f(u)的一阶导数的值域。即对于任意给定的u,要遍历所有可能的t代入计算,然后寻找最大值。

此时f散度可转化为:

640?wx_fmt=jpeg

t和u具有非常复杂的数学解析关系,则t和x也具有非常复杂的数学解析关系,即便用共轭函数给出了f散度的一个下界,依然无法写成解析式而使用蒙特卡洛方法近似求解。利用神经网络强大的函数拟合能力,可以构造一个神经网络T来拟合t和x的复杂函数关系,即

640?wx_fmt=jpeg

这里要注意通过设置最后一层的激活函数以保证神经网络的输出在f(u)的一阶导数的值域中。

640?wx_fmt=jpeg

所以,对于这个神经网络T,我们应该以

640?wx_fmt=jpeg

为目标函数通过采样的方式进行训练,将求极值的问题转化成训练神经网络的问题,理论上,经过完美的训练,上述目标函数即转化成了f散度的一个下界。所以在fGAN的框架下来看,训练判别器本质上是为了逼近一个f散度,然后利用f散度去指示生成器的学习。从现在开始,判别器已经不再像最原始的GAN拥有具象的意义了。

需要补充说明一下,如何通过选择最后一层输出神经元的激活函数来保证T的输出在f(u)的一阶导数的值域中。

640?wx_fmt=jpeg

4 产生GAN

现在,我们可以利用上述的流程在fGAN的框架下生成原始版本的GAN。在原始版本的GAN中,希望用JS散度来度量两个概率分布的距离,则选择原函数和其对应的共轭函数为

640?wx_fmt=jpeg

代入其中则

640?wx_fmt=jpeg

做一个简单的变换(同时注意相应调整激活函数):

640?wx_fmt=jpeg

则有

640?wx_fmt=jpeg

这就是熟悉的GAN的判别器的目标函数了。若要有人尝试使用直接用KL−divergence KL-divergenceKL−divergence,则有

640?wx_fmt=jpeg

当然也可以选择使用逆KL散度。另外,对于LSGAN,可以证明其使用的是卡方距离,而EBGAN使用总变差距离。

5 两个小问题

KL散度和逆KL散度在严格意义上并不是一种度量,因为不符合对称性,即

640?wx_fmt=jpeg

非对称性意味着使用KL散度或者逆KL散度作为优化目标,其得到结果将具有显著差异。例如,用分布Q去拟合分布P,选择KL散度,Q会将诸多高概率的峰模糊化:

640?wx_fmt=jpeg

如若使用逆KL散度,则会导致Q去拟合高概率的单峰:

640?wx_fmt=jpeg

另一个需要解释的问题,为什么原始GAN中使用JS散度效果不好。因为训练集的概率分布和生成器隐式定义的概率分布往往只是高维空间的低维流形,例如下图在三维空间中,两个分布均是二维流形,其交集最多为一条线段,以至于在计算JS散度时,忽略重叠部分的问题在维数很高时,将愈加严重,在此只给出一个三维空间示意图。

640?wx_fmt=jpeg

即对于任意x,在绝大部分情况下,两个概率分布至少有一个为0。

640?wx_fmt=jpeg

显然,这样计算得来的JS散度为常数。所以如果将判别器训练的太好(即学习到了JS散度)但JS散度为一个常数,无法提供任何梯度信息供生成器训练,就是大家常说的“学不动”。

6 作者介绍

小米粥,本科就读于吉林大学物理学院、经济学院,现为中科院二年级直博生,主要研究方向为机器学习、GAN,入有三AI-GAN群请添加小米粥微信xiaozhouguo94。

总结

今天向大家介绍了概率密度函数的距离、由f散度定义的一系列距离、共轭函数,之后推导了如何使用fGAN生成原始的GAN,最后阐述了KL散度和JS散度的一些问题。

下期预告:对偶与WGAN

有三AI夏季划

640?wx_fmt=png

有三AI夏季划进行中,欢迎了解并加入,系统性成长为中级CV算法工程师。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

【深度学习实践】从零开始的炼丹生活11—— GAN的综述(2020.3) 一文了解 GAN 过去6年的各种思想以及经典架构,并展望未来。 阅读详情

相关推荐

在 Ubuntu 上安装和配置 PostgreSQL 实录

本文介绍了在Ubuntu系统上安装和配置PostgreSQL数据库的完整步骤。主要内容包括:1)通过官方源或PPA源安装最新版本;2)修改配置文件(postgresql.conf和pg_hba.conf)以允许远程访问;3)设置postgres用户密码;4)创建新用户并配置权限;5)防火墙设置和重启服务;6)验证安装和远程连接方法。文章提供了详细的命令行操作指导,帮助用户完成从安装到远程访问的全部配置过程。

qq_58168857的博客 1209

正向KL散度与反向KL散度

KL散度的公式是 KL[p(x)∣∣q(x)]=∫xp(x)logp(x)q(x)dx KL[p(x)||q(x)] = \int_{x}p(x)log{p(x) \over q(x)}dx KL[p(x)∣∣q(x)]=∫x​p(x)logq(x)p(x)​dx 假设真实分布为p(x)p(x)p(x),我们想用分布q(x)q(x)q(x)去近似p(x)p(x)p(x),我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用KL[p∣∣q]KL[p||q]

上帝是个娘们的博客 8814

VOF模型求解方法:从SIMPLEC到PISO的稳定性优化策略

本文深入探讨了VOF模型求解方法中SIMPLEC与PISO算法的稳定性优化策略,重点分析了两种算法在稳态和瞬态问题中的应用差异。通过对比PRESTO离散化方法与其他格式的优劣,提供了针对多相流模拟的实用设置建议和稳定性优化技巧,帮助工程师有效提升计算效率和精度。

yellow的专栏 1154

KL散度(相对熵)(双向KL散度) & JS散度

KL散度 KL-divergence,KL散度,KL距离,又叫相对熵(relative entropy),衡量两个概率分布之间的不同程度,是描述两个概率分布P和Q差异的一种方法 就是信息论学的相对熵 最简单的情况:当KL-divergence为0时,两个分布完全相同。 P和Q越相似,KL散度越小 JS散度 JS散度基于KL散度,同样是二者越相似,JS散度越小。 JS散度的取值范围在0-1之间,完全相同时为0 JS散度是对称的 ...

hxxjxw的博客 7189

VFIO框架源码分析(一)- 从初始化到设备访问

本文深入剖析了Linux内核中的VFIO(Virtual Function I/O)框架,详细解读了其从初始化到设备访问的全过程。VFIO通过Container->Group->Device的层次化设计,利用IOMMU提供安全隔离,允许用户空间直接访问物理设备。文章基于Linux v5.15版本,重点分析了vfio_init模块入口、Container创建与配置、Group关联以及最终设备访问等关键环节,揭示了VFIO如何通过逐层授权机制构建安全可靠的设备直通模型,为虚拟化技术提供核心支持。

qq_36071928的博客 380

5分钟搞懂语义通信:如何用深度学习让AI理解你的真实意图?

本文深入解析了语义通信如何利用深度学习技术,实现从传统‘比特保真’到‘语义保真’的范式转移。通过介绍基于神经网络的端到端系统架构、编解码技术及实战案例,阐明AI如何理解并高效传递信息核心意图,为6G时代的人机交互奠定基础。

weixin_29191669的博客 266

深度学习中的KL散度

KL散度(Kullback-Leibler Divergence),也称为相对熵,是信息论中的一个概念,用于衡量两个概率分布间的差异。它起源于统计学家Kullback和Leibler的工作,它的本质是衡量在用一个分布来近似另一个分布时,引入的信息损失或者说误差。在机器学习、深度学习领域中,KL散度被广泛运用于变分自编码器中(Variational AutoEncoder,简称VAE)、EM算法、GAN网络中。

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 8177

lp–mspm0g3507开发板进入低功耗模式怎么退出?烧程序烧着烧着就进来了,跳线帽没动过,且报错:Texas Instruments Debugger Error: DAP Co...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1571

KL散度和JS散度学习笔记

这里对KL散度和JS散度的相关知识点作了简单的总结

m0_63793573的博客 2547

微信小程序爬虫终极指南:以电商小程序抓包与逆向分析为例(最新版)

在2026年的移动互联网生态中,微信小程序已经成为电商交易的核心载体之一。据统计,超过78%的头部电商平台都推出了微信小程序版本,其用户活跃度甚至超过原生App。对于数据从业者而言,小程序端往往藏着比Web端更丰富的接口数据——包括但不限于商品详情、价格波动、用户评价、库存变化、秒杀活动信息等。与传统的Web爬虫不同,微信小程序爬虫面临着三大核心挑战无URL地址栏:无法通过浏览器直接查看网络请求wx.request封装:所有请求均通过微信原生API发起,难以直接拦截然而,

2201_76125261的博客 539

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

深度学习(15): GAN(2)

1、Theory behind GAN 极大似然估计可以定义函数的参数 使定义的distribution通过调参与真实的分布越接近越好 从pdata中sample一些东西 计算每个样本的likelihood 计算联合概率为似然函数 通过似然函数或对数似然函数对参数求偏导,找到对应最大值的参数 极大似然估计=极小KL散度 problem: 如果只是GMM,那会有很多限制 把它作为一个general的PG,但很难计算它的likelihood generator 生成器是个网络,网络定义了一个概率分布函数

JJJJJJames的博客 554

Autosar PWM模块的配置和使用

在上面的代码中,我们首先配置了PWM的初始化参数,包括频率和分辨率。GPIO Driver:由于PWM信号需要输出到特定的引脚上,因此我们还需要使用GPIO驱动程序来控制引脚的状态。通过合理配置和应用PWM模块,我们可以实现对汽车电子系统中各种功能的精确控制,从而提高汽车性能和用户体验。在实际应用中,我们可以根据需要进行更多的配置和调整,以实现灵活的PWM控制。PWM Driver:这是主要的PWM驱动程序,负责产生PWM信号并输出到相应的引脚上。接下来,我们需要配置PWM模块的参数。

TcData的博客 682

深度学习-李宏毅GAN学习之fGAN

深度学习-李宏毅GAN学习之fGAN散度函数散度函数共轭函数(Fenchel Conjugate)一些问题Mode CollapseMode Dropping总结 散度函数 上一篇讲了GAN的数学原理,这次继续深入。 这次讲fGan,也就是将GAN的散度函数的统称,上篇将了2个散度,KL散度和JS散度,当然GAN还有其他的散度函数。 上图所示,我们可以将散度函数统一定义为上面这个公式,f()就是...

王伟王胖胖的博客 2740

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

fGAN统一框架:从f散度到GAN变体实战解析

散度是衡量概率分布差异的数学工具,f散度通过凸函数统一了KL、JS等常见散度。其核心原理是利用共轭函数将散度最小化转化为对抗博弈,从而为生成对抗网络提供统一分析框架。这一技术价值在于解释不同GAN变体的训练稳定性与模式崩溃根源,并指导损失函数设计。在图像生成、领域自适应等场景中,基于f散度的框架能帮助开发者快速选型与调参。本文深入fGAN框架,结合KL散度、JS散度等热词,系统推导从f散度到对抗训练的完整路径,并给出三种GAN变体的复现代码与踩坑指南。

weixin_29032337的博客 287

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

fGAN通用框架:从f散度到对抗训练的统一实现

f散度是衡量概率分布差异的一类凸函数,KL散度、JS散度、卡方散度等均为其特例。基于凸共轭原理,f散度可转化为对抗训练形式,从而统一多种GAN变体。这一框架的技术价值在于将生成对抗网络的损失函数设计抽象为f函数的选择,显著降低代码维护成本并加速实验迭代。在图像生成、数据增强等场景中,开发者只需替换f函数即可切换散度类型,无需重写训练循环。fGAN正是通过这种通用范式,让对抗训练从特定模型演变为灵活框架。

weixin_29038155的博客 202

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

谈谈:熵、交叉熵、互信息、KL散度

熵相关

Matt_sh的博客 824

【完结】12篇GAN的优化文章大盘点,浓浓的数学味儿

专栏《GAN的优化》(第一季)正式完结啦! 在这一季里,我们从生成模型出发,讲述了GAN的基本理论,包括工作原理,更具有普适性的f散度度量和Wasserstein距离,以及IPM框架并顺带给出了一个处理WGAN的莱布尼茨限制的优雅解决方法;接着介绍了GAN训练困难的原因以及几个训练技巧;然后从动力学视角出发探索GAN的训练,将GAN与动力学方程联系在一起,讲述了一致优化,并总结了各...

hacker_long的专栏 2442

李宏毅学习笔记34.GAN.05.fGAN: General Framework of GAN

文章目录简介f-divergenceFenchel ConjugateConnection with GANMode CollapseMode Dropping问题分析解决Mode Collapse 简介 上节在讲原文GAN的时候,提到我们实际是在用Discriminator来衡量两个数据的分布之间的JS divergence,那能不能是其他类型的divergence来衡量真实数据和生成数据之间的...

老毛的博客 720

【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN

大家好,今天开设新专栏《GAN模型结构》。在这个专栏中,我们会讲述各种各样的GAN的网络结构及其在各类任务中的应用。作者&编辑 | 言有三三年前GAN刚出来的时候...

hacker_long的专栏 5878

【GAN优化】详解对偶与WGAN

越学习越发现自己知之甚少,道阻且长,还是认真看下这篇文章,好好琢磨琢磨GAN吧。今天将和大家一起学习在GAN界占有重要位置的WGAN,它提出了一种新的距离度量,较之前的f...

hacker_long的专栏 1069

【GAN 01】初识GAN

本文是对http://www.seeprettyface.com/research_notes.html的学习笔记 评价指标:Inception Score评价图片质量。真实图片是233分,越高越好;FID反应生成图片的多样性,越低越好。 一、初识GANs 生成器旨在学习已知分布到未知分布的映射关系,拟合真实数据的分布。同时可证最大似然等价于最小化两分布的KL散度。 判别器旨判别图片归属于生成或真实数据。同时可证最大化判别器等价于求两分布的JS散度。因此,求解的生成器可转换为: 具..

qq_40731332的博客 670

【GAN优化】GAN优化专栏栏主小米粥自述,脚踏实地,莫问前程

今天是加入有三AI的第三期,给大家来个自我介绍,也聊一聊我的一些想法和体会。作者 | 小米粥编辑 | 言有三随走随行其实我一直非常佩服那些有规划又努力的人,因为我是一个对...

hacker_long的专栏 521

wgan 不理解 损失函数_GAN的优化(三):对偶与WGAN

本文首发于微信公众号:有三AI作者:小米粥说到对GAN的理解,我们不能简单停留在“生成器产生样本,判别器分辨样本真假”的阶段了,在经过第二篇文章后,对GAN的理解应该是:先学习一个关于生成器定义的隐式概率分布和训练数据集的本质概率分布之间的距离度量,然后优化生成器来缩减这个距离度量。今天的主要内容依旧围绕这个距离度量来展开。1.度量连续性的问题在第二篇文章的最后,我们简要讨论了f散度的问题。实际中...

weixin_28995139的博客 414

【6月月报】新书加印与勘误,七大专栏齐上线,知识星球大改版!

这是有三AI 2019年6月份的总结,这个6月份着实发生了很多大事。新书再印+勘误5月份有三出版了书籍《深度学习之图像识别:核心技术和案例实战》,具体的内容大家可以点击文...

hacker_long的专栏 716

将近400篇原创后,有三AI喊你正式加入来不来?

文/编辑 | 言有三我们已经有将近400篇标注原创的文章了,有三AI持续开始更新内容也就是一年多一点点,差不多一天一篇原创文章的节奏,这是邀请帖。你想正式加入有三AI吗?...

hacker_long的专栏 622
上一篇: 【AI不惑境】移动端高效网络,卷积拆分和分组的精髓
下一篇: 【NLP】用于语音识别、分词的隐马尔科夫模型HMM
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

言有三

三人行必有AI

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

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

打赏作者

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

抵扣说明:

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

余额充值