【深度学习】生成对抗网络(GAN)的tensorflow实现
GAN( Generative Adversarial Nets)是Goodfellow I. J.大神在2014年提出的(参考资料【1】),在近几年成为人工智能领域研究的热点。本博文讲解最简单的生成对抗网络GAN原理并实现一个简单化GAN的tensorflow代码,可以作为大家入门GAN的参考资料。
一、GAN原理
原论文中给出这样一个例子:GAN由生成器( G G G)和判别器( D D D)构成。生成器就像是一个假钞制造团伙,它试图制造出完美的假钞;判别器就像是警察,试图正确分辨出所有的真钞和假钞。GAN模型就是在这种博弈的过程中训练出来的,如果最终生成器制造的假钞判别器都无法正确辨别出真假,此时的生成器就达到最优性能;如果任何生成器制造的假钞,判别器都可以准确判别,判别器就达到最优性能。
GAN的网络模型如下图所示:
假设真实训练样本为 X = { x 1 , x 2 , ⋯   , x m } X = \left\{ {
{x_1},{x_2}, \cdots ,{x_m}} \right\} X={
x1,x2,⋯,xm}
随机信号为 Z = { z 1 , z 2 , ⋯   , z n } Z = \left\{ {
{z_1},{z_2}, \cdots ,{z_n}} \right\} Z={
z1,z2,⋯,zn}
则GAN的最优化问题为:
min G max D { E x ∼ X [ log D ( x ) ] + E z ∼ Z [ log ( 1 − D ( G ( z ) ) ) ] } \mathop {\min }\limits_G \mathop {\max }\limits_D \left\{ { { {\rm E}_{x \sim X}}\left[ {\log D\left( x \right)} \right] + { {\rm E}_{z \sim Z}}\left[ {\log \left( {1 - D\left( {G\left( z \right)} \right)} \right)} \right]} \right\} GminDmax{ Ex∼X[logD(x)]+Ez∼Z[log(1−D(G(z)))]}
在判别器 D D D中,当输入数据为真实的训练数据,对应标签为