论文速览(05)

Generative Adversarial Nets

Ian J. Goodfellow et al.
摘要

本文评估生成模型的新方法:对抗网络。同时训练生成器与判别器,生成器的目的是拟合出真实数据的分布,判别器的目的是评估样本为真实数据而非生成数据的概率。
在训练过程中,生成器尽最大努力使判别器误判,而判别器将尽最大努力作出正确判断。这实质上为零和博弈,结果为生成器可以复原真实数据分布,生成高度伪造的数据,以假乱真,使得判别器对每个样本判断结果为 1 2 \frac{1}{2} 21.

概述

文中探究了一种简单情形:生成模型为一个多层感知机,往其中输入随机噪声数据,得到输出的生成样本。而判别器也是一个多层感知机。假设随机噪声 z z z的的分布为 p z ( z ) p_z(z) pz(z),生成器 G G G生成的数据分布为 p g ( z ) = G ( z ; θ g ) p_g(z)=G(z;\theta_g) pg(z)=G(z;θg),其中 θ g \theta_g θg为生成器 G G G的参数,生成器 G G G的目标就是使已知分布 p g ( z ) p_g(z) pg(z)尽量接近未知的真实数据分布 p d a t a ( x ) p_{data}(x) pdata(x),判别器 D D D的输出为 D ( x ; θ d ) D(x;\theta_d) D(x;θd),是一个标量,表示数据 x x x为真实数据的概率。
根据交叉熵损失,可以构造出如下损失函数:
V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] V(D,G)=E_{x\sim p_{data}(x)}[\log D(x)]+E_{z\sim p_{z}(z)}[\log (1-D(G(z)))] V(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
训练中, D , G D,G D,G的目的各不相同, G G G希望其生成的数据越接近真实越好,换言之, G G G希望 D ( G ( z ) ) D(G(z)) D(G(z))尽可能大(即接近1),这将使得 V ( D , G ) V(D,G) V(D,G)变小。
D D D希望其鉴别数据真伪的能流越强越好,换言之, D D D希望 D ( x ) D(x) D(x)尽可能大(即接近1), D ( G ( z ) ) D(G(z)) D(G(z))尽可能小(即接近0),这将使得 V ( D , G ) V(D,G) V(D,G)变大。
综合来看,训练目标为:
min ⁡ G max ⁡ D V ( D , G ) \min_G \max_D V(D,G) GminDmaxV(D,G)

注意

实际上,上述损失函数 V ( D , G ) V(D,G) V(D,G)中训练方式 min ⁡ G log ⁡ ( 1 − D ( G ( z ) ) \min_G \log (1-D(G(z)) minGlog(1D(G(z))不能为 G G G的训练提供足够大的梯度,因为在训练初始阶段, G G G的伪造性能还很差, D D D可以轻易鉴别真伪,给出很高的置信度来区分生成样本与真实样本。此时对任意的输入噪声 z z z D ( G ( z ) ) D(G(z)) D(G(z))都几乎为0, log ⁡ ( 1 − D ( G ( z ) ) \log (1-D(G(z)) log(1D(G(z))也几乎为0,处于饱和状态,只能为 G G G提供很小的梯度。如果用 max ⁡ G log ⁡ ( D ( G ( z ) ) \max_G \log (D(G(z)) maxGlog(D(G(z))的方式训练 G G G,则尤为不同,由于 D ( G ( z ) ) D(G(z)) D(G(z))几乎为0,故 log ⁡ ( D ( G ( z ) ) \log (D(G(z)) log(D(G(z))存在着很大的绝对值,可以为 G G G的训练提供更强烈的梯度。

训练算法:

(请忽视以下的‘——’)
for 总训练迭代次数:
——for k 步: //进判别器 D D D行训练
————从已知的噪声分布 P z ( z ) P_z(z) Pz(z)中选出 m m m个样本 { z ( 1 ) , . . . , z ( m ) } \left\{z^{(1)},...,z^{(m)} \right\} {z(1),...,z(m)}
————从训练数据中选出 m m m个样本 { x ( 1 ) , . . . , x ( m ) } \left\{x^{(1)},...,x^{(m)} \right\} {x(1),...,x(m)}
————设判别器 D D D的参数为 θ d \theta_d θd,通过加上如下梯度来更新判别器 D D D
———— ∇ θ d 1 m ∑ i = 1 m [ log ⁡ D ( x ) + log ⁡ ( 1 − D ( G ( z ) ) ) ] \nabla_{\theta_d}\frac{1}{m}\sum^m_{i=1}[\log D(x)+\log (1-D(G(z)))] θdm1i=1m[logD(x)+log(1D(G(z)))]

——for 1 步: //进生成器 G G G行训练
————从已知的噪声分布 P z ( z ) P_z(z) Pz(z)中选出 m m m个样本 { z ( 1 ) , . . . , z ( m ) } \left\{z^{(1)},...,z^{(m)} \right\} {z(1),...,z(m)}
————设判别器 G G G的参数为 θ g \theta_g θg,通过减去如下梯度来更新判别器 D D D
———— ∇ θ g 1 m ∑ i = 1 m log ⁡ ( 1 − D ( G ( z ) ) ) \nabla_{\theta_g}\frac{1}{m}\sum^m_{i=1}\log (1-D(G(z))) θgm1i=1mlog(1D(G(z)))

以上算法在每对判别器 D D D的参数更新 k k k次后,对生成器 D D D的参数更新1次。训练完成后,从 P z ( z ) P_z(z) Pz(z)任取一个样本,经过生成器 G G G运算后,都可生成出符合 p d a t a ( x ) p_{data}(x) pdata(x)分布的样本。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值