system: [SYSTEM]

user: 2. GAN网络的基本框架 生成对抗网络是通过对抗过程来估计生成模型的新框架，并使用随机梯度下降算法实现优化。这避免了反复应用马尔可夫链学习机制带来的分配函数计算 [ 3 ]，降低了运算的复杂度。生成对抗网络需要同时训练两个模型：生成模型G寻找合理生成分布和鉴别器模型D来估计训练数据不生成模型数据的概率 [ 4 ]。生成器网络模型可以学习真实样本的数据分布，生成新的数据样本。鉴别器网络模型是一种通用的二分类器。鉴别器网络模型的输入是真实数据和生成的样本数据，然后判断数据的来源，是真实数据还是虚假数据。为了能在博弈中胜出，两个模型需不断提高自身的生成能力和判别能力。生成模型和判别模型都可以是类似深度神经网络的结构 [ 5 ]。生成对抗网络GAN的优化的期望是能够达到“纳什均衡”的状态，也就是说其优化过程是一个极大极小博弈(Minimax game)问题，生成网络模型中的生成器可以很好地学习数据样本的分布，从而生成所需的数据样本。生成对抗网络框架如图1所示： 图1. 生成对抗网络框架 在训练过程中，生成网络G的目的是尽可能多地生成真实的图像来欺骗和辨别网络D。D的目标是尽可能地将G的图像从真实图像中分离出来。目标函数是： min G max D V ( D ， G ) = E x ∼ p d a t a ( x ) [ log D ( x ) ] + E z ∼ p z ( z ) [ log ( 1 − D ( G ( z ) ) ) ] 整个公式由两项组成。X是真实图像，Z是输入到G网络的噪声，G(Z)是G网络生成的图像。D(x)是D网络判断真实图片是否真实的概率(因为x是真实的，所以对于D，值越接近1越好)。D(g(z))是D网络判断g生成的图像是否真实的概率。G的目的：如上所述，D(G(z))是D网络判断G生成的图像是否真实的概率。生成器希望G生成的图像“越接近真实越好” [ 6 ]。换句话说，生成器希望D(G(z))尽可能得大，这时V(D， G)会变小。因此目标函数最前面的记号是 min G 。判别器的主要作用为：D的判别效果越强，D(x)应该越大，D(G(x))应该越小。这时V(D， G)会变大。因此式子对于D来说是求最大 max D 。 2.1. 条件生成对抗网络 传统的生成对抗网络是通过随机向量Z生成图像Y。但这样的初始化数据在训练过程中较为复杂，有的时候训练找不到纳什均衡点，最终导致训练不稳定。 条件生成对抗网络的损失函数和普通的生成对抗网络有一定的区别也有一些联系。条件生成对抗网络增加了有辅助特征，并且多了L1损失函数，这使得源域与目标域之间的图像距离尽可能的靠近。 L c G A N ( G ， D ) = E x ， y [ log D ( x ， y ) ] + E x ， z [ log ( 1 − D ( x ， G ( x ， z ) ) ) ] ，     arg min G max D L c G A N ( G ， D ) 和GAN网络的目标函数类似，但是GAN网络是根据随机噪声z生成图像，而条件生成对抗网络是根据随机噪声Z和输入图像X去生成。此时公式意义有一定的调整：首先整个式子由两项构成。x表示 源域图像，y表示真实图片，z表示输入生成器网络的噪声，而 G ( x ， z ) 表示生成器网络根据源域图像和随机噪声生成的目标域图片。其次 D ( x ， y ) 表示判别器网络判断真实图片是否真实的概率 [ 7 ]，真实图片用y表示，生成器网络中加入输入噪声z，而 G ( x ， z ) 表示生成器网络根据源域图像和随机噪声生成的目标域图片。其次 D ( x ， y ) 表示判别器网络判断输入一个批次的图片真实性的概率，其中Y是真实图片，对于判别器得到的最终结果越靠近1说明图片效果较好。而 D ( x ， G ( x ， z ) ) 是判别器网络判断生成器生成的图片的是否真实的概率。再其次生成器网络的目的是 D ( x ， G ( x ， z ) ) 是判别器网络判断生成器生成的图片是否真实的概率，生成器最终的方向是拟合真实图片的概率。也就是说，生成器希望 D ( x ， G ( x ， z ) ) 尽可能得大，这时 1 − D ( x ， G ( x ， z ) ) 会变小。因此式子的最前面的记号是 min G 。判别器的目的：判别器的能力越强， D ( x ， y ) 应该越大， D ( x ， G ( x ， z ) ) 应该越小。这时 1 − D ( x ， G ( x ， z ) ) 会变大。因此式子对于判别器来说是求最大( max D )。条件生成对抗网络的生成器作用除了生成可以愚弄判别器的图像之外，还需要尽量接近目标域的图像Y： L L 1 ( G ) = E x ， y ， z [ ‖ y − G ( x ， z ) ‖ 1 ] 关于损失函数的选取，选用L1损失函数而不用L2损失函数从而保证更少的模糊。对于一维的数据，最小化L2损失函数是获得算术平均数；最小化L1值得到的是中位数。最终的损失函数为： G * = arg min G max D L c G A N ( G ， D ) + λ L L 1 ( G ) 2.2. 循环生成对抗网络损失函数 循环对抗网络中有两个生成器，分别为D和F表示，生成器有X和Y两个定义域。生成器G用来基于X域的图像生成Y域的图像(X > Y)，生成器F用来基于Y域的图像生成X域的图像(Y > X)，这两个生成器的定位是相反的过程，通过损失函数 L ( G ， F ， D X ， D Y ) 进行约束。同时循环生成对抗网络中有2个判别器，分别用D(X)和D(Y)表示，它用于判断输入图像在X域或Y域中是真是假。因此，循环生成对抗网络可视为两种对抗网络的融合。一种对抗网络由发生器G和鉴别器D(y)组成，实现了从X域到y域的图像生成和识别；另一种对抗网络由生成器F和鉴别器D(x)组成，实现了从y域到x域的图像生成和识别。 L ( G ， F ， D X ， D Y ) = L G A N ( G ， D Y ， X ， Y ) + L G A N ( F ， D X ， Y ， X ) + λ L c y c ( G ， F ) 循环生成对抗网络的整体优化目标包括三个部分：第一部分 L G A N ( G ， D Y ， X ， Y ) 表示生成器G和判别器D Y 的优化目标；第二部分为了改善生成器F和判别器D X 采用函数 L G A N ( F ， D X ， Y ， X ) 作为优化目标，二部分的目的是生成对抗网络算法本身的优化目标。第三部分采用 L c y c ( G ， F ) 来提升从变换域再变换到原域时图像的一致的能力。 L G A N ( G ， D Y ， X ， Y ) 如公式所示，采用一般生成对抗的优化目标，优化目标的最大化采用判别器D Y ，生成器G要最小化公式中的后半部分。 L G A N ( G ， D Y ， X ， Y ) 也是同理。 L G A N ( G ， D Y ， X ， Y ) = E y ∼ p d a t a ( y ) [ log D Y ( y ) ] + E x ∼ p d a t a ( x ) [ log ( 1 − D Y ( G ( x ) ) ) ] 为了使训练过程更加稳定，实际训练是基于最小二乘损失的。例如，鉴别器D的优化目标变为最小 化 E x → p d a t a ( y ) [ ( D ( y ) − 1 ) 2 ] + E x → p d a t a ( x ) [ D ( G ( x ) ) 2 ] 优化目标的第一部分是期望D(y)尽可能接近1，也就是说，当输入真实图像y时，鉴别器D具有相信输入是真实的最大概率。第二部分是期望D(g(x))尽可能接近0，也就是说，当输入假图像g(x)时，鉴别器D相信输入是真的概率最低。生成器G的优化目标变成最小化 E → p d a t a ( x ) [ ( D ( G ( x ) ) − 1 ) 2 ] ，这个优化目标是使D(G(x))的期望值更接近1，而D(G(x))越接近1表示判别器D越相信生成器G生成的图像G(x)是真实图像。 L c y c ( G ， F ) 如下公式所示，其中G(x)表示从X域到Y域的变化，F(G(X))表示再从Y域变换到X域，模型训练的目标当然是希望F(G(X))尽可能和X接近，因此用其距离来约束，也就是 x → G ( x ) → F ( G ( x ) ) ≈ x ，将这个称之为正向循环一致性；同理对于 y → F ( y ) → G ( F ( y ) ) ≈ y 称之为后向循环一致性。 L c y c ( G ， F ) = E x ∼ p d a t a ( x ) [ ‖ F ( G ( x ) ) − x ‖ ] + E y ∼ p d a t a ( y ) [ ‖ G ( F ( y ) ) − y ‖ ]