生成对抗网络 GAN 基本原理与发展历程

简介: 生成对抗网络 GAN 基本原理与发展历程从人工到自动的**机器学习**:+ 从人工提取特征 到 **自动提取特征**相对于传统的机器学习,**深度学习**厉害的地方就是能够自己学习特征提取。机器学习:数据预处理 -> 特征提取 -> 选择分类器深度学习:数据预处理 -> 设计模型 -> 训练+ 从人工判断**生成结果的好坏** 到 **自动判断**和优化训练集需要大量的人工标注数据,这个过程是成本很高且效率很低的。而人工判断生成结果的好坏也是如此。**GAN** 能自动完成这个过程,且不断的优化,这是一种效率非常高,且成本很低的方式。

1、什么是GAN

背景知识:

  • 快速掌握 机器学习(Machine Learning) 常用概念术语,常用算法

https://gwj1314.blog.csdn.net/article/details/120873124
快速掌握 深度学习(Deep Learning) 常用概念术语,常用模型
https://gwj1314.blog.csdn.net/article/details/120932539

从人工到自动的机器学习

  • 从人工提取特征 到 自动提取特征

相对于传统的机器学习,深度学习厉害的地方就是能够自己学习特征提取。
机器学习:数据预处理 -> 特征提取 -> 选择分类器
深度学习:数据预处理 -> 设计模型 -> 训练

  • 从人工判断生成结果的好坏自动判断和优化

训练集需要大量的人工标注数据,这个过程是成本很高且效率很低的。而人工判断生成结果的好坏也是如此。
GAN 能自动完成这个过程,且不断的优化,这是一种效率非常高,且成本很低的方式。

GAN的原理:

  • 生成对抗网络(GAN)由2个重要的部分构成

1、生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器
2、判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”

  • 对抗过程

1:固定「判别器」,训练「生成器」
使用一个还 OK 判别器,让一个生成器不断生成“假数据”,然后给这个判别器去判断。
一开始,「生成器」还很弱,所以很容易被揪出来。
但是随着不断的训练,「生成器」技能不断提升,最终骗过了「判别器」。
2:固定「生成器」,训练「判别器」
当通过了第一阶段,继续训练「生成器」就没有意义了。这个时候我们固定「生成器」,然后开始训练「判别器」。
「判别器」通过不断训练,提高了自己的鉴别能力,最终他可以准确的判断出所有的假图片。
到了这个时候,「生成器」已经无法骗过「判别器」。
3、循环阶段一和阶段二
通过不断的循环,「生成器」和「判别器」的能力都越来越强。
最终我们得到了一个效果非常好的「生成器」,我们就可以用它来生成我们想要的图片了。

  • 简单形象的例子

警察严打小偷导致小偷水平提升。
警察为了破案提高自己水平。
小偷为了生存提高自己水平。
警察和小偷的水平都越来越高。

GAN的应用:

  • 生成图像数据集

人工智能的训练是需要大量的数据集的,如果全部靠人工收集和标注,成本是很高的。GAN 可以自动的生成一些数据集,提供低成本的训练数据。

  • 生成人脸照片、动物照片、漫画人物

生成人脸照片,漫画人物等

  • 图像到图像的转换

把一种形式的图像转换成另外一种形式的图像,就像加滤镜一样。
把草稿转换成照片、把照片转换成油画、三次元转化为二次元

  • 文字到图像的转换

StackGAN,从鸟类和花卉等简单对象的文本描述中生成逼真的照片

  • 照片到Emojis

GANs 可以通过人脸照片自动生成对应的表情(Emojis)

  • 人脸照片编辑

使用GAN可以生成特定的照片,例如更换头发颜色、更改面部表情、甚至是改变性别。

  • 预测不同年龄的长相

给一张人脸照片, GAN 就可以帮你预测不同年龄阶段你会长成什么样。

  • 提高照片分辨率,让照片更清晰

生成一张分辨率更高的照片,使得这个照片更加清晰

  • 照片修复

假如照片中有一个区域出现了问题(例如被涂上颜色或者被抹去),GAN可以修复这个区域,还原成原始的状态。

  • 自动生成3D模型

给出多个不同角度的2D图像,就可以生成一个3D模型。

2、GAN的发展历程

GAN的缺陷

  • 多样性不足的问题

模式缺失(Mode Collapse)问题。GANs的学习过程可能出现模式缺失,生成器开始退化,总是生成同样的样本点,无法继续学习。
以使用GANs训练人脸图像为例,当生成分辨率较小的图像时,GANs生成的图像的多样性尚且能得到保证。但是当生成较高分辨率的图像,就会出现GANs生成的人脸图像都非常相似的情况,也就是多样性不足的问题。

  • 高分辨率图像生成质量差的问题

难训练,不稳定。生成器和判别器之间需要很好的同步,但是在实际训练中很容易D收敛,G发散。D/G 的训练需要精心的设计。
所以使用GANs生成算法去生成高分辨率图像时,通常存在两大问题。其一,生成的图像失真的问题。其二,生成的高分辨率图像高频细节模糊的问题。
于是围绕着缺陷有很多的优化和变种

GAN的种类

  • GAN 算法有数百种之多,大家对于 GAN 的研究呈指数级的上涨,目前每个月都有数百篇论坛是关于对抗网络的。

GANs动物园 收录了几乎所有的GAN算法实现,论文地址。
开源地址:https://github.com/hindupuravinash/the-gan-zoo

附:高分辨率生成的一种解决方案
参考资料:https://www.jiqizhixin.com/articles/2017-11-16-20

  • 基于上下文约束渐进式生成对抗网络

PG-GAN:
采用 progressive growing 的训练方式,先训一个小分辨率的图像生成,训好了之后再逐步过渡到更高分辨率的图像。然后稳定训练当前分辨率,再逐步过渡到下一个更高的分辨率。
充分利用上个分辨率训练的结果,通过缓慢的过渡(w 逐渐增大),使得训练生成下一分辨率的网络更加稳定。
LAP-GAN:
借助 CGAN,高分辨率图像的生成是以低分辨率图像作为条件去生成残差,然后低分辨率图上采样跟残差求和得到高分辨率图,通过不断堆叠 CGAN 得到我们想要的分辨率。
PC-GAN
首先通过GAN生成局部的小尺寸图像,通过内容扩展网络(Content Extension Network, CEN)在小尺寸图像的基础上生成更大尺寸的图像。接着通过多个CEN逐步的放大图像的尺寸,最终生成大尺寸的图像。
通过多个CEN,将最初的图像中心的小尺寸部分向四周扩展,在分辨率不变的情况下逐渐生成越来越大尺寸的图像。

  • 多层次感知特征约束

多层感知机是指具有至少三层节点,输入层,一些中间层和输出层的神经网络。
感知机(Perceptron)一般只有一个输入层与一个输出层,导致了学习能力有限而只能解决线性可分问题。多层感知机(Multilayer Perceptron)是一类前馈(人工)神经网络及感知机的延伸,它至少由三层功能神经元(functional neuron)组成(输入层,隐层,输出层),每层神经元与下一层神经元全互连,神经元之间不存在同层连接或跨层连接,其中隐层或隐含层(hidden layer)介于输入层与输出层之间的,主要通过非线性的函数复合对信号进行逐步加工,特征提取以及表示学习。
多层感知机的强大学习能力在于,虽然训练数据没有指明每层的功能,但网络的层数、每层的神经元的个数、神经元的激活函数均为可调且由模型选择预先决定,学习算法只需通过模型训练决定网络参数(连接权重与阈值),即可最好地实现对于目标函数的近似,故也被称为函数的泛逼近器(universal function approximator)。
首先在图像数据集上训练一个对称的自编码器网络,通过自编码器提取每一张图像对应的多个不同层次的语义特征表达,从而获得图像数据集对应的多个不同层次的语义特征数据集。
其次,利用多个不同层次的语义特征数据集训练得到多个不同层次的语义特征判别器,用于判断输入值是否符合相应语义特征数据集的分布。
最后,在图像生成的过程中,利用上一步中得到的语义特征判别器对生成器的多个中间层加以约束。通过引入多个权重参数用于平衡多个特征判别器之间的约束权重,最终在多个语义判别器共同约束下,使得图像生成过程中的网络中间层都处于可控的范围,使得生成图像的过程更加稳定更加可靠。

  • 增加生成多样性

两种可行的方法:通过 loss 让网络自己调整、通过设计判别多样性的特征人为引导
WGAN 属于前者,它采用更好的分布距离的估计。模型收敛意味着生成的分布和真实分布一致,能够有多样性的保证。PG-GAN 则属于后者。
PG-GAN 不引入新的参数,利用特征的标准差作为衡量标准。

目录
相关文章
|
3天前
|
机器学习/深度学习 算法 TensorFlow
深度学习基础:神经网络原理与构建
**摘要:** 本文介绍了深度学习中的神经网络基础,包括神经元模型、前向传播和反向传播。通过TensorFlow的Keras API,展示了如何构建并训练一个简单的神经网络,以对鸢尾花数据集进行分类。从数据预处理到模型构建、训练和评估,文章详细阐述了深度学习的基本流程,为读者提供了一个深度学习入门的起点。虽然深度学习领域广阔,涉及更多复杂技术和网络结构,但本文为后续学习奠定了基础。
30 5
|
1天前
|
机器学习/深度学习 自然语言处理 算法
生成对抗网络(GAN):创造与竞争的艺术
【6月更文挑战第14天】**生成对抗网络(GANs)**是深度学习中的亮点,由生成器和判别器两部分构成,通过博弈式训练实现数据生成。GAN已应用于图像生成、修复、自然语言处理和音频生成等领域,但还面临训练不稳定性、可解释性差和计算资源需求高等挑战。未来,随着技术发展,GAN有望克服这些问题并在更多领域发挥潜力。
|
1天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
|
2天前
|
机器学习/深度学习 自然语言处理 并行计算
YOLOv8改进 | 注意力机制 | 在主干网络中添加MHSA模块【原理+附完整代码】
Transformer中的多头自注意力机制(Multi-Head Self-Attention, MHSA)被用来增强模型捕捉序列数据中复杂关系的能力。该机制通过并行计算多个注意力头,使模型能关注不同位置和子空间的特征,提高了表示多样性。在YOLOv8的改进中,可以将MHSA代码添加到`/ultralytics/ultralytics/nn/modules/conv.py`,以增强网络的表示能力。完整实现和教程可在提供的链接中找到。
|
2天前
|
机器学习/深度学习
【从零开始学习深度学习】21. 卷积神经网络(CNN)之二维卷积层原理介绍、如何用卷积层检测物体边缘
【从零开始学习深度学习】21. 卷积神经网络(CNN)之二维卷积层原理介绍、如何用卷积层检测物体边缘
|
9天前
|
缓存
计算机网络——数据链路层-可靠传输的实现机制:选择重传协议SR(介绍、工作原理、窗口尺寸、题目练习)
计算机网络——数据链路层-可靠传输的实现机制:选择重传协议SR(介绍、工作原理、窗口尺寸、题目练习)
11 0
|
9天前
|
网络架构
计算机网络——计算机网络体系结构(2/4)-分层的必要性(五层协议原理体系结构)
计算机网络——计算机网络体系结构(2/4)-分层的必要性(五层协议原理体系结构)
9 0
|
9天前
|
网络协议 网络架构
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
计算机网络——计算机网络体系结构(1/4)-常见的计算机网络体系结构(OSI体系、TCP/IP体系、原理体系五层协议)
14 0
|
11天前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
13 1
|
11天前
|
JSON 缓存 前端开发
网络原理 - HTTP / HTTPS(3)——http响应
网络原理 - HTTP / HTTPS(3)——http响应
10 0