生成对抗网络-理论部分|深度学习(李宏毅)(二十三)

简介: 生成对抗网络-理论部分|深度学习(李宏毅)(二十三)

一、极大似然估计


  1. 极大似然估计


FLAKJM633UG2$~2Q9VPFQ)K.png

TYGX~BY2MP]FZZ_F$Y__H]7.png

]K_S}N$N}6IY8TEZZ)8CX~P.png

N)${B`R[YTJPLHQ366(Z77Y.png


  1. 存在的问题


GZO][OZ9[U~(7FY5~LE_PGN.png

                                                 Generator


C57TCL{L{SVCBVS548VL5(1.png


二、GAN的原理


  1. GAN的基本理念

)50EOK45FJT@N8VJOE2{@S0.png

                                          求解

9$6_$Q_(95TP{EE24_9GKBW.png}%04G65C_PJADHYUNU09C23.png892[$_CHJ$JC4LJUK{W0P@4.png


(6TP}XGI[MGXFE0@P7A1RVR.png

  1. 算法

I0H{$Q0~SEC1`Y3`1]VXX8D.png

                                                           f(x)

F7$GVB~0E[C8I)UNXOQ[TBE.png

GEZ)K$CK8XJBTRY05XAXLAH.png

                                                       issue


CGC96_`P7%T@A7{@A2HMMLX.png

~5X0HW%57CX4IXG]S{K4WT9.png

JW14YL%F0JMI9TD]$Y(CCZ2.png


三、实践中的一些issue


  1. 实作中Generator目标函数的问题


在训练Generator时,我们实际上在极小化这个式子:


@IZZ_W2ZF2BLFR@JE9GEOYW.png

                                              图像


ZZ8EL(I%HI35DO8]~W@8R4G.png

这个式子的梯度就符合我们的期望,不过这样就不是在极小化JS散度,而是在极小化另外一个奇怪的散度。


  1. 评估JS散度


在训练Discriminator时,理论上Discriminator的loss就代表JS散度的大小,但是在实际操作时Discriminator的loss几乎趋近于OWJQ0K373(1GU98ATY~MHF6.png,也就是说Discriminator总是有办法把生成的图片与真实的图片分开。举例来说,在下面的实验中,Generator采用了训练1、10、25个epoch的三种,其中训练越多epoch的Generator产生的图片越接近真实,但是从图中看到无论哪一种Generator它们的Discriminator的loss总是能够趋近于OWJQ0K373(1GU98ATY~MHF6.png,并且Discriminator也总能训练到100%的准确率,Discriminator的loss并不能反映JS散度的大小:


S0GYRF`8~CL~][WNM6J5B}E.png

                                                 实验


另外一个例子如下,使用一个较强和一个较弱的Generator,可以看到强的Generator生成的图片已经很真实了,但是它们的Discriminator的loss缺失差不多的,这表明Discriminator的loss并没有反映JS散度:


8ZV3R~HA3_(FD5@1`O~81I9.png

                                              实验

%DDMWF]4N{D8)W}QQUFMM42.png


  • Reason1:通过采样的方式来训练


由于我们始终没有办法直接计算损失函数中的期望,因此只能通过采样的方法来进行训练,那么有可能如下图所示,对于采样出的样本,由于Discriminator过于powerful,那么它总有办法寻找一个边界来分开样本,类似过拟合:


YWETYWEDT68`6S@4W~$5F3J.png

                       过拟合


解决这种问题我们考虑让Discriminator变得弱一点,要么迭代次数少一点要么加dropout,不过要将Discriminator变弱到什么程度,这又是很难把握的,而且这与我们最初的设想又出现了矛盾,Discriminator能够衡量JS散度的一个前提就是Discriminator要足够地powerful,因此这里就出现了一些矛盾。


  • Reason2:数据的本质


GAN要拟合的数据和Generator生成的数据实际上是高维空间中的流形(manifold)。拿二维空间中的一维流形来说,可能K`48TQQ%1722UQ$(]G5M@46.png很少有交集,或者交集很少,像图中这样的数据的JS散度就会很小:


~VOKXIE3BV[]2UIGMY0L68U.png

                               流形


我们之前有说过GAN的训练和生物进化很类似,比如下面图中生物进化出眼睛的过程,只要从左到右的进化对生物的繁衍是有利的,这个进化的过程才能持续下去:


4L0X5H4[I}ZIK~9)%8(_`LJ.png

                                                     眼睛的进化  


U@ZN`2~J%45IBS~UTWU0(@8.png

                                                 GAN的训练


解决这个问题的方法是可以给Discriminator的输入添加一些噪声或者给标签添加一些噪声(随机标记一些正样本为负样本,负样本为正样本),这样会使数据产生下图中的效果,因而重叠的部分就有可能变大:


CK(``Y(H[K[%0EH5ZDG1US3.png

                               加噪


不过要将加入的噪声随着训练而减弱,否则会影响机器对真实的数据分布的判断。


另一种方式是使用别的度量差异度的方式,比如WGAN这方法,这一类方法下一篇中再具体介绍。


  1. Mode Collapse


0JSMVL[F]T9I_YL%IWB7A05.png

                                            Mode Collapse


举例来说,在下面的二次元人物头像生成的图片中就有许多图片是重复的,这就是Mode Collapse的问题:


BX{FQSKJAC`3{I1]6EYXDU3.png

                     Mode Collapse


再举一个例子来说,比如要拟合的数据如下图:


$9{E{)L)FXN]C_]FMD0Y]XT.png

                 真实数据


我们期待GAN能够按照下面的方式来逐步学习到数据的真实分布:


Z5]7{1C8AOZO9LR$5[C04KL.png

                                                 期待的结果


而实际的结果可能只会像下面这样,这就是Mode Collapse的问题:


VHC[O{)D}NJ45EO3CULA@W0.png

                                                 实际的结果


8CV}DXN$~AU1~V(R}_`]@4E.png


                                                    原因分析

但是因为C@37@L23Y6(1QGC2FGC{JU8.png是可以由我们自己来设计的,因此我们可以设计目标函数C@37@L23Y6(1QGC2FGC{JU8.png来让GAN最小化KL散度,然而Mode Collapse的问题还是存在。具体的有关Mode Collapse的问题之后再介绍,这里就不再赘述。

相关文章
|
21天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
221 55
|
1月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
160 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
18天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
58 31
|
24天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
311 7
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
58 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)

热门文章

最新文章