假设要生成的x是高维空间中的一个点
在高维的Image Space中,只有一小部分点example出来是合理的。
即:要产生的x符合一个固定的distribution。目标是找出这个distribution。

定义目标distribution为Pdata(x)P_{\text{data}}(x)

1. 在GAN之前,使用最大似然估计来找Pdata(x)P_{\text{data}}(x)Pdata​(x)

  1. 定义一个distribution PG(X;θ)P_G(X;\theta)
  2. 调整θ\theta,使PGP_GPdata(x)P_{\text{data}}(x)越接近越好。
  3. 2.1 从Pdata(x)P_{\text{data}}(x)中sample出m个点xix_i
  4. 2.2 计算PG(xi;θ)P_G(x_i; \theta)
  5. 2.3 定义最大似然估计公式L=i=1mPG(xi;θ)L = \prod_{i=1}^mP_G(x_i;\theta)
  6. 2.4 找出最大化L的参数θ\theta^*

2. 最大似然估计 = 最小KL散度

θ=argminθi=1mPG(xi;θ)=argminθKL(PdataPG) \begin{aligned} \theta^* &=& \arg\min_{\theta} \prod_{i=1}^mP_G(x_i;\theta) \\ &=& \arg\min_{\theta} KL(P_{\text{data}}||P_G) \end{aligned}

3. 后面的我也不知道在讲什么,只是把讲的内容记下来

G=argminGDiv(PG,Pdata) \begin{aligned} G* = \arg\min_G \text{Div}(P_G, P{\text{data}}) \end{aligned}

公式中的PGP_G未知,所以无法直接比较这两个分布的KL散度

PGP_GPdataP{\text{data}}各sample出一些data
V(G,D)=EXPdata[logD(x)]+EXPG[log(1D(x))] V(G, D) = E_{X\sim P{\text{data}}}[\log D(x)] + E_{X\sim P{\text{G}}}[\log (1-D(x))]

在计算公式过程中:
D(x)可以是任意function,通常是由NN训练得到。
分布PGP_G是固定不变的。
解以上公式得:
D=argmaxDV(D,G)=argmaxDPdata(x)logD(x)+PG(x)log(1D(x))=argmaxDalogD+blog(1D) \begin{aligned} D^* &=& \arg\max_D V(D, G) \\ &=& \arg\max_D P{\text{data}}(x) \log D(x) + P_G(x) \log(1-D(x)) \\ &=& \arg\max_D a \log D + b \log (1-D) \end{aligned}

说明:上面公式中,为了简化计算,人为定义出:
a=Pdata(x)b=PG(x)D=D(x)f(D)=alogD+blog(1D) \begin{aligned} a &=& P{\text{data}}(x) \\ b &=& P_G(x) \\ D &=& D(x) \\ f(D) &=& a \log D + b \log (1-D) \end{aligned}

直接寻找f(D)偏导为0的点:
df(D)dD=0\frac{df(D)}{dD} = 0,得:D=aa+bD^* = \frac{a}{a+b}
DD^*代入V(G,D)得:
V(G,D)=2log2+KL(PdataPdata+PG2)+KL(PGPdata+PG2)=2log2+2JSD(PdataPG) \begin{aligned} V(G, D^*) &=& -2\log 2 &+& KL(P{\text{data}}||\frac{P{\text{data}}+P_G}{2}) + KL(P{\text{G}}||\frac{P{\text{data}}+P_G}{2}) \\ &=& -2\log 2 &+& 2JSD(P{\text{data}}||P_G) \end{aligned}

公式中,JSD代表Jesen-Shannon Divergence

上面提到公式G*的计算: G=argminGDiv(PG,Pdata) \begin{aligned} G^* = \arg\min_G \text{Div}(P_G, P{\text{data}}) \end{aligned}

G*无法直接计算,根据上面的推导得到:
G=argminGmaxDV(G,D)D=argmaxDV(G,D) \begin{aligned} G^* = \arg\min_G\max_D V(G, D) \\ D^* = \arg\max_D V(G, D) \end{aligned}

怎么理解上面这两个公式:

图中红点代表能使V(D, G)最大的DD^*
G3是这三个中最优的G*。

训练步骤:

  1. 初始化G和D
  2. 迭代
  3. 2.1 固定住G,更新D
  4. 2.2 固定住D,更新G

由于计算G=argminGmaxDV(G,D)G^* = \arg\min_G\max_D V(G, D)这一步要求固定住D,因此定义loss function为:
L(G)=maxD(V,G) L(G) = \max_D(V, G)

问:带max的分段函数怎么求导?
答:以下图为例:

df(x)dx=dfi(x)dx \frac{df(x)}{dx} = \frac{df_i(x)}{dx}

if fi(x)f_i(x) is the max one。

求G*的迭代过程没看懂,直接上图:

后面就放弃了

results matching ""

    No results matching ""