通过投影判别器构造条件生成对抗网络.

条件生成对抗网络中,有许多不同的判别器构造形式:

条件生成网络的目标函数为:

\[\begin{aligned} \mathop{ \min}_{G} \mathop{\max}_{D} \Bbb{E}_{x,y \text{~} P_{data}(x,y)}[\log D(x,y)] + \Bbb{E}_{x,y \text{~} P_{G}(x,y)}[\log(1-D(x,y))] \end{aligned}\]

判别器$D$的最优值$D^{*}$可以通过计算被积表达式的极值\(\frac{\partial L(G,D)}{\partial D} = 0\)得到:

\[\begin{aligned} D^*(x,y) &= \frac{P_{data}(x,y)}{P_{data}(x,y)+P_{G}(x,y)} \end{aligned}\]

通常的判别器是二分类器,区分数据是真实数据还是生成数据,因此输出结果代表数据真实程度的概率,通过应用Sigmoid函数实现:$D(x,y) = 1/(1+\exp(-f(x,y)))$,其中$f(x,y)$为网络最后一层的输出特征。则有如下等式:

\[\frac{1}{1+e^{-f(x,y)}} = \frac{P_{data}(x,y)}{P_{data}(x,y)+P_{G}(x,y)}\]

整理得:

\[\begin{aligned} f(x,y) &= \log \frac{P_{data}(x,y)}{P_{G}(x,y)} \\ &= \log \frac{P_{data}(y|x)P_{data}(x)}{P_{G}(y|x)P_{G}(x)} \\ &= \log \frac{P_{data}(y|x)}{P_{G}(y|x)} + \log \frac{P_{data}(x)}{P_{G}(x)} \end{aligned}\]

上式第一项$\log \frac{P_{data}(y|x)}{P_{G}(y|x)}$对输入数据的类别进行了判断。分子为当输入数据$x$是真实数据时属于类别$y$的概率;分母为当输入数据$x$是生成数据时属于类别$y$的概率。两者的比值越高,表明$x$是真实数据时,属于类别$y$的概率越大。

上式第二项$\log \frac{P_{data}(x)}{P_{G}(x)}$对输入数据的真实性进行了判断。分子为输入数据$x$是真实数据的概率;分母为输入数据$x$是生成数据的概率。两者的比值越高,表明$x$是真实数据的概率越大。

下面进一步表示输出类别的条件概率。对于一个$C$分类器,通常用softmax函数计算属于各个类别的概率:

\[\begin{aligned} P(y=c|x) &= \frac{\exp(v_c^T\phi(x))}{\sum_{c=1}^C\exp(v_c^T\phi(x))} = \frac{\exp(v_c^T\phi(x))}{Z(\phi(x))} \end{aligned}\]

其中$\phi(x)$表示网络倒数第二层的特征,$v$是网络最后一层的权重参数,$Z$是配分函数。则第一项$\log \frac{P_{data}(y|x)}{P_{G}(y|x)}$进一步表示为:

\[\begin{aligned} \log \frac{P_{data}(y|x)}{P_{G}(y|x)} &= \log P_{data}(y|x) - \log P_{G}(y|x) \\ &= \log \frac{\exp({v_c^{P_{data}}}^T\phi(x))}{Z^{P_{data}}(\phi(x))}-\log \frac{\exp({v_c^{P_{G}}}^T\phi(x))}{Z^{P_{G}}(\phi(x))} \\ &= (v_c^{P_{data}}-v_c^{P_{G}})^T\phi(x) - (\log Z^{P_{data}}(\phi(x)) - \log Z^{P_{G}}(\phi(x))) \end{aligned}\]

将上式代入判别器特征$f(x,y)$的表达式:

\[\begin{aligned} f(x,y) &= \log \frac{P_{data}(y|x)}{P_{G}(y|x)} + \log \frac{P_{data}(x)}{P_{G}(x)} \\ &= (v_c^{P_{data}}-v_c^{P_{G}})^T\phi(x) - (\log Z^{P_{data}}(\phi(x)) - \log Z^{P_{G}}(\phi(x))) + \log \frac{P_{data}(x)}{P_{G}(x)} \end{aligned}\]

令:

\[\begin{aligned} v_c & = v_c^{P_{data}}-v_c^{P_{G}} \\ \psi(\phi(x))&= - (\log Z^{P_{data}}(\phi(x)) - \log Z^{P_{G}}(\phi(x))) + \log \frac{P_{data}(x)}{P_{G}(x)} \end{aligned}\]

可得最终判别器特征$f(x,y)$的表达式:

\[f(x,y=c) = v_c^T\phi(x) + \psi(\phi(x))\]

其中$v_c$可以由类别$c$的嵌入向量表示。根据上述公式可设计本文所提的投影判别器。