生成式对抗网络(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

相关文章

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

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;} 例题: