GAN

GAN基本概念

GAN由生成器和判别器组成,生成器负责生成样本,判别器负责判断生成器生成的样本是否为真。生成器要尽可能迷惑判别器,而判别器要尽可能区分生成器生成的样本和真实样本。
训练过程:

  • 首先随机初始化生成器 G,并输入一组随机向量,以此产生一些数据,并标注成 0。同时把来自真实分布中的数据标注成 1。两者同时丢进判别器 D 中,以此来训练判别器 D 。实现当输入是真的时候,判别器给出接近于 1 的分数,而输入假的时候,判别器给出接近于 0 的低分。
  • 对于生成网络,目的是生成尽可能逼真的样本。所以在训练生成网络的时候,我们需要联合判别网络一起才能达到训练的目的。也就是说,通过将两者串接的方式来产生误差从而得以训练生成网络。步骤是:我们通过随机向量(噪声数据)经由生成网络产生一组假数据,并将这些假数据都标记为 1 。然后将这些假数据输入到判别网路里边,判别器肯定会发现这些标为真实数据(标记为1)的输入都是假数据(给出低分),这样就产生了误差。在训练这个串接的网络的时候,一个很重要的操作就是固定判别网络的参数,只是把误差一直传,传到生成网络那块后更新生成网络的参数。

在完成了生成网络的训练之后,我们又可以产生新的假数据去训练判别网络了。我们把这个过程称作为单独交替训练。同时要定义一个迭代次数,交替迭代到一定次数后停止即可。

GAN的目标函数定义如下:

min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min _{G} \max _{D} V(D, G)=\mathrm{E}_{x \sim p_{\text {data}}(x)}[\log D(x)]+\mathrm{E}_{z \sim p_{z}(z)}[\log (1-D(G(z)))] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
这个目标函数可以分为两个部分来理解:

​ 第一部分: 判别器的优化通过 max ⁡ D V ( D , G ) \mathop {\max}\limits_D V(D,G) DmaxV(D,G)实现, V ( D , G ) V(D,G) V(D,G)为判别器的目标函数。
其第一项 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathrm{E}_{x \sim p_{\text {data }}(x)}[\log D(x)] Expdata (x)[logD(x)]表示:对于从真实数据分布中采用的样本 ,其被判别器判定为真实样本概率的数学期望。对于真实数据分布 中采样的样本,其预测为正样本的概率当然是越接近1越好。因此希望最大化这一项。
第二项 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))] Ezpz(z)[log(1D(G(z)))]表示:对于从噪声 P z ( z ) ​ P_z(z)​ Pz(z)分布当中采样得到的样本,经过生成器生成之后得到的生成图片,然后送入判别器,其预测概率的负对数的期望,这个值自然是越大越好,这个值越大, 越接近0,也就代表判别器越好。

第二部分: 生成器的优化通过 min ⁡ G ( max ⁡ D V ( D , G ) ) \mathop {\min }\limits_G({\mathop {\max }\limits_D V(D,G)}) Gmin(DmaxV(D,G))来实现。注意,生成器的目标不是 min ⁡ G V ( D , G ) \mathop {\min }\limits_GV(D,G) GminV(D,G),即生成器不是最小化判别器的目标函数,而是最小化判别器目标函数的最大值,判别器目标函数的最大值代表的是真实数据分布与生成数据分布的JS散度,JS散度可以度量分布的相似性,两个分布越接近,JS散度越小。

​ 判别器目标函数写成离散形式即为: V ( D , G ) = − 1 m ∑ i = 1 i = m l o g D ( x i ) − 1 m ∑ i = 1 i = m l o g ( 1 − D ( x ~ i ) ) V(D,G)=-\frac{1}{m}\sum_{i=1}^{i=m}logD(x^i)-\frac{1}{m}\sum_{i=1}^{i=m}log(1-D(\tilde{x}^i)) V(D,G)=m1i=1i=mlogD(xi)m1i=1i=mlog(1D(x~i))

​ 可以看出,这个目标函数和交叉熵是一致的,即判别器的目标是最小化交叉熵损失,生成器的目标是最小化生成数据分布和真实数据分布的JS散度。

推导

最大似然估计(Maximum Likelihood Estimation, MLE),就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!

考虑一组含有 m 个样本的的数据集 X={x(1),x(2),x(3),…,x(m)},独立的由未知参数的现实数据生成分布 pdata(x) 生成。

p model ( x ; θ ) p_{\text {model}}(x ; \theta) pmodel(x;θ)是一个由参数 θ (未知)确定在相同空间上的概率分布,也就是说,我们的目的就是找到一个合适的 θ 使得 p model ( x ; θ ) p_{\text {model}}(x ; \theta) pmodel(x;θ)m尽可能地去接近 p d a t a ( x ) p_{d a t a}(x) pdata(x).
我们利用真实分布 pdata(x) 中生成出来的数据集 X 去估算总体概率:

L = ∏ i = 1 m p model ( x ( i ) ; θ ) L=\prod_{i=1}^{m} p_{\text {model}}\left(x^{(i)} ; \theta\right) L=i=1mpmodel(x(i);θ)
对 θ 的最大似然估计被定义为:

θ M L = arg ⁡ max ⁡ θ p m o d e l ( X ; θ ) = arg ⁡ max ⁡ θ ∏ i = 1 m p m o d e l ( x ( i ) ; θ ) p model ( X ; θ ) → f ( x ( 1 ) , x ( 2 ) , x ( 3 ) , … , x ( m ) ∣ θ ) ∏ i = 1 m p model ( x ( i ) ; θ ) → f ( x ( 1 ) ∣ θ ) ⋅ f ( x ( 2 ) ∣ θ ) ⋅ f ( x ( 3 ) ∣ θ ) … f ( x ( m ) ∣ θ ) \begin{array}{c}{\theta_{M L}=\underset{\theta}{\arg \max } p_{m o d e l}(X ; \theta)=\underset{\theta}{\arg \max } \prod_{i=1}^{m} p_{m o d e l}\left(x^{(i)} ; \theta\right)} \\ {\qquad \begin{aligned} p_{\text {model}}(X ; \theta) & \rightarrow f\left(x^{(1)}, x^{(2)}, x^{(3)}, \ldots, x^{(m)} | \theta\right) \\ \prod_{i=1}^{m} p_{\text {model}}\left(x^{(i)} ; \theta\right) & \rightarrow f\left(x^{(1)} | \theta\right) \cdot f\left(x^{(2)} | \theta\right) \cdot f\left(x^{(3)} | \theta\right) \ldots f\left(x^{(m)} | \theta\right) \end{aligned}}\end{array} θML=θargmaxpmodel(X;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值