# 凸共轭和GAN有什么关系?

已知ff共轭的共轭是ff:

f(t)=maxxdom(f){xtf(x)}f^{*}(t)=\max _{x \in dom(f)}\{x t-f(x)\}

f(x)=maxtdom(f){xtf(x)}f(x) = \max _{t \in dom(f^*)}\{x t-f^*(x)\}

又知道F-Divergence的定义是:

Df(PQ)=xq(x)f(p(x)q(x))dxD_{f}(P \| Q)=\int_{x} q(x) f\left(\frac{p(x)}{q(x)}\right) d x

p(x)q(x)\frac{p(x)}{q(x)}作为一个整体,带入到第二个式子,可以得到:

Df(PQ)=xq(x)f(p(x)q(x))dxD_{f}(P \| Q)=\int_{x} q(x) f\left(\frac{p(x)}{q(x)}\right) d x

=xq(x)(maxtdom(f){p(x)q(x)tf(t)})dx= \int_{x} q(x) \left(\max_{t \in dom(f^*)}\{ \frac{p(x)}{q(x)} t-f^*(t) \} \right) d x

思考

要解这个max\max的问题, 我们就要穷举所有的xx, 然后找到p(x)q(x)tf(t)\frac{p(x)}{q(x)} t-f^*(t)对应的上确界(?), 但是我们现在不去解这个max\max的问题。我们学习一个D(x)D(x), 这个神经网络D的输入是xx, 输出是tt。 由于神经网络D 的拟合能力是有限的,因此:

Df(PQ)xq(x)(p(x)q(x)D(x)f(D(x)))dxD_{f}(P \| Q) \geq \int_{x} q(x) \left( \frac{p(x)}{q(x)}D(x) - f^*(D(x)) \right) dx

=xp(x)D(x)q(x)f(D(x))dx= \int_{x} p(x)D(x) - q(x)f^*(D(x)) dx

为什么

p(x)q(x)D(x)f(D(x))\frac{p(x)}{q(x)}D(x) - f^*(D(x))

maxtdom(f){p(x)q(x)tf(t)}\max_{t \in dom(f^*)}\{ \frac{p(x)}{q(x)} t-f^*(t) \}

的一个Lower Bound?

巧妙的转换

当神经网络通过学习变得足够好后, D(x)tD(x) \approx t, 此时 xp(x)D(x)q(x)f(D(x))Df(PQ)\int_{x} p(x)D(x) - q(x)f^*(D(x)) \approx D_{f}(P \| Q)

于是:

Df(PQ)maxD{xp(x)D(x)dxxq(x)f(D(x))dx}D_{f}(P \| Q) \approx \max _{D} \left\{\int_{x} p(x) D(x) d x-\int_{x} q(x) f^{*}(D(x)) dx \right\}

=maxD{ExP[D(x)]ExQ[f(D(x))]}=\max _{D}\left\{\mathbb{E}_{x \sim P}[D(x)]-\mathbb{E}_{x \sim Q}\left[f^{*}(D(x))\right]\right\}

有没有很熟悉的感觉, 我们把PP换成PdataP_{data}, 将QQ换成PGP_{G}, 就得到了:

Df(PdataPG)maxD{ExPdata[D(x)]ExPG[f(D(x))]}D_{f}(P_{data} \| P_{G}) \approx \max _{D}\left\{\mathbb{E}_{x \sim P_{data}}[D(x)]-\mathbb{E}_{x \sim P_{G}}\left[f^{*}(D(x))\right]\right\}

# 和GAN的关系

GAN的最终目的:

G=argminGDf(PdataPG)G^{*}=\arg \min _{G} D_{f}\left(P_{\text {data}} \| P_{G}\right)

=argminGmaxD{ExPdata[D(x)]ExPG[f(D(x))]}=\arg \min _{G} \max _{D}\left\{\mathbb{E}_{x \sim P_{\text {data}}}[D(x)]-\mathbb{E}_{x \sim P_{G}}\left[f^{*}(D(x))\right]\right\}

=argminGmaxDV(G,D)=\arg \min _{G} \max _{D} V(G, D)

回想一下在我们在最初学习GAN的时候是直接定义:

V(G,D)=ExPdata[logD(x)]+ExPG[log(1D(x))]V(G, D) = \mathbb{E}_{x \sim P_{\text {data}}}[\log D(x)]+\mathbb{E}_{x \sim P_{G}}[\log (1-D(x))]

可以证明 (opens new window)使用这个上面这个VV,我们minimize的其实是JS Divergence.

也就是说GAN里面的VV是有一个通用形式的:

V(G,D)=ExPdata[D(x)]ExPG[f(D(x))]V(G, D) = \mathbb{E}_{x \sim P_{\text {data}}}[D(x)]-\mathbb{E}_{x \sim P_{G}}\left[f^{*}(D(x))\right]

也就是说GAN里面要Minimize的Divergence是有一个通用的形式的:

Df(PdataPG)D_{f}\left(P_{\text {data }} \| P_{G}\right)

ff取不同的值可以量不同的Deivergence.

上式里面用到的有不是凸函数ff本身,而是ff的凸共轭ff^*, 所以就想明白了为什么GAN和凸共轭有关系。

参考:

台大李宏毅老师GAN课程:GAN Lecture 5 (2018): General Framework (opens new window)

上次更新: 1/30/2020, 12:32:41 PM