生成对抗网络原理篇(GAN)

本文深入解析了生成对抗网络(GAN)的基本原理,通过国宝与造假专家的比喻阐述了GAN的工作机制。GAN的目标是通过神经网络学习生成接近真实数据的样本,同时训练一个鉴别器以区分真实数据和生成数据。文章讨论了鉴别器和生成器的优化目标,并展示了全局最优解的情况,即鉴别器无法区分真假样本。GAN在图像生成、数据增强等领域有广泛应用。
摘要由CSDN通过智能技术生成

本文整理自B站的白板推导系列。这篇主要讲解GAN的原理。下一篇会动手在minist数据集上实现一个GAN。

一个例子

在这里插入图片描述

现在有一批国宝,一个造假专家和一个鉴赏专家。造假专家通过观察国宝,然后仿造工艺品,鉴赏专家通过判断一个工艺品是国宝还是造假专家仿造的,对造假专家进行反馈。同时造假专家也会对鉴赏专家进行反馈,提升鉴赏专家的鉴赏能力。

鉴赏专家的目标是通过上面的训练成为高水平的鉴赏专家,造假专家的目标是通过上面的训练成为高水平的造假专家,造出的工艺品能以假乱真。

数学描述

国宝是真实的,用 p d a t a ( x ) p_{data}(x) pdata(x)来描述,假设有 N 个 国 宝 N个国宝 N,那么有 x i ∼ p d a t a ( x i ) , i ∈ [ 1 , N ] x_{i} \sim p_{data}(x_i), i \in[1, N] xipdata(xi),i[1,N]。造假专家制作的工艺品是仿造的,用 p g ( x ; θ g ) p_g(x; \theta_g) pg(x;θg)来描述, θ g \theta_g θg是分布的参数。

在GAN中,并没有直接对 p g ( x ; θ g ) p_{g}(x;\theta_g) pg(x;θg)建模,而是用一个神经网络去逼近 p g ( x ; θ g ) p_{g}(x;\theta_g) pg(x;θg),而网络的参数就是 θ g \theta_g θg。由于纯粹的神经网络是不具备随机性的,所以假设 x x x是由一个随机变量 z z z生成的, z z z服从一个简单的分布,比如高斯分布,这样就引入了随机性。假设 z ∼ p z ( z ) z \sim p_{z}(z) zpz(z)
在这里插入图片描述
上面提到的神经网络就是 G ( z ; θ g ) G(z;\theta_g) G(z;θg),那么 x = G ( z ; θ g ) x=G(z;\theta_g) x=G(z;θg),上面这个过程其实也就是由一个隐变量生成样本的过程,也就是在建模分布 p g ( x ∣ z ) p_{g}(x|z) pg(xz)。VAE中不也是这样吗?只不过在VAE中显示定义了 p g ( x ∣ z ) p_{g}(x|z) pg(xz)的形式,一般都是高斯分布,而在GAN中,则用一个神经网络去拟合分布 p g ( x ∣ z ) p_{g}(x|z) pg(xz),并没有假设其具体形式,所以从这个角度来看,是不是GAN比VAE要更好。

D ( x ; θ d ) D(x;\theta_d) D(x;θd)是鉴赏专家鉴别造假专家生成的 x x x是国宝的概率, D ( x ; θ d ) D(x;\theta_d) D(x;θd)越大,表示鉴赏专家认为 x x x是国宝的概率越高。

也就是:

在这里插入图片描述

对于鉴赏专家来说:

  • 如果 x x x是来自于 p d a t a p_{data} pdata,那么 D ( x ) D(x) D(x)应该越高,
  • 如果 x x x是来自于 p g p_{g} pg,那么 D ( x ) D(x) D(x)应该越低,也就是 1 − D ( x ) 1-D(x) 1D(x)应该越高。前面已经说到造假专家的 x x x是通过 G ( z ; θ g ) G(z;\theta_g) G(z;θg)生成的,那么也就是 1 − D ( G ( z ; θ g ) ) 1-D(G(z;\theta_g)) 1D(G(z;θg))应该越高。

综上,站在鉴赏专家的角度考虑,就是使下式最大化:
E x ∼ p d a t a [ D ( x ) ] + E z ∼ p z [ 1 − D ( G ( z ; θ g ) ) ] E_{x \sim p_{data}}[D(x)] +E_{z \sim p_{z}}[1-D(G(z;\theta_g))] Expdata[D(x)]+Ezpz[1D(G(z;θg))]

为了计算的方方便,上面一般都取 l o g log log,也就是:
E x ∼ p d a t a [ l o g D ( x ) ] + E z ∼ p z [ l o g ( 1 − D ( G ( z ; θ g ) ) ) ] (1) \tag{1} E_{x \sim p_{data}}[logD(x)] +E_{z \sim p_{z}}[log(1-D(G(z;\theta_g)))] Expdata[logD(x)]+Ezpz[log(1D(G(z;θg)))](1)

对于造假专家来说:

  • 如果 x x x是来自于 p g p_g pg,那么希望鉴赏专家将其鉴别为真,也就是 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z)))越小。

站在造假专家的角度考虑就是使得下式最小:
E x ∼ p z [ l o g ( 1 − D ( G ( z ; θ g ) ) ) ] E_{x \sim p_{z}}[log(1-D(G(z;\theta_g)))] Expz[log(1D(G(z;θg)))]

综合鉴赏专家和造假专家的损失函数,最终GAN的损失是:
m i n G m a x D [ E x ∼ p d a t a [ l o g D ( x ) ] + E z ∼ p z [ l o g ( 1 − D ( G ( z ; θ g ) ) ) ] ] (2) \tag{2} min_{G} max_{D}[E_{x \sim p_{data}}[logD(x)] +E_{z \sim p_{z}}[log(1-D(G(z;\theta_g)))]] minGmaxD[Expdata[logD(x)]+Ezpz[log(1D(G(z;θg)))]](2)

GAN的难点是学习出来 G 和 D G和D GD,也就是学习出 θ g 和 θ d \theta_g和\theta_d θgθd

GAN的另一大特点是,GAN并没有直接去面对 p g p_{g} pg,没有假设 p g p_{g} pg的具体形式,而是用了一个可微的神经网络 G ( z ; θ g ) G(z;\theta_g) G(z;θg)去逼近 p g p_g pg

全局最优解

V ( G , D ) = E x ∼ p d a t a [ l o g D ( x ) ] + E x ∼ p g [ l o g ( 1 − D ( x ) ) ] (3) \tag{3} V(G,D)=E_{x \sim p_{data}}[logD(x)] +E_{x \sim p_{g}}[log(1-D(x))] V(G,D)=Expdata[logD(x)]+Expg[log(1D(x))](3)

为了推导方便,这里将 z z z都换成了 x x x。将 G 和 D G和D GD理解为神经网络就行。所以目标就变成了
m i n G m a x D V ( G , D ) (4) \tag{4}min_{G}max_{D} V(G,D) minGmaxDV(G,D)(4)

  • 固定 G , m a x D V ( G , D ) G,max_{D}V(G,D) GmaxDV(G,D)
    m a x D V ( G , D ) = ∫ p d a t a ( x ) l o g D ( x ) d x + ∫ p g ( x ) l o g ( 1 − D ( x ) ) d x = ∫ p d a t a ( x ) l o g D ( x ) + p g ( x ) l o g ( 1 − D ( x ) ) d x (5) \begin{aligned} \tag{5} max_{D}V(G,D)= & \int p_{data}(x)logD(x)dx+\int p_{g}(x)log(1-D(x))dx \\ = & \int p_{data}(x)logD(x)+p_{g}(x)log(1-D(x))dx \end{aligned} maxDV(G,D)==pdata(x)logD(x)dx+pg(x)log(1D(x))dxpdata(x)logD(x)+pg(x)log(1D(x))dx(5)

(5)式对 D D D求导得:
∂ m a x D V ( G , D ) ∂ D = ∫ ∂ ∂ D [ p d a t a ( x ) l o g D ( x ) + p g ( x ) l o g ( 1 − D ( x ) ) ] d x = ∫ [ p d a t a ( x ) 1 D ( x ) − p g ( x ) 1 1 − D ( x ) ] d x (6) \begin{aligned} \tag{6} {\partial max_{D}V(G,D) \over \partial D} = & \int {\partial \over \partial D}[p_{data}(x)logD(x)+p_{g}(x)log(1-D(x))]dx \\ = & \int [p_{data}(x){1 \over D(x)}-p_{g}(x){1 \over 1-D(x)}]dx \end{aligned} DmaxDV(G,D)==D[pdata(x)logD(x)+pg(x)log(1D(x))]dx[pdata(x)D(x)1pg(x)1D(x)1]dx(6)
令(6)式等于0,解得:
D G ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^{*}_{G}(x) = {p_{data}(x) \over p_{data}(x)+p_{g}(x)} DG(x)=pdata(x)+pg(x)pdata(x)
p d a t a ( x ) p_{data}(x) pdata(x)虽然形式未知,但是给定数据时是固定不变的。 p g ( x ) p_{g}(x) pg(x)是变化的,所以 D G ∗ D^{*}_{G} DG是关于生成器 p g ( x ) p_{g}(x) pg(x)的函数。

  • D G ∗ D^{*}_{G} DG带入(4)式
    m i n G m a x D V ( G , D ) = m i n G V ( G , D ∗ ) = m i n G E x ∼ p d a t a [ l o g p d a t a ( x ) p d a t a ( x ) + p g ( x ) ] + E x ∼ p g [ l o g p g ( x ) p d a t a ( x ) + p g ( x ) ] = m i n G E x ∼ p d a t a [ l o g p d a t a ( x ) ∗ 1 2 ( p d a t a ( x ) + p g ( x ) ) / 2 ) ] + E x ∼ p g [ l o g p g ( x ) ∗ 1 2 ( p d a t a ( x ) + p g ( x ) ) / 2 ] = m i n G K L ( p d a t a ( x ) ∣ ∣ p d a t a ( x ) + p g ( x ) 2 ) + K L ( p g ( x ) ∣ ∣ p d a t a ( x ) + p g ( x ) 2 ) − l o g 4 = m i n G J S ( p d a t a ( x ) ∣ ∣ p g ( x ) ) − l o g 4 ≥ − l o g 4 (7) \begin{aligned} \tag{7} min_{G}max_{D} V(G,D) = & min_{G}V(G, D^{*})\\ = & min_{G} E_{x \sim p_{data}}[log {p_{data}(x) \over p_{data}(x)+p_{g}(x)}] + E_{x \sim p_{g}}[log {p_{g}(x) \over p_{data}(x)+p_{g}(x)}] \\ = & min_{G} E_{x \sim p_{data}}[log {p_{data}(x) *{1\over 2}\over (p_{data}(x)+p_{g}(x))/2})] + E_{x \sim p_{g}}[log {p_{g}(x)*{1 \over 2} \over (p_{data}(x)+p_{g}(x)) / 2}] \\ = & min_{G} KL(p_{data}(x)||{p_{data}(x) + p_{g}(x) \over 2}) + KL(p_{g}(x)||{p_{data}(x) + p_{g}(x) \over 2}) -log4 \\ = & min_{G}JS(p_{data}(x)||p_{g}(x)) -log4\\ \ge & -log4 \end{aligned} minGmaxDV(G,D)=====minGV(G,D)minGExpdata[logpdata(x)+pg(x)pdata(x)]+Expg[logpdata(x)+pg(x)pg(x)]minGExpdata[log(pdata(x)+pg(x))/2pdata(x)21)]+Expg[log(pdata(x)+pg(x))/2pg(x)21]minGKL(pdata(x)2pdata(x)+pg(x))+KL(pg(x)2pdata(x)+pg(x))log4minGJS(pdata(x)pg(x))log4log4(7)
    p d a t a ( x ) = p d a t a ( x ) + p g ( x ) 2 = p g ( x ) p_{data}(x)={p_{data}(x)+p_{g}(x) \over 2} =p_{g}(x) pdata(x)=2pdata(x)+pg(x)=pg(x)时取等号。

此时, p g ∗ = p d a t a , D G ∗ = 0.5 p^{*}_{g}=p_{data}, D^{*}_{G}=0.5 pg=pdata,DG=0.5,这就是全局最优解,此时鉴别器对于生成器输出的 x x x都输出0.5,说明鉴别器已无法判断 x x x是真实数据还是假数据。生成器达到了全局最优。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值