闫东杰
摘要:对于机器学习,最常见的是按照数据标签形式划分,可分为:监督学习、半监督学习、无监督学习、强化学习。本文分析研究了机器学习GAN框架。
关键词:人工智能;机器学习;无监督学习
中图分类号:TP181 文献标识码:A 文章编号:1007-9416(2019)06-0195-02
0 引言
对于原始的GAN网络,实际上还是种生成模型,与传统的生成模型不同的是,在对生成器进行训练的过程中,引入判别器,并对判别器训练更新后,再进行生成器的训练,然后通过交替训练,最终得到较为理想的生成器,“顺便”得到一个判别能力较强的判别器。这样,用一种巧妙的方法,较好解决了传统生成式模型中模拟最大似然估计过程所带来的需要训练复杂模型的问题。CNN(卷积神经网络)在图片生成方面是一个较为成熟的模型,将CNN引入,对GAN框架中生成器与判别器进行对应的改造,得到的便为DCGAN(深度卷积生成式对抗网络)。
1 原始GAN框架
GAN的一个基本的应用是样本生成,这里以图片为例进行相关的样本生成,以此来介绍GAN框架的基本组成、模块结构、训练过程。原始GAN框架的整体模型结构如图1所示。
GAN框架最主要的构成是生成器与判别器:(1)生成器。为全连接的神经网络,即多层感知机。多层感知机的参数在GAN运行的初始阶段是随机的,其内部各神经元的权重、偏值,在程序化时可由初始函数进行实现。这就是说,在刚开始引入的时候,并不需要对生成網络进行预先的训练。其通过前向传播,尽量去模仿、建模和学习真实数据的分布规律。通过反向传播来学习并进行内部参数更新。(2)判别器。其本质为全连接型的神经网络构成的二分类器。其参数在初始时内部参数是随机生成的,同样不需要预先进行参数设置或者训练。其判别自己所得到的一个输入数据,到底是来自于真实的数据分布还是来自于一个生成模型,输出结果为一个概率值,表明判别器认为数据来自真实分布的概率。通过反向传播来进行参数更新。(3)其他模块。GAN框架中,除了最主要的生成器和判别器,还有些重要的功能模块。①噪声处理模块;随机噪声Z是具有某个已知分布的噪声,分布的类型可以进行设定的,常用的分布有高斯分布与平均分布。随机噪声对于生成网络的输入,效果相当于对自动控制系统输入简单的单位信号,当得到输出结果时,其拉普拉斯变换后的函数就是系统的传递函数。同理,这样对于输出图片的分布的参数就是生成网络的内部参数。通过预处理转化模块,对于原始的GAN来讲,转化为一维的特征向量,这样才能与后面的生成网络输入层进行对接。这样处理后的数据更加的清晰,且特征的个数对应着输入层神经元的个数。②生成分布抽样模块;③真实样本预处理模块;④损失函数计算模块。
2 “对抗”训练
GAN框架的基本思想,就是通过一个生成神经网络去模拟真实给定的数据,这个神经网络模拟的是最大似然估计的过程,从而达到生成的目的。优化生成器是通过引入判别器后,顺承判别器的更新,进行反向传播优化的。现在有一个神经网络模型,希望它的参数可以达到最优,然后通过模拟最大似然估计的过程,很明显,最后也会得到“真实图片”。所以有以下式(1):
(1)
式中:G为生成器参数,D为判别器参数,V(G D)为引入的差距函数,m为训练样本的数目,D(x)为判别器对真实样本的判断属于真实数据的概率,D(G(z))为判别器对生成样本的判断属于真实数据的概率。
当返回损失函数梯度后,首先是对判别器优化,因为生成器的参数这时是确定的、不变的,所以差距函数就可以看做只与判别器参数有关,有就是说,固定生成器后,调整判别器参数的同时,就影响着差距函数的值。判别器的目的是希望更好地区分真实图片与生成图片,当然需要使差距函数越大越好,所以优化过程的第一步是优化判别器: (2)
式中:D1为在系统在G0确定、D0判定结果的前提下使得插句话最大时判别器的参数,G0为生成器的初始参数,D0为判别器的初始参数。
由式(2)可得: (3)
这时判别器的参数得到了更新,那对于生成器呢?更新后的判别器还需要再次对生成图片进行判断。相较于更新之前的判别器,优化后相当于用更为严苛的标准去识别生成图片。而生成器的目标是希望尽可能真实地产生图片,当判别器用更为严格的方式去识别,生成器依旧能很好地生成,这就得更加接近最优解,所以从生成器的角度,需要使式(3)的值更小,所以得到公式:
(4)
式中:G1为更新后的生成器的参数。
将式(3)代入式(4)可得:
(5)
式中:D1(x)为更新后判别器对真实图片的判定结果,D1(G(z))为更新后判别器对生成图片的判定结果。
在这个过程中,判别器的目标是把生成器生成的图片和真实的图片区分开来,得到两个判定概率,将结果返回判别器D中计算损失函数与梯度,再用梯度上升法进行更新参数,最后,对生成数据的最后一次判定,结果返回生成网络,计算对应的损失函数并反向传播更新参数。这是一个完整的训练过程,在一次训练中,判别网络与生成网络依次得到参数更新,相应的判别能力与生成能力增强。然后在进行下一轮训练样本的输入。这样,生成网络G和判别网络D构成了一个所谓的动态的“对抗博弈过程”。
假设每次得到的参数都是理想的,对判别网络的参数都会得到阶段性的最优解,对生成网络也得到了最优解,结果指向就是生成分布等于真实分布,GAN在最理想的状态下达到了纳什平衡。在生成模块G可以生成足以“以假乱真”的生成图片;对于判别模块D来说,此时的它难以判定G生成的图片是否是来自真实样本。这就很好地体现了生成网络从无到有产生“真实图片”的过程。
3 引入CNN
CNN,即卷積神经网络(Convolutional Neural Network),是受到生物思考方式启发的多层感知器,是一种前馈神经网络,人工神经元可以响应周围单元,这种网络可以用来进行大型的图像处理。
卷积神经网络在实际上就是一种从输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。与普通神经网络把输入层、隐含层与输出层之间进行全连接的设计相比,CNN对隐含单元和输入单元间的连接数量加以限制:每个隐含单元仅仅只能连接输入数据的一部分;而且,通过多层卷积层进行图像的浅层特征提取与多层池化层深层特征提取,将图片转化为简单的特征向量,这样一来,不仅能处理规格较大的图片,经过前向生成与反向更新的方式来学习整幅图像上的特征,整个过程耗时急剧缩短,计算量更小,运行时占用较小的内存,而且生成效果更稳定,判别器更快收敛。CNN的引入主要是对生成器与判别器的改进。改进后的整体模型结构如图2所示。
但是,引入不是单纯地将CNN所有层直接接入GAN中就可以了,需要分别对生成器与判别器做一些变动:(1)对于生成器。①中间层每层使用BN函数进行归一化处理。②取消所有池化层。③使用相应的转置卷积函数进行处理。④在每一层操作之后,数据输出经过一个Relu函数作为激活函数。⑤除去全连接层。⑥输出层使用tanh作为激活函数而不能用Relu函数。(2)对于判别器。①中间每层在激活函数层后使用BN函数进行归一化处理。②取消所有池化层,使用stride来代替池化层。③在每一层操作之后,数据输出经过一个leakyRelu函数。④除去全连接层。⑤输出层使用sigmoid作为激活函数,目的是要得到一个判定概率。⑥输出层里不使用BN函数进行归一化操作。
4 结语
GAN是一个十分灵活的框架,经过全世界研究人员对GAN网络模型从框架组成、结构、训练方法、损失函数类型、数据处理方法、增加约束条件、稳定性等方面不断地探索,原始GAN模型已经衍生出超过100种模型框架,诸如CGAN、DCGAN、WGAN、infoGAN等。GAN网络的适用范围现如今已经非常广了,从刚开始最基本的图片生成,到现在可以很好地应用在样本转换、生成领域,可以用在图像合成、图像编辑、风格迁移、图像超分辨率以及图形转换、音频的特征处理、智能创造等方面。
A Preliminary Study of GAN Framework for Machine Learning
YAN Dong-jie
(College of Automation, Beijing University of Information Technology,Beijing 100192)
Abstract:For machine learning, the most common classification is in the form of data labels, which can be divided into: supervised learning, semi-supervised learning, unsupervised learning and reinforcement learning. This paper analyzes and studies the GAN framework of machine learning.
Key words:artificial intelligence; machine learning; unsupervised learning