*GAN系列知识 GAN对抗网络初识 GAN-Basic-Theory 手动实现GAN网络生成动漫头像 GAN-4-f-GAN推导

为什么要引入f-GAN?

之前谈到GAN基础理论,可以知道GAN的生成器其实就是在最小化 P_dataP_G 的 JS散度。而事实上不一定要用JS-Divergence 来测量,KL-Divergence、JS-Divergence等都是属于f-Divergence,故f-GAN其实就是想要换掉GAN中的分布之间的距离测度函数。

f-Divergence

其中,f是convex凸函数, f(1) = 0,故:

其中>=用到了詹森不等式.

  • 若p(x),q(x)相等,则值为0;
  • 若其不相等,则Df>=0 因此 Df可以用来测量分布之间的距离
1584260831145

此时f(x)取不同的表达式,得到不同的散度。

共轭函数

1584260962776

每一个凸函数f都有一个共轭函数f*

对于函数f(x),

  • 首先t取t1,x取遍定义域内所有的值x1…xn,找出最大的
  • 对于每一个t都用相同的方法计算,就可以知道最终的f*

这样计算太麻烦,于是:

1584261338486

如上图,画出所有的函数图像,取得图像上界即可。

1584280774347

时,求的其共轭函数为:

Connection with GAN

1584281621663

这块的逻辑是这样:

  • 首先 f(x) 于 f* 互为共轭函数,故可以有第一行的公式,然后把它代入D中,得到上图中得第三行的公式,目前问题变为:找一个t,使得这个积分项最大;
  • 直接找t不好找,所以训练一个判别器D,输入是x,输出是t,D(x) = t,便得到上图下部分得公式,所以问题又转化为寻找一个D,可以最大两个积分项做减法得值
  • 简单来说,就是把寻找t变为寻找D(x)

1584282526678

这里就很顺理成章了,P_data 和 P_G 之间的f-divergence就可以求出来了;而D(x)、f()取不同的表达式 ,得到的就是不同的f-divergence。*

对于生成器来说,就是最小化真实数据和生成数据之间的f-divergence

1584284110315

其中,Generator f(u) 就是上面公式中的D(x)表达式;f*(t)就是上面公式的 f*.

以上就是f-GAN得数学推导过程。