GAN
GAN 即生成式对抗网络,这个网络包括两个部分:生成器 \(G\) 和鉴别器 \(D\)。\(D\) 的目标是在生成器生成的图像(或其他输出)和真实图像中鉴别出两者,即 \(\mathcal L_D:=L[D(G(x)), \text{fake}]+L[D(y),\text{valid}]\);而 \(G\) 的目标则是相对地生成不会被鉴别器发现的图像,即 \(\mathcal L_G:=L[D(G(x)),\text{valid}]\)。
\[\begin{align*}
\mathcal L_D&:=L[\text{fake},D(G(x))]+L[\text{valid},D(y)]\\
\mathcal L_G&:=L[\text{valid},D(G(x))]\\
\end{align*}
\]
其中 \(L\) 为衡量两个参数差异的函数;\(D\) 为鉴别器输出,判断图像(生成的图像或者真实图像)的真实性;\(G(x)\) 代表生成器生成的图片;\(y\) 代表真实图片。
在生成器和鉴别器的竞争中,生成器生成的图片逐渐接近真实图片,也就是说生成器学习到了样本的真实分布。
基本形式
对于一个简单的、应用于图片生成的 GAN,生成器的输入是一个服从分布 \(\mathcal Z\) 的高维随机噪声 \(\pmb z\sim\mathcal Z\);而真实图片则为一个服从分布 \(\mathcal X\) 的数据 \(\pmb x\sim\mathcal X\)。
令 \(D()\) 输出值区间为 \([0,1]\) 表示真实性,则 \(\begin{cases}\text{fake}\leftarrow0\\\text{valid}\leftarrow1\end{cases}\),选择 \(L\) 为二分类的交叉熵函数。
\[\begin{align*}
L(y,\hat y)&=-y\log\hat y-(1-y)\log(1-\hat y)\\[0.5em]
\mathcal L_D&=L[\text{fake},D(G(\pmb z))]+L[\text{valid},D(\pmb x)]\\
&=-\log[1-D(G(\pmb z))]-\log D(\pmb x)\\
\mathcal L_G&=L[\text{valid},D(G(\pmb z))]\\
&=-\log D(G(\pmb z))
\end{align*}
\]
改写为平均形式(期望),即加上 \(\mathbb E\)。
\[\begin{align*}
\mathcal L_D&=-\frac1N\sum_{i=1}^N\log[1-D(G(\pmb z_i))]+\log D(\pmb x_i)\\
&\xlongequal{N\to\infty}-\sum_{\pmb z\sim\mathcal Z}p_{\pmb z\sim\mathcal Z}(\pmb z)\log[1-D(G(\pmb z))]-\sum_{\pmb x\sim\mathcal X}p_{\pmb x\sim\mathcal X}(\pmb x)\log D(\pmb x_i)\\[0.7em]
&=-\mathbb E_{\pmb z\sim\mathcal Z}\log[1-D(G(\pmb z))]-\mathbb E_{\pmb x\sim\mathcal X}\log D(\pmb x)\\[1em]
\mathcal L_G&=-\frac1N\sum_{i=1}^N\log D(G(\pmb z_i))\\
&\xlongequal{N\to\infty}-\sum_{\pmb z\sim\mathcal Z}p_{\pmb z\sim\mathcal Z}(\pmb z)\log D(G(\pmb z))\\[0.5em]
&=-\mathbb E_{\pmb z\sim\mathcal Z}\log D(G(\pmb z))
\end{align*}
\]
显然 \(\log[1-D(G(\pmb z))]\) 和 \(\log[D(G(\pmb z))]\) 是对立的,一者增加则另一者减小,不妨将 \(\mathcal L_G\) 改为 \(\mathbb E_{z\sim\mathcal Z}\log[1-D(G(\pmb z))]\),此时可以将 \(\mathcal L_D\) 和 \(\mathcal L_G\) 合为一体。
\[\begin{align*}
\mathcal L&:=\mathbb E_{\pmb z\sim\mathcal Z}\log[1-D(G(\pmb z))]+\mathbb E_{\pmb x\sim\mathcal X}\log D(\pmb x)\\
\end{align*}
\]
此时生成器和鉴别器的目标合成为 \(\min_G\max_D\mathcal L\)。
实际训练时,\(D\) 和 \(G\) 是分开训练的,应该分别采用 \(\mathcal L_D,\mathcal L_G\) 训练。
若 \(\theta_G\) 设为 \(G\) 的权重,根据 \(D(G(\pmb z))\) 的在最开始训练的情况(\(D(G(\pmb z))\) 接近 0),应该选择 \(\mathbb E_{\pmb z\sim\mathcal Z}\log D(G(\pmb z))\) ,这样会有更高的导数。也可以看到,两个函数的极值点是相同的,都满足 \(\nabla_{\theta_G}D(G(\pmb z))=\pmb0\)。
\[\begin{align*}
\nabla_{\theta_G}\mathbb E_{\pmb z\sim\mathcal Z}\log D(G(\pmb z))&=\frac1{D(G(\pmb z))}\nabla_{\theta_G}D(G(\pmb z))\\
\nabla_{\theta_G}\mathbb E_{\pmb z\sim\mathcal Z}\log[1-D(G(\pmb z))]&=\frac1{D(G(\pmb z))-1}\nabla_{\theta_G}D(G(\pmb z))\\
\end{align*}
\]
最优鉴别器
已知 \(\pmb z\sim\mathcal Z\),\(\pmb x\sim\mathcal X\),而 \(\pmb z\) 经过生成器的处理也产生了一个分布 \(G(\pmb z)\sim\mathcal Z_G\)。这些分布都是在(可能不同的)高维空间的一种分布。将这些分布合成为 \(\mathcal T\),满足 \(Supp(\mathcal T)=Supp(\mathcal X)\cup Supp(\mathcal Z_G)\),其中 \(Supp\) 为分布的支撑集。
\[\begin{align*}
\mathcal L&=\mathbb E_{\pmb z\sim\mathcal Z}\log[1-D(G(\pmb z))]+\mathbb E_{\pmb x\sim\mathcal X}\log D(\pmb x)\\
&=\int_{\mathcal Z}p_{\mathcal Z}(\pmb z)\log[1-D(G(\pmb z))]\mathrm d\pmb z+\int_{\mathcal X}p_{\mathcal X}(\pmb x)\log D(\pmb x)\mathrm d\pmb x\\
&=\int_{\mathcal Z_G}p_{\mathcal Z_G}(\pmb z)\log[1-D(\pmb z)]\mathrm d\pmb z+\int_{\mathcal X}p_{\mathcal X}(\pmb x)\log D(\pmb x)\mathrm d\pmb x\\
&=\int_{\mathcal T}p_{\mathcal Z_G}(\pmb x)\log[1-D(\pmb x)]+p_{\mathcal X}(\pmb x)\log D(\pmb x)\mathrm d\pmb x\\
\end{align*}
\]
考虑到 \(a\log x+b\log(1-x),0<a,b,x<1\) 达到最大值时,自变量 \(x\) 为 \(\frac a{a+b}\)。因此最优的鉴别器为 \(D(\pmb x)={p_{\mathcal X}(\pmb x)\over p_{\mathcal Z_G}(\pmb x)+p_{\mathcal X}(\pmb x)}\)。
\[\begin{align*}
\max_D\mathcal L&=\mathbb E_{\pmb z\sim\mathcal Z}\log[1-D(G(\pmb z))]+\mathbb E_{\pmb x\sim\mathcal X}\log D(\pmb x)\\
&=\mathbb E_{\pmb x\sim\mathcal T}\log\left[{p_{\mathcal Z_G}(\pmb x)\over p_{\mathcal Z_G}(\pmb x)+p_{\mathcal X}(\pmb x)}\right]+\mathbb E_{\pmb x\sim\mathcal T}\log\left[{p_{\mathcal X}(\pmb x)\over p_{\mathcal Z_G}(\pmb x)+p_{\mathcal X}(\pmb x)}\right]\\
&=2D_{JS}\left(p_{\mathcal X}\parallel p_{\mathcal Z_G}\right)-\log4
\end{align*}
\]
即在最优鉴别器下,损失函数等同于 JS 散度。
学习过程
那么根据两个分布的 JS 散度,能否从一个分布学习到另一个分布呢?
生成器 \(G(\pmb z;\theta_G)\) 的学习方法是求 \(\nabla_{\theta_G}\mathcal L\) 或 \(\nabla_{\theta_G}\mathcal L_G\),现在将其转化为生成器生成的分布和损失函数的求导关系,并简化 \(\mathcal L,p_{\mathcal Z_G},p_{\mathcal X}\) 的写法:
\[\begin{align*}
\nabla_p\mathcal L_{maxD}(p, q)&:=\nabla_{p_{\mathcal Z_G}}\max_D\mathcal L(p_{\mathcal Z_G},p_{\mathcal X})
\end{align*}
\]
由于分布是概率的函数,所以关于分布的导数就是关于一个函数的导数,这个函数服从约束 \(p\in[0,1]\wedge\int p=1\)。
现在采用拉格朗日乘数法求这个导数的极值点
\[\begin{align*}
&&{\mathrm d\over\mathrm d\epsilon}\mathcal L_{maxD}(p+\epsilon\eta,q)&=\int_{\mathcal T}{\mathrm d\over\mathrm d\epsilon}\left[(p+\epsilon\eta)\log\left({p+\epsilon\eta\over p+q+\epsilon\eta}\right)+q\log\left({q\over p+q+\epsilon\eta}\right)\right]\mathrm d\pmb x\\
&&&=\int_{\mathcal T}\eta\log{p+\epsilon\eta\over p+q+\epsilon\eta}\mathrm d\pmb x\\
&&&\xlongequal{\epsilon=0}\int_{\mathcal T}\eta\log{p\over p+q}\mathrm d\pmb x\\
\text{because}&&\int_{\mathcal T}\eta{\delta\mathcal L_{maxD}\over\delta p(\pmb x)}\mathrm d\pmb x&={\mathrm d\over\mathrm d\epsilon}\mathcal L_{maxD}(p+\epsilon\eta,q)\\
\text{therefore}&&\nabla_{p_{\mathcal Z_G}}\max_D\mathcal L(p_{\mathcal Z_G},p_{\mathcal X})&=\nabla_p\mathcal L_{maxD}(p, q)={\delta\mathcal L_{maxD}\over\delta p(\pmb x)}=\log{p\over p+q}=\log{p_{\mathcal Z_G}\over p_{\mathcal Z_G}+p_{\mathcal X}}
\end{align*}
\]
生成器生成的分布和损失函数的求导关系已被求出,现在加入约束条件求极值点
\[\begin{align*}
\text{let}&&F&:=\mathcal L_{maxD}(p, q)+a\left(\int_{\mathcal T}p\mathrm d\pmb x-1\right)\\
&&{\delta F\over\delta p}&=\log{p\over p+q}+a\\
&&{\partial F\over\partial a}&=\int_{\mathcal T}p\mathrm d\pmb x-1=0\\
\text{let}&&{\delta F\over\delta p}&=0\\
\text{then}&&p&={q\over e^a-1}\\
\text{so}&&{\partial F\over\partial a}&=\int_{\mathcal T}{q\over e^a-1}\mathrm d\pmb x-1={1\over e^a-1}-1=0\\
&&a&=\log2\\
&&p&={q\over e^{\log2}-1}=q
\end{align*}
\]
因此极值点为 \(p=q\) 即 \(p_{\mathcal Z_G}=p_{\mathcal X}\),也恰好为最小值点。
因此对于 \(p_{\mathcal Z_G}\),这是可以用梯度下降法求得最小值点的求导,在这个最小值点,实际上就有 \(p_{\mathcal Z_G}=p_{\mathcal X}\)。
那么在梯度下降的过程中约束是否会被破坏呢?我们知道 \(p_{\mathcal Z_G}\) 的改变实际上是通过改变 \(G(\pmb z;\theta_G)\) 中的 \(\theta_G\) 来实现的。如果 \(\pmb z\sim\mathcal Z\),那么 \(G(\pmb z;\theta_G)\sim\mathcal Z_G\),因此如果 \(p_{\mathcal Z}(\pmb z)\) 服从约束 \(p\in[0,1]\wedge\int p=1\),那么 \(p_{\mathcal Z_G}(\pmb z)\) 就服从约束。
参考公式
KL 散度
\[\begin{align*}
D_{KL}(p\parallel q)&=\sum_{x\in\mathcal X}p(x)\log{p(x)\over q(x)}=\mathbb E_p\log{p(x)\over q(x)}
\end{align*}
\]
如果存在某个 \(x\) 使得 \(p(x)\ne0\wedge q(x)=0\),则 \(\log{p(x)\over q(x)}=\infty\),说明此时的 KL 散度无穷大,但实际上这两个分布的差别不一定有这么大。可以选择一种更平滑的 KL 散度公式:将一个极小量(噪声) \(\epsilon\) 添加到分布中,使得原来 \(q(x)=0\) 的量变为 \(q(x)=\epsilon\)。
JS 散度
\[\begin{align*}
m&=\frac12(p+q)\\
D_{JS}(p\parallel q)&=\frac12D_{KL}(p\parallel m)+\frac12D_{KL}(q\parallel m)\\
&=\frac12\mathbb E_p\log{p(x)\over p(x)+q(x)}+\frac12\mathbb E_q\log{q(x)\over p(x)+q(x)}+\log2\\
\end{align*}
\]
同样,如果 \(p\) 与 \(q\) 的分布完全没有重合时,\(D_{JS}(p\parallel q)\) 为常数。\(D_{JS}(p\parallel q)\ge0\) 且仅当 \(p,q\) 完全相同时取等号。
参考论文
- Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., & Bengio, Y. (2014, June 10). Generative Adversarial Networks. arXiv.org