1.Maximum Likelihood Estimation= Minimize KL Divergence
使每个真实抽样的livelihood最大,等价于乘积最大。
加上log转化为累加问题,再转化为期望。
arg max,加上最后一项不影响求解。= 𝑎𝑟𝑔 min𝜃𝐾𝐿( 𝑃𝑑𝑎𝑡𝑎||𝑃G)
2. Discriminator
我们用神经网络(Discriminator)求解min Div。
其目标式:
求解该目标式
求导
转换为JS散度
可得,arg maxV(G,D)相当于求解JS散度值(等效于KL Div)
3.compute the KL divergence
欲求KL Div最小值,G可求JS Div ,两者可视为等效。因此我们可以将其用于目标式中。
训练时fix一个,update另一个。G求最小值时,D已训练完毕,maxV(G,D)=L(G)。通过gradien decent即可求解。
4.实操算法
prior 什么分布都行。
D训练k次,(尽可能多),找到全局最大解,否则容易陷入局部最优。实操中,达不到收敛。所以,无法计算expectation,只能通过样本进行估计。
而G训练一次,是为了防止训多了JS距离偏差过大。
5.问题及改进
1.JS距离偏差问题
对D,最大化V=求解JS Div;但对G,最小化V则不是。
可通过限制训练次数解决。
2.训练速度问题
D(x)初始值应在0左右,而此时𝑙𝑜𝑔 1 − 𝐷 (x)变化平缓,阻碍D(x)快速更新。
把𝑙𝑜𝑔 1 − 𝐷 (x)换为𝑙𝑜𝑔 D(x)。
实际GAN学到的只是近似分布。