GAN 介绍

介绍

生成对抗网络(Generative Adversarial Networks,简称GANs)是一种深度学习模型,由Ian Goodfellow于2014年提出。GAN由两个神经网络组成,一个生成器(Generator)和一个判别器(Discriminator),它们通过对抗的方式共同训练。

判别器(Discriminator)

判别器的任务是区分输入数据是来自真实数据集还是生成器产生的假数据。它的目标是在面对真实数据时输出高概率,面对生成器产生的数据时输出低概率。

生成器(Generator)

生成器的目的是产生与真实数据尽可能相似的假数据。在训练的开始,生成器通常会输出随机噪声,但是随着训练的进行,它会逐渐学习到如何生成越来越真实的数据。生成器不直接访问真实数据,而是通过判别器给出的反馈来优化它的输出。

对抗训练

GAN的训练过程可以被看作是一个博弈游戏,其中生成器尝试“欺骗”判别器,而判别器则尝试不被欺骗。这个过程可以用以下步骤概括:

  1. 训练判别器:用真实数据和生成器产生的假数据训练判别器,目标是准确地区分这两者。
  2. 训练生成器:固定判别器,更新生成器的参数使得判别器更可能将假数据误判为真实数据。

损失函数

GANs的训练通常涉及到最小化一些损失函数,这些函数会衡量判别器和生成器的性能。最常用的一个损失函数是交叉熵损失函数,但也有其他的变体和改进方法。

## 伪代码
for epoch in range(num_epochs):for batch_data in data_loader:# 更新判别器real_images = batch_data.to(device)z = torch.randn(batch_size, latent_dim).to(device)fake_images = generator(z).detach()d_loss_real = discriminator(real_images)d_loss_fake = discriminator(fake_images)# 判别器损失d_loss = -(torch.mean(d_loss_real) - torch.mean(d_loss_fake))discriminator.zero_grad()d_loss.backward()discriminator_optimizer.step()# 更新生成器z = torch.randn(batch_size, latent_dim).to(device)fake_images = generator(z)g_loss = -torch.mean(discriminator(fake_images))generator.zero_grad()g_loss.backward()generator_optimizer.step()

历史

  1. 最早概念提出
    2014年,Ian Goodfellow等在论文“Generative Adversarial Nets”中首次提出了GAN的概念。提出了一种判别器和生成器对抗并互相提升的框架。

https://arxiv.org/abs/1406.2661

2.CNN条件GAN

2015年,Mirza等人提出使用卷积神经网络(CNN)作为GAN的判别器和生成器,使其可以处理图像数据。

https://arxiv.org/abs/1411.1784

3.DCGAN

2015年,Radford等人提出了DCGAN,使用CNN并提供了许多改进训练GAN的指导,成为第一个有效训练GAN的框架。

https://arxiv.org/abs/1511.06434

4.理论分析

2016年,Arjovsky等人提出Wasserstein GAN,从理论上分析了GAN训练的不稳定性,提出了Wasserstein距离改善模型稳定性。

https://arxiv.org/abs/1701.07875

5.条件GAN

2014年,Mirza等人提出条件GAN,可以控制GAN的生成结果。

https://arxiv.org/abs/1606.03657

6.进一步扩展

此后陆续出现了InfoGAN、CycleGAN等框架,GAN的应用范围不断扩展。2017年CycleGAN实现无配对图像转换。

https://arxiv.org/abs/1703.10593

7.高分辨率GAN

2018年,Brock提出BigGAN,首次实现高分辨率、高质量的图像生成。

https://arxiv.org/abs/1809.11096

8.自监督GAN

2020年,Chen提出基于对比学习的自监督GAN SimGAN,无需数据标注即可训练。

https://arxiv.org/abs/2010.08895

9.大模型GAN

近年来,大模型GAN如Nvidia的StyleGAN等可以生成更逼真的图片。GAN技术仍在不断发展中。

https://arxiv.org/abs/1912.04958

应用场景

  • 生成逼真的人脸或物体图片
  • 风格迁移,如将日常照片转换为名画风格
  • 图像超分辨率,即从低分辨率图像生成高分辨率版本
  • 数据增强,为数据集生成新的样本

缺点

GANs的训练是复杂的,并且常常面临模式崩溃(mode collapse)等问题,模式崩溃指的是生成器开始生成非常相似或重复的样本,而没有多样性。

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

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

相关文章

nodejs配置express服务器,运行自动打开浏览器

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置,前后端开发环境的配置,编辑器的配置,网络服务的配置,网络命令的应用与配置,windows常见问题的解决等。 文章目录 设置方法:1,安装nodej…

python实现一张图片按指定宽高截取成多张图片

1、导入所需的包 import os from PIL import Image 2、获取源图片 path_img image img_dir os.listdir(path_img) 3、循环读取源图片并按指定宽高进行自动截图保存 for i in range(len(img_dir)):id img_dir[i].split(.)[0]img Image.open(path_img / img_dir[i])si…

【C++高阶(七)】C++异常处理的方式

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 异常处理的方式 1. 前言2. C语言处理异常的方式…

Transformer架构详解

文章目录 引言1. Transformer架构详解1.1 编码器与解码器1.1.1 编码器(Encoder)1.1.2 解码器(Decoder) 2. 核心代码2.1 自注意力(Self-Attention)机制2.2 多头注意力(Multi-Head Attention&…

Redhat LINUX 9.3 + PG 16.1 搭建主备流复制

一直想搭建一个PG流复制,最近正好有一个新环境,操作系统是最新的,rhel 9.3,数据库是最新的 pg 16.1,借鉴了网上的步骤,尤其是小工到专家的内容,在此谢过。 1.安装环境 1)IP: 主:192.168.133.151…

Python PIP安装pycorrector、kemln报错

本来想装个pycorrector用一下,结果在安装其依赖包kemln的时候疯狂报错,报错关键词包括但不限于Bash、Cmake,C啥的,搜了很多文章,终于摸索到了安装的办法。 1、安装bash 去官网https://gitforwindows.org/下载bash&am…

消费者痛点怎么分析,不同行业如何营销

消费者的痛点是品牌营销中的关键因素,因为准确把握消费者的痛点,可以为品牌带来更大的市场机会。今天和大家探讨下消费者痛点怎么分析,不同行业如何营销? 今天我们会从分类、洞察、场景分析、分级与评判以及不同行业细分的角度来进…

neuq-acm预备队训练week 9 P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景 抗日战争时期,冀中平原的地道战曾发挥重要作用。 题目限制 题目描述 地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 我们来定义一个危险系数 DF…

Android动画(四)——属性动画ValueAnimator的妙用

目录 介绍 效果图 代码实现 xml文件 介绍 ValueAnimator是ObjectAnimator的父类,它继承自Animator。ValueAnimaotor同样提供了ofInt、ofFloat、ofObject等静态方法,传入的参数是动画过程的开始值、中间值、结束值来构造动画对象。可以将ValueAnimator看…

环境搭建及源码运行_java环境搭建_maven

书到用时方恨少、觉知此时要躬行;拥有技术,成就未来,抖音视频教学地址:​​​​​​​ ​​​​​​​ 1、介绍 1)管理项目依赖和版本 统一的项目依赖和版本管理 ​​​​​​​​​​​ 2)Maven支持多模块…

YoloV7改进策略:双动态令牌混合器(D-Mixer)的TransXNet,实现YoloV7的有效涨点

摘要 双动态令牌混合器(D-Mixer),一种输入依赖的方式聚合全局信息和局部细节。D-Mixer通过分别在均匀分割的特征片段上应用有效的全局注意力模块和输入依赖的深度卷积,使网络具有强大的归纳偏差和扩大的有效感受野。使用D-Mixer作为基本构建块设计了TransXNet,这是一种新…

From Human Attention to Computational Attention (1)

”is the taking possession by the mind, in clear and vivid form, of one out of what seem several simultaneously possible objects or trains of thought. It implies withdrawal from some things in order to deal effectively with others“,William Jame…

6.任务分配与执行总体设计实现

1.设计 执行任务找一个落地场景:连接设备采集参数。设备有不同的协议,如:modbus rtu、modbus tcp、opc ua、simens s7等。协议多种多样,需要的参数也不同,连接及任务执行参数存放在t_job表的link_spec中,任…

Jenkins配置代理节点时遇到的坑和解决办法

需求:服务器太满了,需要找个比较空闲的机器分担一下,看上了同网络的某开会用的笔记本,把这个本本利用起来能跑一个算一个。 但配置起来并不容易,遇到的问题有些网上也几乎找不到答案。这里记录一下能救一个是一个&…

python处理数据内存不够,python处理数据安全吗

大家好,小编为大家解答python处理数据索引的常见方法的问题。很多人还不知道python处理数据内存不够,现在让我们一起来看看吧! 学 目录 1.数据表的基本信息查看 2.查看数据表的大小 3.数据格式的查看 4、查看具体的数据分布 二、缺失值处理 …

sap table 获取 valuation class MBEW 查表获取

参考 https://www.tcodesearch.com/sap-tables/search?qvaluationclass

FastAPI访问/docs接口文档显示空白、js/css无法加载

如图: 原因是FastAPI的接口文档默认使用https://cdn.jsdelivr.net/npm/swagger-ui-dist5.9.0/swagger-ui.css 和https://cdn.jsdelivr.net/npm/swagger-ui-dist5.9.0/swagger-ui-bundle.js 来渲染页面,而这两个URL是外网的CDN,在国内响应超…

Text2SQL学习整理(二) WikiSQL数据集介绍

导语 上篇博客中,我们已经了解到Text2SQL任务的基本定义,本篇博客将对近年来该领域第一个大型数据集WikiSQL做简要介绍。 WikiSQL数据集概述 基本统计特性 WikiSQL数据集是一个多数据库、单表、单轮查询的Text-to-SQL数据集。它是Salesforce在2017年…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(十四)

目录 前言 知识储备 常用的视觉软件 远心镜头 工业镜头倍率及视场范围的计算方法

金仓数据库kca、kcp模拟题(五)

部分金仓数据库题型 答案在后面。 -------------KCP试题------- 1、sys_ct1是一个KingbaseESV8实用控制工具,以下哪些是sys_ct1的功能? 2、下面语法中可以成功执行连接KingbaseESv8数据库“SAMPLES”的语句是? 3、ksq1是KingbaseES自带的交互式客户端。如果未设置环境变量KI…