当前位置:   article > 正文

生成式对抗网络(Generative Adversarial Networks, GANs)_gans训练过程

gans训练过程

1 原始的 GANs

1.1 GANs 的结构

GANs 的结果图如下所示:

在这里插入图片描述

生成式对抗网络 GANs 最重要的两个部分为:

  • 生成器(Generator) :用于生成“假”样本。生成器从先验分布中采得随机信号,经过神经网络的变换,得到模拟样本。
  • 判别器(Discriminator) :用于判断输入的样本是真实的还是合成的。判别器既接收来自实际数据集的真实样本,也接收来自生成器的模拟样本,判别器需要判断输入的样本是真实数据还是生成器的模拟(假)数据。

从上面可以看出,生成器和判别器是对抗的关系,生成器要尽可能生成出让判别器失败的样本,而判别器要尽可能识别出生成器的假样本。GANs 就是通过这种对抗的关系,让生成器和判别器不断提升。理想状态下,生成器和判别器最终能达到一种平衡,两者都趋于完美,都没有更进一步的空间。

1.2 GANs 的训练过程

GANs 采用生成器和判别器交替优化的方式:

(1)固定生成器 G G G,训练判别器 D D D

固定生成器 G G G,然后利用生成器随机模拟产生样本 G ( z ) G(z) G(z) 作为负样本( z z z 是一个随机向量),并从真实数据集中采样获得正样本 X X X,将这些正负样本输入到判别器 D D D 中,根据判别器的输出(即 D ( X ) D(X) D(X) D ( G ( z ) ) D(G(z)) D(G(z)) )和样本标签来计算误差,最后利误差反向传播算法来更新判别器的参数,如下图所示

在这里插入图片描述

(2)固定判别器 D D D,训练生成器 G G G

固定判别器 D D D,然后利用当前生成器 G G G 随机模拟产生样本 G ( z ) G(z) G(z),并输入到判别器 D D D 中;根据判别器的输出 D ( G ( z ) ) D(G(z)) D(G(z)) 和样本标签来计算误差,最后利用误差反向传播算法来更新生成器 G G G 的参数,如下图所示:

在这里插入图片描述

1.3 GANs 的训练模型

先给出 GANs 的公式:

min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ D ( G ( z ) ) ] (1) \min_G \max_D V(D,G)=E_{x\sim p_{data}(x)}[\log D(x)] + E_{z\sim p_{z}(z)}[\log D(G(z))] \tag{1} GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[logD(G(z))](1)

训练模型中需要用到的符号有:

  • G G G:生成器模型,通常为一个多层感知机结构的可微函数
  • D D D:判别器模型
  • x x x:判别器的输入,包括真实数据样本和生成器的输出
  • z z z:生成器输入的噪声变量,则生成器的输出为 x = G ( z ) x=G(z) x=G(z)
  • p d a t a ( x ) ≐ p ( x ∣ d a t a ) p_{data}(x) \doteq p(x|data) pdata(x)p(xdata):表示从实际数据集得到样本 x x x 的概率
  • p z ( z ) p_{z}(z) pz(z):生成器输入的噪声变量 z z z 的先验分布
  • p g ( x ) ≐ p ( x ∣ g ) p_{g}(x) \doteq p(x|g) pg(x)p(xg):生成器输出的样本 x x x 的概率
  • p s r c ( d a t a ) p_{src}(data) psrc(data) p s r c ( g ) p_{src}(g) psrc(g):判别器模型输入样本中来自真实数据和来自生成器的概率,一般采用一半真实数据、一半假数据的方式,即: p s r c ( d a t a ) = p s r c ( g ) = 1 2 p_{src}(data)=p_{src}(g)=\frac{1}{2} psrc(data)=psrc(g)=21
  • G ( z ; θ g ) G(z;\theta_g) G(z;θg) θ g \theta_g θg 为生成器的多层感知机的参数, G ( z ; θ g ) G(z;\theta_g) G(z;θg) 代表生成器模型的输出空间
  • D ( x ; θ d ) D(x;\theta_d) D(x;θd) θ d \theta_d θd 为判别器的多层感知机的参数, D ( x ; θ d ) D(x;\theta_d) D(x;θd) 为判别器的输出,是一个标量值
  • D ( x ) D(x) D(x):判别器预测输入样本 x x x 来自于真实数据集的概率
  • ( G ∗ , D ∗ ) (G^*,D^*) (G,D):求得的解,即达到最终纳什均衡点时的生成器和判别器

1.3.1 生成器 G G G 固定,寻求当下最优的判别器 D G ∗ D_G^* DG

判别器 D D D 实质上解决的是一个二分类问题,其损失函数可以用 负对数似然(Negative Log-Likelihood,NLL),也称 绝对交叉熵损失(Categorical Cross-Entropy Loss) 来表示:

L ( D ) = − ∫ p ( x ) [ p ( d a t a ∣ x ) log ⁡ D ( x ) + p ( g ∣ x ) log ⁡ ( 1 − D ( x ) ) ] d x (2) L(D)=-\int p(x)[p(data|x) \log D(x) + p(g|x) \log (1-D(x))]dx \tag{2} L(D)=p(x)[p(datax)logD(x)+p(gx)log(1D(x))]dx(2)

其中:

  • p ( d a t a ∣ x ) p(data|x) p(datax):样本 x x x 属于真实数据集的概率
  • p ( g ∣ x ) p(g|x) p(gx):样本 x x x 属于生成器的概率

我们可以推出:

p ( x ) p ( d a t a ∣ x ) = p s r c ( d a t a ) p ( x ∣ d a t a ) = p s r c ( d a t a ) p d a t a ( x ) = 1 2 p d a t a ( x ) p(x)p(data|x)=p_{src}(data)p(x|data)=p_{src}(data)p_{data}(x)=\frac{1}{2}p_{data}(x) p(x)p(datax)=psrc(data)p(xdata)=psrc(data)pdata(x)=21pdata(x)

p ( x ) p ( g ∣ x ) = p s r c ( g ) p ( x ∣ g ) = p s r c ( g ) p g ( x ) = 1 2 p g ( x ) p(x)p(g|x)=p_{src}(g)p(x|g)=p_{src}(g)p_{g}(x)=\frac{1}{2}p_{g}(x) p(x)p(gx)=psrc(g)p(xg)=psrc(g)pg(x)=21pg(x)

代入公式 (2)则有:

L ( D ) = − ∫ p ( x ) [ p ( d a t a ∣ x ) log ⁡ D ( x ) + p ( g ∣ x ) log ⁡ ( 1 − D (

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/712473
推荐阅读
相关标签
  

闽ICP备14008679号