Generative Adversarial Nets
Summary
作者提出了一个生成式模型,采用多层感知机实现。将生成式模型与判别式模型共同训练,两者扮演零和博弈游戏的两个玩家。对于生成器Generator,需要生成足以骗过判别器的图形,对于判别器Discriminator,需要识别输入是来自真实数据还是生成数据。随着生成器G的训练,判别器的输出将稳定在$ \frac{1} {2} $ 。
Research Objective
设计一种生成式模型,生成足以媲美真实数据的模拟数据。
Problem Statement
- 价值函数如何定义
- 如何训练保证生成器与判别器都能够得到优化
- 最优解以及可收敛证明
Method(s)
-
价值函数:
m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] min_{G}max_{D}V(D,G)=E_{x \sim p_{data}(x)}[logD(x)]+E_{z \sim p_{z}(z)}[log(1-D(G(z)))] minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]p d a t a ( x ) , p z ( z ) p_{data}(x),p_{z}(z) pdata(x),pz(z)分别表示真实数据分布与随机噪声分布;D(x)为判别器输出,输出为[0-1]的概率值;G(z)为生成器输出,输出为生成模拟数据;对于判别器、生成器,需要使得价值函数朝向不同的方向变化。
-
训练方法:
生成器的输入数据 { z 1 , . . . , z m } \{z^{1},...,z^{m}\} { z1,...,zm}来源于噪声 p g ( z ) p_g(z) pg(z),真实数据 { x 1 , . . . , x m } \{x^{1},...,x^{m}\} { x1,...,xm}为 p d a t a ( x ) p_{data}(x) pdata(x)中抽样所得。
训练时,由于需要将两个模型同步训练,故采用的训练方法为先保持生成器不变,沿着红框式子梯度上升的方向优化判别器D,训练k步后(论文中k=1),再根据式2(蓝框)沿着梯度下降的方向优化生成器G。
这两个优化函数都是价值函数的变形,沿着红框函数梯度上升方向优化很好理解,因为要增强判别器的识别能力,沿着蓝框下降的方向训练生成器,是要提高生成器对判别器的误导能力。 -
判别器的全局最优解
判别器的优化方向是将价值函数最大化,对于
V ( G , D ) = ∫ x p d a t a ( x ) l o g ( D ( x ) ) d x + ∫ z p z ( z ) l o g ( 1 − D ( g ( z ) ) ) d z 将 第 二 个 积 分 中 g ( z ) 改 写 成 x 噪 声 分 布 p z ( z ) 改 写 为 生 成 器 输 出 分 布 p g ( x ) 积 分 对 象 改 为 x , 则 有 V ( G , D ) = ∫ x p d a t a ( x ) l o g ( D ( x ) ) d x + p g ( x ) l o g ( 1 − D ( x ) ) d x 又 对 于 任 意 ( a , b ) ∈ R \ ( 0 , 0 ) 函 数 y → a l o g ( y ) + b l o g ( 1 − y ) 在 [ 0 , 1 ] 区 间 内 取 得 最 大 值 时 y = a a + b , 则 D ( G ) 的 全 局 最 优 解 为 D G ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) V(G,D)=\int_{x}p_{data}(x)log(D(x))d_{x}+\int_zp_{z}(z)log(1-D(g(z)))dz \\ 将第二个积分中g(z)改写成x\\ 噪声分布p_z(z)改写为生成器输出分布p_g(x)\\ 积分对象改为x,则有 \\ V(G,D)=\int_{x}p_{data}(x)log(D(x))d_{x}+p_{g}(x)log(1-D(x))dx \\ 又对于任意(a,b)\in R\backslash(0,0)\\ 函数y\rightarrow alog(y)+blog(1-y)在[0,1]区间内取得最大值时\\ y=\frac{a}{a+b},则D(G)的全局最优解为 \\ D^*_G(x)=\frac{p_{data}(x)}{p_{data}(x)+p_g(x)}\\ V(G,D)=∫xpdata(x)log(D(x))dx+∫zpz(z)log(1−D(g(z)))dz将第二个积分中g(z)改写成x噪声分布pz(z)改写为生成器输出分布pg(x)积分对象改为x,则有V(G,D)=∫xpdata(x)log(D(x))dx+pg(x)log(1−D(x))dx又对于任意(a,b)∈R\(0,0)函数y→alog(y)+blog(1−y)在[0,1]区间内取得最大值时y=