生成对抗网络----GAN

系列文章目录

`


文章目录

  • 系列文章目录
  • 前言
  • 一、基本构成
  • 二、应用领域
  • 三、基本原理
  • 四、如何训练GAN


前言


一、基本构成

GAN (Generative Adversarial Network) : 通过两个神经网络,即生成器(Generator)和判别器(Discriminator),相互竞争来学习数据分布。

{ 生成器 ( G e n e r a t o r ) : 负责从随机噪声中学习生成与真实数据相似的数据。 判别器 ( D i s c r i m i n a t o r ) : 尝试区分生成的数据和真实数据。 \left\{ \begin{array}{l} 生成器(Generator):负责从随机噪声中学习生成与真实数据相似的数据。 \\ \\ 判别器(Discriminator):尝试区分生成的数据和真实数据。 \\ \end{array}\right. 生成器(Generator):负责从随机噪声中学习生成与真实数据相似的数据。判别器(Discriminator):尝试区分生成的数据和真实数据。

二、应用领域

  1. 图像生成:如风格迁移、人脸生成等。

  2. 数据增强:通过生成额外的样本来增强训练集。

  3. 医学图像分析:例如通过GAN生成医学图像以辅助诊断。

  4. 图像超分辨:SRGAN

三、基本原理

GANs的目标是通过学习一个生成模型G来尽可能接近真实数据分布。

在这里插入图片描述
生成网络采用随机输入,G(z)从P(z)获取输入z(noise),其中z是来自概率分布P(z)的样本,z~P(z),生成器产生Fake Samples送入D(x)。

Pdata(x) ------真实数据的分布 x-----Pdata(x)的样本
P(z)------生成器的分布 z-----P(z)的样本
G(z)-----生成网络 D(x)----判别网络

x 是一个真实图片,可以想象成一个向量,这个向量分布集合就是Pdata(x)

目标是min G ~=0
max D ~=1
在这里插入图片描述
生成器的目标是最大化判别器对其生成样本的错误分类概率,其中,(G(z)) 表示生成器从随机噪声 (z) 生成的样本,(D(x)) 是判别器对样本 (x) 为真实的概率估计。

上面目标函数实际上是两个二元交叉熵的和,其对应于判别器D对真实样本和生成样本的分类能力。判别器D的目标是最大化以下目标函数,找到能够最小化的生成器G。

V(D,G) :判别器最大化,生成器想最小化

第一项:是实际分布Pdata(x)的数据,通过判别器的熵,试图将其最大化为1

第二项:是随机输入P(Z)的数据通过G的熵,判别器尝试将其最小化为0

对抗损失函数一般由两部分组成:

判别器的损失项(Discriminator Loss):这一部分表示判别器要尽可能准确地区分真实数据和生成器生成的数据。判别器试图最大化这个值,以便更好地区分真实数据和生成的数据。
生成器的损失项(Generator Loss):这一部分表示生成器试图生成足够逼真的数据,以至于判别器无法轻易区分生成的数据和真实数据。生成器试图最小化这个值。
具体来说,判别器的损失项旨在最大化以下两个期望值:

真实数据的判别概率(判别器越接近1越好)
生成数据的判别概率(判别器越接近0越好)
而生成器的损失项旨在最小化生成数据的判别概率(生成器希望判别器难以将其识别为生成数据)。

通过优化这个对抗损失函数,生成器和判别器不断调整自己的参数,最终使得生成器可以生成非常逼真的数据,同时判别器难以区分真实数据和生成的数据。

四、如何训练GAN

  1. 训练判别器,冻结生成器
  2. 训练生成器,冻结判别器

冻结:即不训练,神经网络只进行前向传播不进行反向传播

训练步骤:

step1: 定义问题,生成假图像还是文字,收集相应数据
step2: 定义GAN的架构,生成器和判别器可以使用多层感知机或者卷积神经网络
step3: 用真实数据训练N个epoch,训练判别器正确预测假的数据为假
step4: 用生成器产生假的输入数据,用来训练判别器,训练判别器正确预测假的数据为假
step5: 用判别器的输出来训练生成器 当判别器被训练后,将其预测值作为标记来训练生成器以迷惑判别器
step6: 重复3~5多个epoch
step7: 手动检查数据是否合理,合理即停止,否则回到step3

一般来说,Discrimnator比Genenrator训练的多,比如训练五次Discrimnator,再训练一次Genenrator。

训练GAN时最重要的阻碍—稳定

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

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

相关文章

AtCoder Beginner Contest 341 D - Only one of two (Java)

AtCoder Beginner Contest 341 D - Only one of two (Java) 比赛链接:AtCoder Beginner Contest 341 D题传送门AtCoder:D - Only one of two D题传送门洛谷:[ABC341D] Only one of two 题目:[ABC341D】 Only one of two 题目…

padding属性顺序

padding 一个属性值应用四个边, 二个属性值,先上下,后左右 三个属性值,前上,中左右,最后是下 四个属性值,从上边开始,顺时针开始,上,右,下&…

安卓游戏开发之图形渲染技术优劣分析

一、引言 随着移动设备的普及和性能的提升,安卓游戏开发已经成为一个热门领域。在安卓游戏开发中,图形渲染技术是关键的一环。本文将对安卓游戏开发中常用的图形渲染技术进行分析,比较它们的优劣,并探讨它们在不同应用场景下的适用…

C/C++ BM12 单链表的排序

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 链表排序处理起来比较麻烦,因为它不支持下标操作。这里写一下链表排序的常用方法。 题目 描述 给定一个节点数为n的无序单链表,对其按升序排序。 数据范围…

【论文阅读笔记】AutoAugment:Learning Augmentation Strategies from Data

AutoAugment:Learning Augmentation Strategies from Data 摘要 🔬 研究方法: 本文描述了一种名为AutoAugment的简单程序,通过这个程序可以自动寻找改进的数据增强策略。研究设计了一个策略空间,其中策略包含多个子策略,在每个小…

python+django+vue汽车票在线预订系统58ip7

本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中 使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 使用PyChar…

好书推荐丨《细说机器学习:从理论到实践》

文章目录 写在前面机器学习推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本有关机器学习的全新正版书籍,对机器学习、人工智能感兴趣的小伙伴们快来看看吧~ 机器学习 机器学习(Machine Learning, ML&…

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径

※【回溯】【深度优先前序】Leetcode 257. 二叉树的所有路径 解法0 迭代法解法1 深度优先 前序解法2 深度优先 前序 添加了StringBulider ---------------🎈🎈257. 二叉树的所有路径 题目链接🎈🎈------------------- 解法0 迭代法…

08MARL深度强化学习 independent learning

文章目录 前言1、Independent Value-based Learning2、Independent Policy Gradient Methods 前言 记录independent learning算法的基础概念,使用一些RL算法训练多智能体 1、Independent Value-based Learning 基于值的独立学习算法:每个智能体根据自身…

十一、Nacos源码系列:Nacos配置中心原理(三)- 配置热更新

上面章节我们讲了服务启动的时候从远程 Nacos 服务端拉到配置,以及服务启动后对需要支持热更新的配置都注册了一个监听器,这个章节我们来说下配置变动后具体是怎么处理的。 回到前面文章说过的 NacosPropertySourceLocator 的 locate()方法看看&#xff…

浅谈前端性能优化的方法

前端性能优化是一个多方面的过程,涉及减少加载时间、提高响应速度、优化渲染等方面。以下是一些常见的前端性能优化方法: 减少HTTP请求:合并CSS和JavaScript文件,使用CSS Sprite技术,以及使用HTTP2.0等协议来减少HTTP…

51-2 万字长文,深度解读端到端自动驾驶的挑战和前沿

去年初,我曾打算撰写一篇关于端到端自动驾驶的文章,发现大模型在自动驾驶领域的尝试案例并不多。遂把议题扩散了一点,即从大模型开始,逐渐向自动驾驶垂直领域靠近,最后落地到端到端。这样需要阐述的内容就变成LLM基础模…

【Docker】集群容器监控和统计 Portainer基本用法

Portainer是一款轻量级的应用,它提供了图形化界面,用川于方便地管理Docker环境,包括单机环境和集群环境。 主要功能:实现集群容器的监控和统计 下载安装 官网:https://www.portainer.io 文档:https://do…

如何用java来调用FileMaker data Api 新增数据的代码

Claris Filemaker目前在国内的使用用户并不是很多,但是非常适合我们目前的实验室智能化研发系统,今天也给大家做一个小小的技术分享。(看最后注释部分,有彩蛋哦) 要使用Java调用FileMaker Data API来新增数据&#xf…

Python Selenium实现自动化测试及Chrome驱动使用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 Selenium简介 安装Selenium库 编写自动化测试脚本 1 打开浏览器并访问网页 2 查找页面元…

前端架构: 脚手架框架之commander从基础到高级应用教程

commander 1 )概述 commander 是一个更为知名的脚手架框架进入它的npm官网: https://www.npmjs.com/package/commander目前版本: 12.0.0Weekly Downloads 133,822,797 (动态数据)最近更新:15 days ago (npm)说明这是一个更优质的库同时使用commander的案…

Docker Desktop 链接windos 安装的redis和mysql

1.1.先在容器安装项目 2.链接redis和mysql配置 redis和mysql是在windos安装的,使用的是小p管理器安装的 项目链接 DB_DRIVERmysql DB_HOSThost.docker.internal DB_PORT3306 DB_DATABASEyunxc_test DB_USERNAMEyunxc_test DB_PASSWORDtest123456... DB_CHARSETutf…

Python中*args 和**kwargs

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。 *args [python] def fun_var_args(farg, *args): print "arg:", farg for value in args: print "another arg:", value fun_var_a…

Day10-Linux系统打包和时间命令及案例精讲

Day10-Linux系统打包和时间命令及案例精讲 1. tar 打包压缩1.1 【打包】 为什么要打包,压缩?1.2 【查看包里内容】1.3 【解包】1.4 排除打包 --exclude 2. date 时间命令 1. tar 打包压缩 1.1 【打包】 为什么要打包,压缩? -zcv…

一周学会Django5 Python Web开发-Django5路由变量

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计22条视频,包括:2024版 Django5 Python we…