本文为阅读论文AdaGAN: Boosting Generative Models的理解与心得,旨在总结阐述该论文的核心思想与算法。
论文原址
在本文中符号说明如下:
Notations | Meaning |
---|---|
Pd P d | real data distribution |
PTmodel P m o d e l T | mixture model distribution of T T components |
Pg P g | the current generative mixture model before adding new component |
PZ P Z | noise distribution |
Q Q | new component |
X X | data space |
Z Z | latent space |
G G | generative function |
DM D M | mixture discriminator |
Df D f | f f -divergences |
SN S N | training sample |
AdaGAN算法流程如下
现在我们讨论的目标就是:
1. 证明这件事在数学上work;
2. 找到合适的 ChooseMixtureWeight C h o o s e M i x t u r e W e i g h t 和 UpdateTraingWeights U p d a t e T r a i n g W e i g h t s 函数。
为了更直观地理解算法,而非论文,我们从后往前考虑该篇论文,即先看算法实现,再看数学证明。
该论文提出的 ChooseMixtureWeight C h o o s e M i x t u r e W e i g h t 和 UpdateTraingWeights U p d a t e T r a i n g W e i g h t s 函数如下:
根据GAN中使用的Jensen-Shannon divergence我们知道, dPg/dPd d P g / d P d 可以由一个corresponding function h h 与 DM D M 的值产生联系,即,
βt=1/t β t = 1 / t , t t 为迭代次数。
就数学证明而言,我们首先要提出需要证明的结果,再推导证明过程。
从算法流程中我们可以看出AdaGAN的核心思想是在每一次迭代中根据训练样本与混合权值训练一个弱生成器“weak” component generator Gct=GAN(SN,Wt) G t c = G A N ( S N , W t ) ,再将这个弱生成器以加权的方式与上一次迭代的生成器混合得到本次迭代的生成器 Gt=(1−βt)Gt−1+βtGct G t = ( 1 − β t ) G t − 1 + β t G t c 。
那么我们需要证明的目标就是这个迭代递增的生成器所生成的概率分布是向数据集的概率分布收敛的,这个收敛的过程可以由 Pt+1model P m o d e l t + 1 与 Pd P d 的散度描述。用数学语言描述就是将GAN的
为了方便理解,此处将论文中未说明的 Pd P d 与 Q Q 的关系做简要说明。 Pg:=Ptmodel:=∑ti=1αiPi P g := P m o d e l t := ∑ i = 1 t α i P i ,其有 t t components。
Pt+1model:=(1−β)Ptmodel+βQ=∑ti=1(1−β)αiPi+βQ P m o d e l t + 1 := ( 1 − β ) P m o d e l t + β Q = ∑ i = 1 t ( 1 − β ) α i P i + β Q ,即 Q Q 为第 t+1 t + 1 component,且权值为 β β , Pi+1=Q,αi+1=β P i + 1 = Q , α i + 1 = β 。
那么,如果 Pg P g 逐渐向 Pd P d 收敛,该算法对 Q Q 的需要程度将会减小,所以 β β 应是一个随迭代次数递减的数值。
但是我们知道,每一次都能得到最优解 Q Q 是不可能的,所以对于这个收敛问题,我们可以弱化为一个逐步收敛问题:
通过算法流程我们可以发现,每次迭代, wi w i (训练权重)与 DM(Xi) D M ( X i ) (分辨效果)成负相关。特别地,当 DM(Xi)=1 D M ( X i ) = 1 (认为生成的为True)时 wi=0 w i = 0 ,当 DM(Xi)=0 D M ( X i ) = 0 (认为生成的为False)时 wi→∞ w i → ∞ 。即迭代增加 Q Q 的目的是改变训练权重 Wt W t ,使第 t+1 t + 1 次训练着重于之前迭代中效果不好的数据集。
首先我们讨论 f−divergence f − d i v e r g e n c e
Divergence | Corresponding f(t) f ( t ) |
---|---|
KL-divergence | tlogt t log t |
Jensen-Shannon divergence | −(x+1)logx+12+xlogx − ( x + 1 ) log x + 1 2 + x log x |
reverse KL-divergence | −logt − log t |
Hellinger distance | (t√−1)2,2(1−t√) ( t − 1 ) 2 , 2 ( 1 − t ) |
Total variation distance | 12|t−1| 1 2 | t − 1 | |
X X -divergence | (t−1)2,t2−1 ( t − 1 ) 2 , t 2 − 1 |
α α -divergebce | f(x)=⎧⎩⎨⎪⎪41−α2(1−t(1+α)/2),α≠±1tlnt,α=1−lnt,α=−1 f ( x ) = { 4 1 − α 2 ( 1 − t ( 1 + α ) / 2 ) , α ≠ ± 1 t ln t , α = 1 − ln t , α = − 1 |
AdaGAN的后续推导需要用到 f−divergence f − d i v e r g e n c e 的三个性质:
更多关于 KLdivergence K L d i v e r g e n c e 的知识见Kullback-Leibler Divergence Explained
GAN 原式:
将复杂数据分布描述为 T T 个模型,则有: