生成对抗网络(GAN)基础原理深度解析:从直观理解到形式化表达

摘要

本文详细解析 生成对抗网络(GAN)核心原理,从通俗类比入手,结合印假钞与警察博弈的案例阐述生成器判别器对抗机制;通过模型结构示意图,解析 噪声采样样本生成判别流程;基于公式推导目标函数的数学本质,剖析 判别器生成器优化逻辑;最后对比 GAN 目标函数交叉熵损失 的关联差异。本文结合公式推导与概念对比,助力读者建立 GAN 基础理论体系

关键词:生成对抗网络 GAN 生成器 判别器 目标函数 交叉熵损失


一、通俗理解:对抗博弈中的生成与判别

在生成对抗网络(GAN)的世界里,生成器(Generator)与 判别器(Discriminator)的博弈构成了核心逻辑。正如论文原作者的经典类比:生成器如同试图制造逼真假钞的“犯罪分子”,而 判别器 则是努力识别假钞的“警察”。二者在持续对抗中不断进化——犯罪分子提升伪造技术,警察强化鉴别能力,最终达到“假钞足以以假乱真”的平衡状态。

以图像生成任务为例,生成器 的目标是从随机噪声中生成尽可能逼真的图像,而 判别器 则需准确区分输入图像是真实样本还是生成样本。这种对抗过程并非单向优化,而是动态博弈:生成器 通过优化使生成图像更接近真实分布,判别器 则通过优化提升区分能力,最终形成“生成 - 判别 - 再生成 - 再判别”的循环进化

二、模型结构:从噪声到样本的生成判别链路

在这里插入图片描述

GAN 的形式化模型可通过图1直观表示生成器(G)以高斯分布采样的随机噪声作为输入,通过神经网络映射生成假样本(如伪造图像);判别器(D)则接收真实样本与生成样本的混合输入,输出样本为真实样本的概率值。

关键流程解析
  1. 噪声采样生成器 输入为服从高斯分布 ( p z ( z ) p_z(z) pz(z) ) 的随机噪声 ( z ),通过非线性变换 ( G(z) ) 生成假样本 ( h a t ( x ) hat(x) hat(x) )。
  2. 样本混合:真实样本 ( x s i m p d a t a ( x ) x sim p_{data}(x) xsimpdata(x) ) 与生成样本 ( h a t x hat{x} hatx ) 随机混合后输入 判别器
  3. 概率判别判别器 对输入样本输出概率值 ( D(x) )(取值范围0 - 1),其中 ( D(x) ) 越接近1表示样本越可能为真实样本,越接近0则为生成样本。

此过程中,“对抗”特性体现在:生成器 试图最小化 E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] E z∼pz(z)[log(1−D(G(z)))] Ezpz(z)[log(1D(G(z)))]
即让 判别器 误判生成样本为真实样本,

判别器 试图最大化 E x ∼ p d a t a [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] {E}_{x \sim p_{data}} [\log D(x)] + \mathbb{E}_{z \sim p_z} [\log(1 - D(G(z)))] Expdata[logD(x)]+Ezpz[log(1D(G(z)))] 即正确区分两类样本。

三、目标函数:对抗优化的数学本质

GAN目标函数 设计是理解其原理的核心。完整 目标函数 定义为:

min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] GminDmaxV(D,G)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]

1. 判别器 的优化目标(最大化 ( V(D, G) ))

对于真实样本 ( x ),判别器 希望 ( D(x) ) 尽可能接近1,因此 ( log D(x) ) 趋近于0(最大值);对于生成样本 ( G(z) ),判别器 希望 ( D(G(z)) ) 尽可能接近0,此时 ( log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z))) ) 趋近于0(最大值)。判别器 通过最大化 ( V(D, G) ),实现对两类样本的最优区分。

2. 生成器 的优化目标(最小化 ( m a x D V ( D , G ) max_D V(D, G) maxDV(D,G) ))

生成器 的目标是让 判别器 无法区分生成样本与真实样本,即最小化 判别器 目标函数 的最大值。从数学本质看,此时生成数据分布 ( p g p_g pg ) 与真实数据分布 ( p d a t a p_{data} pdata ) 的 JS散度(Jensen - Shannon Divergence) 最小化。JS散度 用于度量两个分布的相似性,值越小表示分布越接近。

四、与 交叉熵损失 的关联与差异

判别器 目标函数 转换为离散形式:
V ( D , G ) = − 1 m s u m i = 1 m log ⁡ D ( x i ) − 1 m s u m i = 1 m log ⁡ ( 1 − D ( z i ) ) V(D, G) = -\frac{1}{m} sum_{i=1}^m \log D(x^i) - \frac{1}{m} sum_{i=1}^m \log(1 - D(z^i)) V(D,G)=m1sumi=1mlogD(xi)m1sumi=1mlog(1D(zi))
可见其与 交叉熵损失 函数形式一致。判别器 的优化等价于最小化 交叉熵损失(即正确分类真实样本与生成样本),而 生成器 的优化目标则与 交叉熵损失 无直接关联——其本质是通过对抗训练最小化 JS散度,这是 GAN 与传统分类模型(如逻辑回归)的核心区别。

五、核心概念总结与实践启示

  1. 对抗机制生成器判别器 的动态博弈是 GAN 实现高质量样本生成的关键,二者需保持“势均力敌”。若 判别器 过强,生成器 可能因梯度消失无法优化;若过弱,则生成样本质量难以提升。
  2. 数学本质目标函数 的极小极大优化(( m i n G m a x D min_G max_D minGmaxD ))本质是求解生成分布与真实分布的 JS散度 最小化问题,这为后续 WGAN 等改进模型提供了理论切入点(如用 Wasserstein距离 替代 JS散度)。
  3. 模型局限:原始 GAN 存在 模式崩塌(Mode Collapsing) 等问题,生成样本可能缺乏多样性,需通过改进 目标函数(如 LSGAN)或网络结构(如多 生成器 架构)优化。

通过上述解析可见,GAN 的核心魅力在于将样本生成问题转化为对抗博弈问题,其理论框架既包含直观的物理类比,又蕴含深刻的数学原理。理解基础概念,是进一步探索 GAN 变体(如 CGANCycleGAN)及复杂应用(如图像翻译、文本生成)的必要前提。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OptiStruct结构分析与工程应用:无限元法介绍

13.3 无限元方法 本节将详细阐述如何利用无限元方法求解外声场分析,具体包括无限元方法基本理论,无限单元介绍、无限元分析建模指南及检查,最后以一个实例讲解整个分析设置过程。 13.3.1 无限元分析基础理论 无限元求解外声场的基本原理如…

判断:有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈

这道题的关键在于理解递归转非递归与 “是否用栈” 的本质逻辑,和 “局部变量” 无关,核心看递归的调用上下文是否需要保存。 一、递归的本质:依赖 “调用栈” 递归函数执行时,系统会用调用栈保存: 每层递归的参数、…

leetcode1443. 收集树上所有苹果的最少时间-medium

1 题目:收集树上所有苹果的最少时间 官方标定难度:中 给你一棵有 n 个节点的无向树,节点编号为 0 到 n-1 ,它们中有一些节点有苹果。通过树上的一条边,需要花费 1 秒钟。你从 节点 0 出发,请你返回最少需…

MySQL 索引底层原理剖析:B+ 树结构、索引创建维护与性能优化策略全解读

引言 在 MySQL 数据库的世界里,索引是提升查询性能的关键利器。然而,很多开发者虽然知道索引的重要性,但对于索引背后的底层原理却知之甚少。本文将深入 MySQL 索引的底层实现,剖析 B 树的结构特点,以及如何利用这些知…

【Delphi】实现在多显示器时指定程序运行在某个显示器上

在多显示器时代,经常会出现期望将程序运行在某个指定的显示器上,特别是在调试程序的时候,期望切换分辨率,单步调试时,此时容易导致互相卡住,非常不方便,但是通过指定程序运行在不同的显示器上就…

不动产登记区块链系统(Vue3 + Go + Gin + Hyperledger Fabric)

好久没有介绍过新项目的制作了,之前做的一直都是Fisco Bcos的项目,没有介绍过Hyperledger Fabric的项目,这次来给大家分享下。 系统概述 不动产登记与交易平台是一个基于Hyperledger Fabric的综合性管理系统,旨在实现不动产登记…

论文阅读笔记——Large Language Models Are Zero-Shot Fuzzers

TitanFuzz 论文 深度学习库(TensorFlow 和 Pytorch)中的 bug 对下游任务系统是重要的,保障安全性和有效性。在深度学习(DL)库的模糊测试领域,直接生成满足输入语言(例如 Python )语法/语义和张量计算的DL A…

cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能

在使用oops框架的过程中,它的导出数据并生成数据结构的插件oops-plugin-excel-to-json有些小的坑点,为满足我个人习惯,对此部分进行了一个小的修改,有需要的拿去用,记录下供大家参考; 一、配置:…

解决IDE编译JAVA项目时出现的OOM异常问题

出现的异常如图: java.lang.0utOfMemoryError:Java heap space 解决方案: 文件 --> 设置 搜索 编译器(就点击编译器这行),找到构建进程,共享堆大小,设置大一些,例如 2048 MB。 …

【Linux内核】设备模型之udev技术详解

目录 1. udev技术概述 2. 技术层次分析 2.1 内核层交互 2.2 规则引擎层 2.3 用户空间实现 3. 关键技术要点 3.1 动态设备节点管理 3.2 热插拔处理 3.3 模块化规则系统 3.3.1. 变量替换功能 3.3.2. 条件判断能力 3.3.3. 实现机制 3.3.4 应用场景 3.3.5 扩展能力 4…

群论在现代密码学中的应用探索与实践 —— 从理论到C语言实现

1. 引言:数字时代的信息安全挑战 随着互联网和数字技术的快速发展,信息安全问题变得日益严峻。无论是个人隐私保护,还是企业数据安全,乃至国家安全,都依赖于有效的加密技术保障信息的机密性和完整性。网络攻击、数据泄…

前端开发处理‘流式数据’与‘非流式数据’,在接收完整与非完整性数据时应该如何渲染和使用

在前端开发中,处理 非流式数据 和 流式数据 的方式不同。根据是否完整接收数据、是否实时渲染的需求,可以分为以下四种典型场景: 一、四类常见场景总结 类型数据完整性是否实时渲染适用技术/方法A完整数据(一次性返回&#xff09…

thymeleaf直接调用Spring Bean中定义的方法

thymeleaf中可以使用表达式工具对象&#xff0c;通过符号直接调Spring Bean中定义的方法 Spring Bean Component public class InvokeMethodBean {public String fun() { return "fun";} }thymeleaf中调用 <div th:text"${invokeMethodBean.fun()}"&…

虚拟斯德哥尔摩症候群:用户为何为缺陷AI辩护?

当韩国用户美咲连续第七次为虚拟男友的算法错误辩解&#xff1a;“他只是太累了才会说伤人的话”&#xff0c;心理医生在诊断书上写下“数字依赖伴随认知失调”。这种现象并非孤例——斯坦福2024年研究显示&#xff0c;62%长期使用情感AI的用户会主动为系统缺陷寻找合理化解释&…

tryhackme——Abusing Windows Internals(进程注入)

文章目录 一、Abusing Processes二、进程镂空三、线程劫持四、DLL注入五、Memory Execution Alternatives 一、Abusing Processes 操作系统上运行的应用程序可以包含一个或多个进程&#xff0c;进程表示正在执行的程序。进程包含许多其他子组件&#xff0c;并且直接与内存或虚…

[蓝桥杯]密码脱落

密码脱落 题目描述 X 星球的考古学家发现了一批古代留下来的密码。 这些密码是由 A、B、C、D 四种植物的种子串成的序列。 仔细分析发现&#xff0c;这些密码串当初应该是前后对称的&#xff08;也就是我们说的镜像串&#xff09;。 由于年代久远&#xff0c;其中许多种子…

Python绘图库及图像类型

折线图&#xff08;plot&#xff09; 绘图库介绍 Python中绘制折线图的全面指南_python绘制折线图-CSDN博客https://blog.csdn.net/2301_81064905/article/details/139689644 核心作用说明趋势分析揭示数据随时间推移的上升/下降趋势、周期性波动或转折点变化对比在单一图表…

4种常见Python设计爱心创意实现方法

在Python中设计爱心创意有多种实现方式&#xff0c;以下介绍4种常见方法&#xff0c;并附上完整代码&#xff1a; 方法1&#xff1a;使用数学方程绘制&#xff08;Matplotlib&#xff09; ​​原理​​&#xff1a;使用参数方程绘制心形曲线 ​​效果​​&#xff1a;光滑的数…

【Unity】R3 CSharp 响应式编程 - 使用篇(二)

一、通用的事件监听用法 using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{// 默认会调用1次public SerializableReactiveProperty<int> serializableReactiveProperty;…

【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?

显示器Fliker 1 显示器闪烁现象说明2 Fliker量测方法2.1 FMA法2.2 JEITA法问题答疑&#xff1a;为什么显示器Fliker dB值越大&#xff0c;闪烁程度越轻&#xff1f; 3 参考文献 1 显示器闪烁现象说明 当一个光源闪烁超过每秒10次以上就可在人眼中产生视觉残留&#xff0c;此时…