当前位置: 首页 > article >正文

【学习笔记】GAN实战(基础)

本文介绍构建和训练生成对抗网络(GAN)的方法。

生成对抗网络(GAN)与生成模型导论

生成对抗网络(Generative Adversarial Network,GAN)

GAN简介

机器学习算法擅长识别已有数据中的模式,并将这种能力用于分类(为样本分配正确类别)和回归(根据一系列的输入进行数值估算)等任务中。

1.1 什么是GAN

GAN是一类由两个同时训练的模型组成的机器学习技术:一个是生成器,训练其生成伪数据;另一个是鉴别器,训练其从真实数据中识别伪数据。
生成(generative)表示模型的总目标——生成新数据。GAN通过学习生成的数据取决于所选择的训练集。
对抗(adversarial)指的是构成GAN框架的两个动态博弈、竞争的模型:生成器和鉴别器。
网络(network)表示最常用于生成器和鉴别器的一类机器学习模型是神经网络。从简单到复杂有前馈神经网络、卷积神经网络,以及U-Net。

1.2 GAN是如何工作的

生成器的目标是生成能最大程度有效捕捉训练集特征的样本,以至于生成出的样本与训练数据别无二致。生成器可以看作是一个反向的对象识别模型——对象识别算法学习图像中的模式,以期望能够识别图像的内容。生成器不是去识别这些模式,而是学习从头开始去创建它们。
生成器通过从鉴别器的分类结果中接收反馈来不断学习。鉴别器的目标是判断一个特定的样本是真的(来自训练集)还是假的(由生成器生成)。
因此,每当鉴别器将假的图像错判为真实图像时,生成器就会得到奖励;相反,每当鉴别器正确地将生成的假图像识别出来,生成器就会得到反馈进行改进。

1.3 GAN的收敛问题

GAN训练就是一个零和博弈问题,即一方的收益等于另一方的损失。当一方提高一定程度时,另一方会恶化同意的程度。零和博弈都有一个纳什均衡点,任何一方无论怎么努力都不能改善他们的处境或者结果。
当满足以下条件时,GAN达到纳什均衡。
(1)生成器生成的伪样本与训练集中的真实数据别无二致。
(2)鉴别器所能做的只是随机猜测一个特定的样本是真的还是假的(即猜测一个实例为真的概率是50%)
当达到纳什均衡时,GAN就被认为是收敛的。实际中,很难达到。

1.4 为什么要学习GAN

GAN一个引人瞩目的成就是图像到图像的转换(image-to-image translation)。GAN的最大魅力来自它的创造性。

1.5 小结

(1)GAN是一种利用两个神经网络之间的动态竞争来合成真实数据样本的深度学习技术,例如能合成具有照片级真实感的虚假图像。构成一个完整的GAN的两个网络如下:
· 生成器,其目标是通过生成与训练数据集别无二致的数据来欺骗鉴别器;
· 鉴别器,其目标是正确区分来自训练数据集的真实数据和由生成器生成的伪数据。
(2)目前,GAN在许多不同的领域都要者广泛的应用,如时尚、医药和网络安全等。

自编码器生成模型入门

自编码器被认为是最接近GAN的前身。

2.1 生成模型简介

从要生成内容的描述指令开始,最后在转换系统的另一端得到图像。这就是最简单、最非正式的生成模型

2.2 自编码器

自编码器可以帮助我们对数据进行自动编码,它由两部分构成:编码器和解码器。典型应用:压缩。

2.3 什么是GAN的自编码器

自编码器与GAN的一个关键区分点是:我们用一个损失函数对整个自编码器网络进行端到端的训练,而GAN的生成器和鉴别器分别有损失函数。

2.4 自编码器的构成

(1)编码器网络
(2)潜在空间
(3)解码器网络

2.5 自编码器的使用

(1)自由的压缩图像或对象
(2)训练自编码器不需要带标签的数据
(3)生成新图像

2.6 无监督学习

无监督学习(unsupervised learning)是一种从数据本身学习而不需要关于这些数据含义的附加标签的机器学习。例如,聚类是无监督的,因为只是试图揭示数据的底层表示;异常检测时有监督的,因为需要人工标记异常情况。

2.7 代码就是生命

使用深度学习高级API——Keras。
优势免费资源社区:Towards Data Science。
曼宁出版社——Deep Learning with Python。
Keras是用于TensorFlow、Microsoft Cognitive Toolkit(CNTK)和Theano这几个深度学习框架的高级API。它易于使用并被允许更高级别的抽象,可以让用户专注于概念和思路。

2.8 为什么要使用GAN

GAN对真实数据的分布具有隐式且难以分析的理解。

2.9 小结

(1)高级自编码器由编码器、潜在空间和解码器组成。使用常用目标函数来训练自编码器,该目标函数可以测量再现数据和原始数据之间的距离。
(2)自编码器有许多应用,也可以用作生成模型。在实践中这往往不是其主要用途,因为其他方法(尤其是GAN)对生成任务更为擅长。
(3)可以使用Keras编写简单的变分自编码器生成手写数字。
(4)VAE的局限性促使我们的研究向GAN迈进。

GAN模型

3.1 GAN的基础:对抗训练

每个网络只控制了决定损失的部分参量,生成器和鉴别器只能调整自己的参数而不能互相调整对方的参数。因此GAN训练可以用一个博弈 过程来更好地描述,而非优化。该博弈的对手是GAN所包含的两个网络。

3.2 生成器和鉴别器

生成器( G G G)接收随机噪声向量 z z


http://www.kler.cn/a/154947.html

相关文章:

  • Git回到某个分支的某次提交
  • 通过Python 调整Excel行高、列宽
  • Mac 使用mac 原生工具将mp4视频文件提取其中的 mp3 音频文件
  • uni-app表格带分页,后端处理过每页显示多少条
  • js中typeOf无法区分数组对象
  • STM32中,不进行printf改写通过函数达到同款效果
  • 动态规划学习——回文串
  • day4 找到两个链表的交点
  • 用友U8 ERP和面粉行业专版系统接口集成方案
  • 国产AI边缘计算盒子,双核心A55丨2.5Tops算力
  • 怎么用SSH远程连接Ubuntu服务器
  • 【Unity动画】状态机添加参数控制动画切换(Animator Controller)
  • C# WPF上位机开发(计算器界面设计)
  • Oracle连接和使用
  • Java高级技术-反射
  • 02_线程通信与线程池
  • H265、VP9、AV1视频编码器性能对比
  • 22.Oracle中的临时表空间
  • 短线买入卖出有哪些交易技巧?
  • Sailfish OS 移动操作系统
  • C/C++内存管理(含C++中new和delete的使用)
  • 优化机器学习:解析数据归一化的重要性与应用
  • Git 合并冲突解决步骤
  • Simple_SSTI_1-WEB-bugku-解题步骤
  • 实时流式计算 kafkaStream
  • 第8关:定义一个名为PROC_AVGWEIGHT的有参数存储过程