WGAN-GP大致原理

典型的gan由一个生成器和一个鉴别器组成,目标函数可以定义为以下:

$$
L=[\log[ D(\overrightarrow{x})]]_{\overrightarrow{x}\sim p_r(\overrightarrow{x})}+[\log [1 – D( G (\overrightarrow{z}) )]]_{\overrightarrow{z}\sim p(_\overrightarrow{z})}
$$
其中[ ]代表期望的计算,\(p_r(\overrightarrow{x})\)是真实训练的分布,\(p(\overrightarrow{z})$​​​​\) 是噪声变量的分布,\(G(\overrightarrow{z})\)​​​​是生成器根据噪声\(\overrightarrow{z}\)​​​​​生成的数据,\(D\)​​​​​是鉴别器,\(D(\overrightarrow{x})\)​​​​​

是表示来自\(\overrightarrow{x}​​​\)真实训练数据而不是生成数据的概率。在训练过程中,对判别器D进行训练,使其从生成的训练样本中辨别出真实训练样本的概率增加,同时对生成器G进行训练,来减小
$$
[\log [1 – D( G(\overrightarrow{z}) ))]]_{\overrightarrow{z}\sim p(\overrightarrow{z})}
$$

 

尽管GAN是一种非常强大的生成模型,但众所周知,它存在训练过程不稳定、梯度消失等局限性。WGAN可以缓解这些问题,它用Wasserstein距离代替GAN的原始目标函数,并通过梯度裁剪使模型满足1-Lipschitz约束。Lipschitz限制规定了连续函数的最大局部变化量,大大降低了训练过程中梯度的抖动。WGAN的目标函数定义为:
$$
L=[f(\overrightarrow{x})]_{\overrightarrow{x}\sim p_r}-[f( \overrightarrow{x})]_{\overrightarrow{x}\sim p_g}
$$
其中\(f\)是1-Lipschitz函数的集合,\(p_g\)是生成数据的分布。

遗憾的是,由于WGAN的鉴别器必须位于1-Lipschitz函数的空间内,有时WGAN仍然会产生低质量的样本或不能收敛。针对这一问题,提出了一种改进的WGAN训练方法。这种方法称为WGAN- gp,它用梯度惩罚代替WGAN中的梯度裁剪,使模型更好地满足1-Lipschitz约束。分别定义了WGAN-GP的产生器和鉴别器的损耗函数:
$$
L_g=-[f(\overrightarrow{x})]_{\overrightarrow{x}\sim p_g}
$$

$$
L_D =-[f(\overrightarrow{x})]_{\overrightarrow{x}\sim p_R}+[f(\overrightarrow{\text{\^{x}}})]_{\overrightarrow{\text{\^{x}}}\sim p_g}+\lambda[(||\nabla_\text{\^{x}}f(\text{\^{x}})||_2-1)^2]_{\overrightarrow{\text{\^{x}}}\sim p_{\text{\^{x}}}}
$$

其中\(\lambda\)为梯度惩罚的超参数,\( \text{\^{x}} \)是从实际训练样本与生成样本之间的线性插值中采样的。

发表评论