#AdaGAN
本文为阅读论文AdaGAN: Boosting Generative Models的理解与心得,旨在总结阐述该论文的核心思想与算法。
论文原址
文章目录
##符号说明
在本文中符号说明如下:
Notations | Meaning |
---|---|
P d P_d Pd | real data distribution |
P m o d e l T P_{model}^T PmodelT | mixture model distribution of T T T components |
P g P_g Pg | the current generative mixture model before adding new component |
P Z P_Z PZ | noise distribution |
Q Q Q | new component |
X \mathcal{X} X | data space |
Z \mathcal{Z} Z | latent space |
G G G | generative function |
D M D_M DM | mixture discriminator |
D f D_f Df | f f f-divergences |
S N S_N SN | training sample |
##算法流程
AdaGAN算法流程如下
现在我们讨论的目标就是:
- 证明这件事在数学上work;
- 找到合适的 C h o o s e M i x t u r e W e i g h t ChooseMixtureWeight ChooseMixtureWeight和 U p d a t e T r a i n g W e i g h t s UpdateTraingWeights UpdateTraingWeights函数。
为了更直观地理解算法,而非论文,我们从后往前考虑该篇论文,即先看算法实现,再看数学证明。
##算法实现
该论文提出的 C h o o s e M i x t u r e W e i g h t ChooseMixtureWeight ChooseMixtureWeight和 U p d a t e T r a i n g W e i g h t s UpdateTraingWeights UpdateTraingWeights函数如下:
###ChooseMixtureWeight
根据GAN中使用的Jensen-Shannon divergence我们知道, d P g / d P d dP_g/dP_d dPg/dPd可以由一个corresponding function h h h与 D M D_M DM的值产生联系,即,
d P g d P d ( x ) = h ( D M ( x ) ) \frac{dP_g}{dP_d}(x)=h(D_M(x)) dPddPg(x)=h(DM(x))
其中 h ( z ) = 1 − z z h(z)=\frac{1-z}{z} h(z)=z1−z。
在训练中,我们对于 S N = ( X 1 , X 2 , . . . , X N ) S_N=(X_1,X_2,...,X_N) SN=(X1,X2,...,XN)中的每一个训练样本 X i X_i Xi的权重 w i w_i wi做更新,算法如下:
w i = 1 β N ( λ ∗ − ( 1 − β ) h ( d i ) ) + w_i=\frac{1}{\beta N}(\lambda^*-(1-\beta)h(d_i))_+ wi=βN1(λ∗−(1−β)h(di))+
其中 d i = D M ( X i ) d_i=D_M(X_i) di=DM(Xi