GAN 生成对抗神经网络

news2025/1/15 20:38:22

GAN

文章目录

  • GAN
    • GAN的结构
    • GAN的目标函数
    • GAN的训练
    • GAN的优势和不足
      • 优势
      • 不足

GAN的结构

GAN的设计灵感来源于博弈论中的零和博弈(Zero-sum Game),在零和博弈中,参与双方的收益是完全相反的,一方的收益必然导致另一 方的损失,总收益为零。

GAN 主 要 由 两 部 分 组 成 : 生 成 器 ( Generator ) 和 判 别 器 (Discriminator),它们分别扮演了两个不同的角色。 生成器的任务是生成接近真实数据分布的样本,而判别器的任务则是尽可 能地区分真实的样本和生成器生成的样本。 通过生成器和判别器之间的对抗,GAN可以学习到生成高质量样本的能力。

以图片生成为例: 生成器是一个生成图片的网络,它使用服从某一分布(均匀分布或高斯 分布)的噪声生成一个类似真实训练数据的图片,记作𝐺(𝒛),追求效果 是越像真实图片越好。 判别器是一个二分类器,用来判断一个图片是不是“真实的” ,它的输入是采样的真实图片𝒙以及生成器生成的图片𝐺(𝒛),输出是输入图片是真实图片的概率,如果输入图片来自真实数据,那么判别器输出大的概率,否则,输出小的概率。

image-20240425145159732

GAN的目标函数

GAN的目标是使生成器生成的数据能够骗过判别器,因此需要定义一个目标函数,使得判别器判断真实样本为“真” 、生成样本为“假”的概率最小化。
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G\max_DV(D,G)=E_{\boldsymbol{x}\thicksim p_{data}(\boldsymbol{x})}[logD(\boldsymbol{x})]+E_{\mathbf{z}\thicksim p_{\mathbf{z}}(\mathbf{z})}[\log{(1-D(G(\mathbf{z})))}] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
其中, V ( D , G ) V(D,G) V(D,G)表示真实样本和生成样本的差异程度; p d a t a ( x ) p_{data}(x) pdata(x)表示真实数据 x x x的分布, p z ( z ) p_{z}(z) pz(z)表示噪声z的分布, D ( x ) D(x) D(x)表示判别器认为 x x x是真实样本的概率, D ( G ( z ) ) D(G(\mathbf{z})) D(G(z))表示判别器认为生成样本 G ( z ) G(\mathbf{z}) G(z)是假的概率。

训练GAN的时候,判别器希望目标函数最大化,也就是使判别器判断真实样本为“真” 、判断生成样本为“假”的概率最大化,要尽量最大化自己的判别准确率。可以写作损失函数的形式:
L ( G , D ) = − E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] − E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] L(G,D)=-E_{x\sim p_{data}(x)}[\log D(x)]-E_{z\sim p_z(z)}[\log(1-D(G(z)))] L(G,D)=Expdata(x)[logD(x)]Ezpz(z)[log(1D(G(z)))]
与判别器相反,生成器希望目标函数最小化,也就是迷惑判别器,降低其对数据来源判断正确的概率,也就是最小化判别器的判别准确率。如果采用零和博弈,生成器的目标是最小化𝑉(𝐷, 𝐺),而实际操作时发现零和博弈的训练效果并不好,生成模型一般采用最小化公式:
E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] E_{\mathbf{z}\sim p_{\mathbf{z}}(\mathbf{z})}[\log\left(1-D(G(\mathbf{z}))\right)] Ezpz(z)[log(1D(G(z)))]

GAN的训练

GAN的训练过程包含三个步骤:

  1. 使用采样的真实数据𝒙训练判别器,即输入真实数据𝒙到判别器,前向传播,得到输出为1(表示判断结果为真),之后使用反向传播算法更新判别器的参数。
  2. 使用生成器生成的数据𝐺(𝒛)训练判别器,即输入生成器生成的数据𝐺(𝒛)到判别器,前向传播,得到输出为0(表示判断结果为假),之后使用反向传播算法再次更新判别器的参数。
  3. 最后,使用生成器生成的数据𝐺(𝒛)训练生成器,即输入生成器生成的数据𝐺(𝒛)到判别器,采用上一步训练好的判别器的参数(冻结判别器的参数)前向传播,得到输出为1(表示判断结果为真),之后使用反向传播算法更新生成器的参数,这一步的目的在于训练更好的生成器,以迷惑判别器,使之将生成器生成的数据判别为真。

在这个过程中,双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡。此时,生成器生成的数据分布无限接近真实数据的分布,判别器判别不出输入的是真实数据还是生成的数据,输出概率都是百分之五十。

image-20240425150923061

训练算法如下
在这里插入图片描述

GAN的优势和不足

优势

  1. 任何一个可微分函数都可以参数化D和G(如深度神经网络)
  2. 支持无监督方法实现数据生成,减少了数据标注工作
  3. 生成模型G的参数更新不是来自于数据样本本身(不是对数据的似然性进行优化),而是来自于判别模型D的一个反传梯度。

不足

  1. 无需预先建模,数据生成的自由度太大
  2. 得到的是概率分布,但是没有表达式,可解释性差。
  3. D与G训练无法同步,训练难度大,会产生梯度消失问题。

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

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

相关文章

2018年华三杯山东省赛决赛实验

2018年华三杯山东省赛决赛实验 拓扑图 配置需求 请考生根据以下配置需求在 HCL中的设备上进行相关配置。 网络设备虚拟化 数据中心交换机需要实现虚拟化。支持的虚拟化技术 IRF,所配置的参数要求如下: 链形堆叠,IRF Domain 值为 10; IRF1的 member ID 为 1,IRF2的 member …

C++ 之 string类 详细讲解

喜欢的人有点难追怎么办 那就直接拉黑 七个女生在一起是七仙女,那七个男生在一起是什么? 葫芦七兄弟 目录 一、为什么要学习string类 二、标准库中的string类 1.string类 2.string类的常用接口说明 2.1 string类对象的常见构造 2.2 string类对…

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表 主要特性 50W 时性能高达 5A / 40V0.012% 基本测量精度,具有 6 位分辨率10pA / 100nV 测量分辨率与 KickStart 软件结合使用美国2440吉时利keithley数字源表特点 2400系列提供宽动…

HarmonyOS开发:【基于命令行(开发环境)】

准备开发环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516系…

三维图形学基础-三维点集求凸包算法

在计算凸包时,我们想要找到一个最小的凸多面体,它包含了给定点集合中的所有点,并且多面体的边界是由这些点确定的。凸包在计算机图形学、地理信息系统、机器人运动规划等领域中都有广泛的应用。 之前文字有讲到CGAL这个几何算法库&#xff0…

【UE C++】设置游戏模式

问题 我们都知道如何使用蓝图创建一个游戏模式并且在这个游戏模式蓝图中去设置“默认pawn类”、“HUD类”、“玩家控制器类”、“游戏状态类”、“玩家状态类”、“旁观者类”。那么如何使用C完成该操作呢? 步骤 1. 首先创建“GameMode”、“GameState”、“HUD”…

nginx 配置 SSL 证书实现 https 访问

nginx 配置SSL证书实现https访问 1. SSL 证书简介与获取1.1 SSL 证书介绍1.2 获取 SSL 证书 2. nginx 配置 SSL 文件2.1 SSL 文件放置与配置文件修改2.1.1 文件配置2.1.2 强制 https 访问 2.2 验证配置结果 同步发布在个人笔记 nginx 配置 SSL 证书实现 https 访问 配置好 ngi…

【嵌入式linux】Ubuntu 修改用户名

第一次打开Ubuntu时不小心把初始用户名“siriusiot”写成“siriousiot”(多了一个o) 。作为技术人,我们要保持严谨,我们要纠正过来(其实就是单词拼错了怕被笑话)。 打开终端,输入: …

WEB攻防-ASP安全-MDB下载

MDB下载漏洞主要涉及到早期ASPAccess构架的数据库文件。当Web站点提供文件下载功能时,如果没有对下载请求进行充分的验证和过滤,或者服务器配置不当,就可能产生文件下载漏洞。攻击者可以利用这个漏洞,通过修改请求参数或尝试猜测或…

Composer初次接触

php一直都是简单处理一下单片机的后台服务,没什么深入研究 今天安装一个 php composer.phar require qiniu/php-sdkComposer完全不懂,照着一试,就报错了 - topthink/think-installer v1.0.12 requires composer-plugin-api ^1.0 -> found…

什么是OCR转换?

OCR转换是指将图片或扫描文档中的文字内容转换成电子文本的过程。OCR代表光学字符识别(Optical Character Recognition),是一种通过算法和模型来识别图像或文档中的文字,并将其转换成可编辑、可搜索的文本格式。OCR转换通常包括以…

分布式-知识体系

分布式系统 本质就是一堆机器的协同,要做的就是用各种手段来让机器的运行达到预期 分布式业务场景 分布式四纵四横说 基于 MSA(微服务架构)的分布式知识体系 相关概念 – 【摘自网络原文】 节点与网络 节点 传统的节点也就是一台单体的物…

AI预测体彩排列3第2套算法实战化测试第3弹2024年4月25日第3次测试

今天继续进行新算法的测试,今天是第3次测试。好了,废话不多说了,直接上图上结果。 2024年4月25日体彩排3预测结果 6码定位方案如下: 百位:4、5、3、6、1、0 十位:6、5、4、3、1、0 个位:6、2、7…

Lock-It for Mac(应用程序加密工具)

OSXBytes Lock-It for Mac是一款功能强大的应用程序加密工具,专为Mac用户设计。该软件具有多种功能,旨在保护用户的隐私和数据安全。 Lock-It for Mac v1.3.0激活版下载 首先,Lock-It for Mac能够完全隐藏应用程序,使其不易被他人…

【UE C++】重写基类中的BeginPlay、Tick函数

前言 为了让游戏场景中的各种继承于“Actor”的游戏对象在生命周期中执行自定义逻辑和行为,我们通常需要重写“Actor”类及其派生类中的BeginPlay、Tick函数。 那么如何用C重写BeginPlay、Tick函数呢,可参考如下步骤。 步骤 1. 在头文件中添加如下代码…

consul服务注册与发现、服务配置与刷新

为什么要用服务注册?为什么要用consul不用eureka? 举个栗子: 微服务当中存在多个服务模块,每个服务模块的ip端口在每套环境是不一致的,开发切换环境部署时,如果漏了一个配置忘记改动,将是一个很…

如何开启kali的ssh远程连接

1.打开配置文件 vim /etc/ssh/sshd_config 将第13行和32改为如下,保存退出 重启服务 sudo systemctl restart ssh.service 使用远程工具(如xshell)即可连接 如果无法连接,需要先生成两个密钥:ssh-keygen -t dsa -f…

Web APIs 学习归纳1---Web API概述简单的元素获取

JS基础中我们学习了JS的基本语句,这些是后续学习中的基础。 有了上述JS的基础以后,我们就可以开始学习交互效果的实现方法。这里很多时候直接调用JS封装好的API即可。 一、Web APIs 和 JS 基础关联性 这里有一张图很好的解释了这个问题: 我们…

离线模式下载安装gcc-4.8.5

目录 一,下载gcc离线安装包 二,下载gcc依赖包 三,安装gcc 1, 解压 2, 将依赖库放置环境 3, 安装 3.1自动安装 3.1.1 执行依赖库的编译 3.1.2 新建编译目录 3.1.3 配置编译环境 3.1.4 编译 3.1.5 安装 3.2 手动安装 3.2.…

扫码怎样上传现场照片或视频?快速提交现场记录的方法

现在很多应用场景会使用二维码来登记信息,通过手机扫描二维码即可根据问题填写对应的数据,比如在活动签到、预约报名、巡视检查、用户调研等场景现在都会采用这种方式来登记信息。有些时候需要扫码者在填写数据时上传现场相关照片或者视频来作为证明&…