生成式对抗网络(GAN)综述——粗浅入门

2024-01-02 16:38

本文主要是介绍生成式对抗网络(GAN)综述——粗浅入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2017年十月份时做了关于GAN综述的PPT汇报(http://download.csdn.net/download/sir_chai/10104778),并上传了PPT及相关参考资料,这篇博文主要是对PPT进行解读。

第一页

今天我要给大家介绍的是GAN(GenerativeAdversarial Networks)生成式对抗网络的研究进展与展望,GAN是一个比较新的生成模型方法,在2014年由Hinton的博士生lan Goodfellow提出,随后关于GAN的改进型在学术界研究的如火如荼,到目前为止仍有很大的发展空间,所以如果对GAN感兴趣的话可以随后深入探索,当然,对于初学者,小柴小有告诫:做我们感兴趣的事,才能如痴如醉,乐此不疲,并且打定只做这一件事,才能把事情做好,贪多只会心力交瘁,一事无成。共勉之。下面以一个小故事进入正题:就是说,男朋友在给女朋友照相,照好后拿给女朋友看,女票说,不行不行,角度不好,显得脸多大啊。于是,男朋友寻找合适角度重新照,照好后又拿给女票看,女票说,不行不行,采光不好,都成黑脸包公了。于是,男朋友继续改进。。。寻找合适位置充分采光,照好后又拿给女票看,女票喜上眉梢,笑着说,这次可以了。这个小故事虽然简单,但却形象的展现了生成式对抗网络的思想,请大家记住这个故事,后续详细介绍将会进行印证。

第二页

1、GAN的提出背景。2、基本核心理论。3、实现模型和应用领域。4、结论。5、思考与展望

这是本文将要介绍的章节目录,在第3章的实现模型和应用领域里,我会重点介绍一下GAN在图像生成、P图软件、聊天机器人等软件方面的应用。

第三页

1、GAN的提出背景

(1)人工智能的热潮

随着计算能力的提高和各行业数据量的剧增 , 人工智能取得了快速发展。学术界普遍认为人工智能分为两个阶段 :感知阶段和认知阶段。在认知阶段 , 机器能够对世界的本质有一定的理解 , , 理解无论对人类还是人工智能都是内在的表现 , 无法直接测量 , 只能间接从其他方面推测 . 如何衡量人工智能的理解程度?著名学者 Feynman 有句名言 “What I cannot create, I do not understand. ( 不可造者 , 未能知也 .)”。 而 GAN 作为典型的生成式模型 , 其生成器具有生成数据样本的能力 . 这种能力在一定程度上反映了它对事物的理解 . 因此 ,GAN 有望加深人工智能的理解层面的研究。

(2)生成模型的积累

生成式模型不仅在人工智能领域占有重要地位 ,生成方法本身也具有很大的研究价值 .GAN 提出之前 , 生成式模型已经有一定研究积累,模型训练过程和生成数据过程中的目标函数难解、计算复杂度较高、效率较低等局限无疑是生成式模型的障碍。

(3)神经网络的深化

随着深度学习技术在各个领域取得巨大成功 , 神经网络研究再度崛起 . 神经网络作为深度学习的模型结构 , 得益于计算能力的提升和数据量的增大 , 一定程度上解决了自身参数多、训练难的问题 , 被广泛应用于解决各类问题中 。而GAN的生成器和判别器均为神经网络。

(4)对抗思想的成功

从机器学习到人工智能 , 对抗思想被成功引入若干领域并发挥作用 . 博弈、竞争中均包含着对抗的思想。

第四页

2、GAN的基本核心理论


Fig.1 生成式对抗网络的计算流程和一般结构


一个GAN主要包含两个独立的神经网络:生成器(Generator)和判别器(Discriminator)。生成器的任务是,从一个随机均匀分布里采样一个噪声z,然后输出合成数据G(z);判别器获得一个真实数据x或者合成数据G(z)作为输入,输出这个样本为“真”的概率。 在训练的过程中,生成器努力地欺骗判别器,而判别器努力地学习如何正确区分真假样本,这样,两者就形成了对抗的关系,最终我们的目标就是生成器生成足以以假乱真的伪样本。上述小故事正好形象化的描述了GAN的基本原理。

第五页

u 判别模型的目标函数
u 整个优化模型的目标函数

GAN的目标函数如公式所示。D(x)表示判别器认为x是真实样本的概率,而1-D(G(z))则是判别器认为合成样本为假的概率,取对数相加就能得到公式1的形式。训练GAN的时候,判别器希望目标函数最大化,也就是使判别器判断真实样本为“真”,判断合成样本为“假”的概率最大化;与之相反,生成器希望该目标函数最小化,也就是降低判别器对数据来源判断正确的概率。

第六页

u 最大最小化 (max-min) 目标函数的优化方法

假设在训练开始时,真实样本分布、生成样本分布以及判别模型分别是图中的黑线、绿线和蓝线。可以看出,在训练开始时,判别模型是无法很好地区分真实样本和生成样本的。接下来当我们固定生成模型,而优化判别模型时,优化结果如第二幅图所示,可以看出,这个时候判别模型已经可以较好的区分生成数据和真实数据了。第三步是固定判别模型,改进生成模型,试图让判别模型无法区分生成图片与真实图片,在这个过程中,可以看出由模型生成的图片分布与真实图片分布更加接近,这样的迭代不断进行,直到最终收敛,生成分布和真实分布重合。

GAN也存在一些问题。实际应用中,由于生成器的更新依赖于判别器,所以,如果判别器学习得不好,生成器也会学习得不好。为了缓解这个问题,在实际训练中,我们常常让判别器更新若干次之后,再让生成器更新一次。

第七页

3.实现模型与应用领域
         ——GAN
在优化方法上的改进


GAN的训练过程还是非常不稳定,而且生成的数据的多样性仍不如真实样本,此谓“模式收缩”(mode collapse)。后来,研究者们通过一系列的理论研究,发现导致训练不稳定以及模式收缩的主要原因是,最早的GAN中对真实分布与模拟分布的距离度量方法不合适,于是提出用更平滑的度量来代替原来的方法,使用Wasserstein距离代替Jensen-Shannon距离。并依据Wasserstein距离设计了相应的算法,即WGAN。新的算法与原始GAN相比,参数更加不敏感,训练过程更加平滑。

第八页

3.实现模型与应用领域

         ——GAN在计算机视觉上的应用

Fig.1生成某种类别的图像(PPGN模型)

Fig.2根据文字描述生成图像(PPGN模型)


图像生成的任务主要分两种,第一种是生成某种类别的图像,第二种是根据用户的描述生成符合描述的图像。第一种图像生成的任务已经取得了很好的效果,其生成的火山图像整体上已经可以达到以假乱真的效果。但在多物体的复杂图像上效果就差得多,这个任务的难点在于,生成器并不是学到了如何生成每个物体之后把它们组合起来,而是尝试一次到位生成整张图像。如图2所示,根据文字生成的图像只能够让人分辨出大概的内容。

第九页

3.实现模型与应用领域

         ——GAN在计算机视觉上的应用


Fig.1 风格迁移(CycleGAN模型)

Fig.2 人脸变换(IcGAN模型)

Fig.3 看图写作(RTT-GAN模型)

图像转换可以包含很多种,例如把一张夏天的图像转换成冬天的样子。普通马与斑马的相互变换。对人脸做变换的例子,从黑发变金发、从直发变爆炸头、把微笑变成露齿笑甚至改变性别。根据图片中的事物自动生成描述文章。

第十页

3.实现模型与应用领域

         ——DCGAN模型举例


Fig.1 图像生成的判别模型:CNN

Fig.2 图像生成的生成模型:DCGAN

在图像生成过程中,如何设计生成模型和判别模型呢?深度学习里,对图像分类建模,刻画图像不同层次,抽象信息表达的最有效的模型是:CNN(convolutional neural network,卷积神经网络)。CNN是深度神经网络的一种,可以通过卷积层(convolutional layer)提取不同层级的信息,如上图所示。CNN模型以图片作为输入,以图片、类别抽象表达作为输出,如:纹理、形状等等。前几天做了CNN综述PTT(http://download.csdn.net/download/sir_chai/10168463)

那么生成图像的模型应该是什么样子的呢?想想小时候上美术课,我们会先考虑构图,再勾画轮廓,然后再画细节,最后填充颜色,这事实上也是一个多层级的过程,就像是把图像理解的过程反过来,于是,人们为图像生成设计了一种类似反卷积的结构:Deep convolutional NN for GAN(DCGAN)。DCGAN采用一个随机噪声向量作为输入,如高斯噪声。输入通过与CNN类似但是相反的结构,将输入放大成二维数据。通过采用这种结构的生成模型和CNN结构的判别模型,DCGAN在图片生成上可以达到相当可观的效果。 以前做了DCGAN在图像取证系统中的应用PPT(http://download.csdn.net/download/sir_chai/10154183)

第十一页

3.实现模型与应用领域

         ——GAN在自然语言处理上的应用


Seq-GAN运用了强化学习中的策略梯度方法。

4.结论

GAN  通过训练得到的生成式模型和判别式模型, 在图像和视觉计算、语音和语言处理、信息安全等领域具有重大的应用价值 .

5.思考与展望


下一步发展,应该是能根据不同任务自动设计神经网络模型的算法了,让我们拭目以待






20171222

这篇关于生成式对抗网络(GAN)综述——粗浅入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/563032

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边