机器学习笔记之生成对抗网络(二)全局最优解的求解逻辑

news2025/1/14 0:51:04

机器学习笔记之生成对抗网络——全局最优解的求解逻辑

  • 引言
    • 回顾:生成对抗网络的判别过程
    • 关于生成对抗网络的一些特性
    • 最优解的求解过程

引言

上一节介绍了生成对抗网络,并介绍了其判别过程,本节将介绍关于模型参数的求解逻辑

回顾:生成对抗网络的判别过程

生成对抗网络的计算图结构表示如下:
生成对抗网络——计算图结构
其中 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene) D ( x ; θ d ) \mathcal D(x;\theta_d) D(x;θd)表示不同的前馈神经网络结构:

  • G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)表示生成模型的计算图结构,它的主要功能是生成样本 x x x
    该样本区别于 P d a t a \mathcal P_{data} Pdata中的真实样本,它是从模型 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)中产生得到,该样本实际上也是一种幻想粒子(Fantasy Particle)
    x = G ( Z ; θ g e n e ) x = \mathcal G(\mathcal Z;\theta_{gene}) x=G(Z;θgene)
    其中 Z \mathcal Z Z表示生成模型的输入部分;一般情况下,并不对输入样本 Z \mathcal Z Z的分布进行过多约束,通常以简单的高斯分布作为输入特征:
    Z ∼ P ( Z ) = N ( μ i n i t , Σ i n i t ) \mathcal Z \sim \mathcal P(\mathcal Z) = \mathcal N(\mu_{init},\Sigma_{init}) ZP(Z)=N(μinit,Σinit)
    θ g e n e \theta_{gene} θgene表示生成模型的参数信息;
  • D ( x ; θ d ) \mathcal D(x;\theta_d) D(x;θd)表示判别模型的计算图结构,它的主要功能是判别样本 x x x服从 P d a t a \mathcal P_{data} Pdata分布的概率
    • 这里的样本 x x x可以是从 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)中产生得到,也可以是从 P d a t a \mathcal P_{data} Pdata分布对应的数据集合中得到。
    • 表格中的 Y \mathcal Y Y表示给定样本 x x x的条件下,是否服从 P d a t a \mathcal P_{data} Pdata的后验概率信息。这明显是一个‘软分类’。
Y ∣ x \mathcal Y \mid x Yx 1 1 1 0 0 0
P ( Y ∣ x ) \mathcal P(\mathcal Y \mid x) P(Yx) D ( x ; θ d ) \mathcal D(x;\theta_d) D(x;θd) 1 − D ( x ; θ d ) 1 - \mathcal D(x;\theta_d) 1D(x;θd)

关于生成对抗网络的判别过程主要包含两个部分:
(修改于2023/2/1)需要再次说明 max ⁡ D \mathop{\max}\limits_{\mathcal D} Dmax min ⁡ G \mathop{\min}\limits_{\mathcal G} Gmin中的 D , G \mathcal D,\mathcal G D,G就是 D ( x ; θ d ) , G ( Z ; θ g e n e ) \mathcal D(x;\theta_d),\mathcal G(\mathcal Z;\theta_{gene}) D(x;θd),G(Z;θgene)本身,而不是单纯的模型参数 θ d , θ g e n e \theta_{d},\theta_{gene} θd,θgene.在上一节介绍过, D ( x ; θ d ) , G ( Z ; θ g e n e ) \mathcal D(x;\theta_d),\mathcal G(\mathcal Z;\theta_{gene}) D(x;θd),G(Z;θgene)是神经网络结构,从通用逼近定理的角度,可以将其视作两个复杂的函数;但从功能角度观察, D ( x ; θ d ) , G ( Z ; θ g e n e ) \mathcal D(x;\theta_d),\mathcal G(\mathcal Z;\theta_{gene}) D(x;θd),G(Z;θgene)就是两个概率分布,或者是概率模型。其中 x = G ( Z ; θ g e n e ) x = \mathcal G(\mathcal Z;\theta_{gene}) x=G(Z;θgene)可看作生成样本 x x x的概率分布;而 D ( x ; θ d ) \mathcal D(x;\theta_d) D(x;θd)可看作是判别 x x x性质的概率分布。

  • 判别模型的判别过程:
    max ⁡ D { E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E Z ∼ P ( Z ) [ log ⁡ { 1 − D [ G ( Z ; θ g e n e ) ; θ d ] } ] } \mathop{\max}\limits_{\mathcal D} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{\mathcal Z \sim \mathcal P(\mathcal Z)} \left[\log \{1 - \mathcal D \left[\mathcal G(\mathcal Z;\theta_{gene});\theta_d\right]\}\right]\right\} Dmax{ExPdata[logD(x;θd)]+EZP(Z)[log{1D[G(Z;θgene);θd]}]}
  • 生成模型的判别过程:
    min ⁡ G { E Z ∼ P ( Z ) [ log ⁡ { 1 − D [ G ( Z ; θ g e n e ) ; θ d ] } ] } \mathop{\min}\limits_{\mathcal G} \left\{\mathbb E_{\mathcal Z \sim \mathcal P(\mathcal Z)} \left[\log \{1 - \mathcal D[\mathcal G(\mathcal Z;\theta_{gene});\theta_d]\}\right]\right\} Gmin{EZP(Z)[log{1D[G(Z;θgene);θd]}]}

最终的目标函数可表示为:
(修改于2023/2/1)基于上面的描述,可以理解为:通过选择合适的模型参数 θ d , θ g e n e \theta_{d},\theta_{gene} θd,θgene,从而得到合适的概率分布 D , G \mathcal D,\mathcal G D,G,最终使得下面式子成立。
min ⁡ G max ⁡ D { E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E Z ∼ P ( Z ) [ log ⁡ { 1 − D [ G ( Z ; θ g e n e ) ; θ d ] } ] } \mathop{\min}\limits_{\mathcal G} \mathop{\max}\limits_{\mathcal D} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{\mathcal Z \sim \mathcal P(\mathcal Z)} \left[ \log \left\{1 -\mathcal D [\mathcal G(\mathcal Z;\theta_{gene}) ;\theta_d]\right\}\right]\right\} GminDmax{ExPdata[logD(x;θd)]+EZP(Z)[log{1D[G(Z;θgene);θd]}]}

关于生成对抗网络的一些特性

生成对抗网络的终极目标是让生成模型 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)生成出的样本所对应的概率分布 P g e n e \mathcal P_{gene} Pgene无限接近于真实分布 P d a t a \mathcal P_{data} Pdata
当然,这个目标不仅仅是生成对抗网络的目标,而是所有生成模型的共同目标。

很明显,它是一个概率生成模型。但该模型的构建思想与其他生成模型之间存在一些区别:

  • 常规的生成模型,直接对 生成模型自身进行建模
    假设给定一组包含 N N N个样本的样本集合 X = { x ( i ) } i = 1 N \mathcal X = \{x^{(i)}\}_{i=1}^N X={x(i)}i=1N,根据样本性质以及任务描述,我们会选择一个合适的模型结构对其进行建模。而模型参数的学习过程中,通常使用极大似然估计作为标准学习模型参数:
    θ ^ g e n e = arg ⁡ max ⁡ θ g e n e [ log ⁡ ∏ i = 1 N P g e n e ( x ( i ) ; θ g e n e ) ] \hat {\theta}_{gene} = \mathop{\arg\max}\limits_{\theta_{gene}} \left[\log \prod_{i=1}^N \mathcal P_{gene}(x^{(i)};\theta_{gene})\right] θ^gene=θgeneargmax[logi=1NPgene(x(i);θgene)]
    在面对不同约束下的模型结构,可能会采用不同的学习方法。如 EM \text{EM} EM算法变分推断蒙特卡洛方法等等。而极大似然估计的底层逻辑就是 P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene)无限接近于真实分布 P d a t a ( X ) \mathcal P_{data}(\mathcal X) Pdata(X)

    • 这里仅列出几个步骤,详细推导过程见配分函数——对比散度
    • 蒙特卡洛方法的逆运算,将积分运算还原为期望形式。其中 ∑ i = 1 N \sum_{i=1}^N i=1N来自于真实分布样本,因此期望中的分布是 x ( i ) ∼ P d a t a x^{(i)} \sim \mathcal P_{data} x(i)Pdata.
    • KL [ P d a t a ( X ) ∣ ∣ P g e n e ( X ; θ g e n e ) ] \text{KL}\left[\mathcal P_{data}(\mathcal X) || \mathcal P_{gene}(\mathcal X;\theta_{gene})\right] KL[Pdata(X)∣∣Pgene(X;θgene)]越小,意味着 P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene) P d a t a ( X ) \mathcal P_{data}(\mathcal X) Pdata(X)越接近。

    θ ^ g e n e = arg ⁡ max ⁡ θ g e n e [ ∑ i = 1 N log ⁡ P g e n e ( x ( i ) ; θ g e n e ) ] ≈ arg ⁡ max ⁡ θ g e n e { E x ( i ) ∼ P d a t a [ log ⁡ P g e n e ( X ; θ g e n e ) ] } = arg ⁡ max ⁡ θ g e n e ∫ X P d a t a ( X ) log ⁡ P g e n e ( X ; θ g e n e ) d X = arg ⁡ max ⁡ θ g e n e ∫ X P d a t a ( X ) ⋅ log ⁡ [ P g e n e ( X ; θ g e n e ) P d a t a ( X ) ] d X = arg ⁡ min ⁡ θ g e n e { KL [ P d a t a ( X ) ∣ ∣ P g e n e ( X ; θ g e n e ) ] } \begin{aligned} \hat {\theta}_{gene} & = \mathop{\arg\max}\limits_{\theta_{gene}} \left[\sum_{i=1}^N \log \mathcal P_{gene}(x^{(i)};\theta_{gene})\right]\\ & \approx \mathop{\arg\max}\limits_{\theta_{gene}} \left\{\mathbb E_{x^{(i)} \sim \mathcal P_{data}} \left[\log \mathcal P_{gene}(\mathcal X;\theta_{gene})\right]\right\} \\ & = \mathop{\arg\max}\limits_{\theta_{gene}} \int_{\mathcal X} \mathcal P_{data}(\mathcal X) \log \mathcal P_{gene}(\mathcal X;\theta_{gene}) d\mathcal X \\ & = \mathop{\arg\max}\limits_{\theta_{gene}} \int_{\mathcal X} \mathcal P_{data}(\mathcal X) \cdot \log \left[\frac{\mathcal P_{gene}(\mathcal X;\theta_{gene})}{\mathcal P_{data}(\mathcal X)}\right] d\mathcal X \\ & = \mathop{\arg\min}\limits_{\theta_{gene}} \{\text{KL} \left[\mathcal P_{data}(\mathcal X) || \mathcal P_{gene}(\mathcal X;\theta_{gene})\right]\} \end{aligned} θ^gene=θgeneargmax[i=1NlogPgene(x(i);θgene)]θgeneargmax{Ex(i)Pdata[logPgene(X;θgene)]}=θgeneargmaxXPdata(X)logPgene(X;θgene)dX=θgeneargmaxXPdata(X)log[Pdata(X)Pgene(X;θgene)]dX=θgeneargmin{KL[Pdata(X)∣∣Pgene(X;θgene)]}

  • 生成对抗网络同样也是生成模型,但并没有对生成模型 P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene)自身进行建模,而是另构建了一个判别模型 D ( X ; θ d ) \mathcal D(\mathcal X;\theta_d) D(X;θd),通过生成样本与真实样本的对抗学习来优化模型参数。

最优解的求解过程

再次观察目标函数,需要从理论上证明,该优化问题是否存在最优解 θ ^ g e n e \hat {\theta}_{gene} θ^gene,并且该最优解构成的概率分布 P g e n e ( X ; θ ^ g e n e ) \mathcal P_{gene}(\mathcal X;\hat {\theta}_{gene}) Pgene(X;θ^gene)能否使得 P g e n e ( X ; θ ^ g e n e ) ⇒ P d a t a ( X ) \mathcal P_{gene}(\mathcal X;\hat {\theta}_{gene}) \Rightarrow \mathcal P_{data}(\mathcal X) Pgene(X;θ^gene)Pdata(X)
实际上, G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene) P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene)所描述的概率分布是相同的,但因为 G \mathcal G G是神经网络结构,因此这里需要一组服从简单分布的样本 Z \mathcal Z Z作为 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)的初始输入。在下一步的换元操作会对其进行描述。
min ⁡ G max ⁡ D { E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E Z ∼ P ( Z ) [ log ⁡ { 1 − D [ G ( Z ; θ g e n e ) ; θ d ] } ] } \mathop{\min}\limits_{\mathcal G} \mathop{\max}\limits_{\mathcal D} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{\mathcal Z \sim \mathcal P(\mathcal Z)} \left[ \log \left\{1 -\mathcal D [\mathcal G(\mathcal Z;\theta_{gene}) ;\theta_d]\right\}\right]\right\} GminDmax{ExPdata[logD(x;θd)]+EZP(Z)[log{1D[G(Z;θgene);θd]}]}

  • 首先对第二项进行换元:由于 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)最终生成的是样本 x x x,那么将 Z ∼ P ( Z ) \mathcal Z \sim \mathcal P(\mathcal Z) ZP(Z)中采样,再执行 G ( Z ; θ g e n e ) \mathcal G(\mathcal Z;\theta_{gene}) G(Z;θgene)可看作 x ∼ P g e n e x \sim \mathcal P_{gene} xPgene中直接进行采样,并执行 x x x的运算,最终可将上式转化为如下表达形式:
    • 虽然两项中均有 x x x,但来自的分布并不相同。
    • 发现公式中并不含 θ g e n e \theta_{gene} θgene,其原因在于:既然能够写成该形式 x ∼ P g e n e x \sim \mathcal P_{gene} xPgene,这意味着从 P g e n e \mathcal P_{gene} Pgene中采样过程中分布不会发生变化,也就意味着当前状态下 θ g e n e \theta_{gene} θgene被固定住了。
      V ( D , G ) = E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E x ∼ P g e n e { log ⁡ [ 1 − D ( x ; θ d ) ] } \mathcal V(\mathcal D,\mathcal G) = \mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{x\sim \mathcal P_{gene}} \left\{\log [1 - \mathcal D(x;\theta_{d})]\right\} V(D,G)=ExPdata[logD(x;θd)]+ExPgene{log[1D(x;θd)]}
  • 既然 θ g e n e \theta_{gene} θgene已经被固定住,那么目标函数也发生相应的变化:
    θ g e n e \theta_{gene} θgene被暂时放下了。
    max ⁡ D V ( D , G ) = max ⁡ D { E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E x ∼ P g e n e { log ⁡ [ 1 − D ( x ; θ d ) ] } } \begin{aligned} \mathop{\max}\limits_{\mathcal D} \mathcal V(\mathcal D,\mathcal G) = \mathop{\max}\limits_{\mathcal D} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{x\sim \mathcal P_{gene}} \left\{\log [1 - \mathcal D(x;\theta_{d})]\right\}\right\} \end{aligned} DmaxV(D,G)=Dmax{ExPdata[logD(x;θd)]+ExPgene{log[1D(x;θd)]}}
  • 将上式将期望按照积分形式展开:
    • 这里的 X \mathcal X X指的是从不同分布 P d a t a , P g e n e \mathcal P_{data},\mathcal P_{gene} Pdata,Pgene产生的广义上的样本,不同积分号中的 X \mathcal X X来自的分布确实是不同的。
    • 但从运算的角度观察,它们之间的运算是相互分开的。就相当与同一组样本分别执行了两种不同运算。因此这里是可以合并的。这是个人理解。
    • 由于 P g e n e \mathcal P_{gene} Pgene已被固定,因此使用 P g e n e ( X ) \mathcal P_{gene}(\mathcal X) Pgene(X)替代 P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene).

max ⁡ D V ( D , G ) = ∫ X P d a t a ( X ) log ⁡ D ( X ; θ d ) d X + ∫ X P g e n e ( X ) log ⁡ [ 1 − D ( X ; θ d ) ] d X = ∫ X { P d a t a ( X ) log ⁡ D ( X ; θ d ) + P g e n e ( X ) log ⁡ [ 1 − D ( X ; θ d ) ] } d X \begin{aligned} \mathop{\max}\limits_{\mathcal D} \mathcal V(\mathcal D,\mathcal G) & = \int_{\mathcal X} \mathcal P_{data}(\mathcal X) \log \mathcal D(\mathcal X;\theta_d) d\mathcal X + \int_{\mathcal X} \mathcal P_{gene}(\mathcal X) \log [1 - \mathcal D(\mathcal X;\theta_d)] d\mathcal X \\ & = \int_{\mathcal X} \left\{\mathcal P_{data}(\mathcal X) \log \mathcal D(\mathcal X;\theta_d) + \mathcal P_{gene}(\mathcal X) \log [1 - \mathcal D(\mathcal X;\theta_d)]\right\} d\mathcal X \end{aligned} DmaxV(D,G)=XPdata(X)logD(X;θd)dX+XPgene(X)log[1D(X;θd)]dX=X{Pdata(X)logD(X;θd)+Pgene(X)log[1D(X;θd)]}dX

  • 既然是通过调整 D \mathcal D D来获取该式子的最大值,该式子 D \mathcal D D求解偏导
    牛顿-莱布尼兹公式,将积分号与偏导符号调换位置。
    ∂ ∂ D [ V ( D , G ) ] = ∂ ∂ D ∫ X { P d a t a ( X ) log ⁡ D ( X ; θ d ) + P g e n e ( X ) log ⁡ [ 1 − D ( X ; θ d ) ] } d X = ∫ X ∂ ∂ D { P d a t a ( X ) log ⁡ D ( X ; θ d ) + P g e n e ( X ) log ⁡ [ 1 − D ( X ; θ d ) ] } d X = ∫ X [ P d a t a ( X ) 1 D ( X ; θ d ) − P g e n e ( X ) 1 1 − D ( X ; θ d ) ] d X \begin{aligned} \frac{\partial}{\partial \mathcal D} \left[\mathcal V(\mathcal D,\mathcal G)\right] & = \frac{\partial}{\partial \mathcal D} \int_{\mathcal X} \left\{\mathcal P_{data}(\mathcal X) \log \mathcal D(\mathcal X;\theta_d) + \mathcal P_{gene}(\mathcal X) \log [1 - \mathcal D(\mathcal X;\theta_d)]\right\} d\mathcal X \\ & = \int_{\mathcal X} \frac{\partial}{\partial \mathcal D}\left\{\mathcal P_{data}(\mathcal X) \log \mathcal D(\mathcal X;\theta_d) + \mathcal P_{gene}(\mathcal X) \log [1 - \mathcal D(\mathcal X;\theta_d)]\right\} d\mathcal X \\ & = \int_{\mathcal X} \left[\mathcal P_{data}(\mathcal X) \frac{1}{\mathcal D(\mathcal X;\theta_d)} - \mathcal P_{gene}(\mathcal X) \frac{1}{1 - \mathcal D(\mathcal X;\theta_d)} \right]d\mathcal X \end{aligned} D[V(D,G)]=DX{Pdata(X)logD(X;θd)+Pgene(X)log[1D(X;θd)]}dX=XD{Pdata(X)logD(X;θd)+Pgene(X)log[1D(X;θd)]}dX=X[Pdata(X)D(X;θd)1Pgene(X)1D(X;θd)1]dX

  • ∂ ∂ D [ V ( D , G ) ] ≜ 0 \frac{\partial}{\partial \mathcal D} \left[\mathcal V(\mathcal D,\mathcal G)\right] \triangleq 0 D[V(D,G)]0,则有:
    其中 D ^ G ( X ; θ d ) \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) D^G(X;θd)表示在模型结构 G \mathcal G G或者概率分布 P g e n e ( X ; θ g e n e ) \mathcal P_{gene}(\mathcal X;\theta_{gene}) Pgene(X;θgene)固定的条件下,通过调整参数 θ d \theta_d θd,得到最优的判别模型分布。
    P d a t a ( X ) 1 D ( X ; θ d ) − P g e n e ( X ) 1 1 − D ( X ; θ d ) = 0 ⇒ P d a t a ( X ) 1 D ( X ; θ d ) = P g e n e ( X ) 1 1 − D ( X ; θ d ) ⇒ D ^ G ( X ; θ d ) = P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) \begin{aligned} & \quad \mathcal P_{data}(\mathcal X) \frac{1}{\mathcal D(\mathcal X;\theta_d)} - \mathcal P_{gene}(\mathcal X) \frac{1}{1 - \mathcal D(\mathcal X;\theta_d)} = 0 \\ & \Rightarrow \mathcal P_{data}(\mathcal X) \frac{1}{\mathcal D(\mathcal X;\theta_d)} = \mathcal P_{gene}(\mathcal X) \frac{1}{1 - \mathcal D(\mathcal X;\theta_d)} \\ & \Rightarrow \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) = \frac{\mathcal P_{data}(\mathcal X)}{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)} \end{aligned} Pdata(X)D(X;θd)1Pgene(X)1D(X;θd)1=0Pdata(X)D(X;θd)1=Pgene(X)1D(X;θd)1D^G(X;θd)=Pdata(X)+Pgene(X)Pdata(X)
    可以看出, D ^ G ( X ; θ d ) \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) D^G(X;θd)必然是存在的 P d a t a ( X ) \mathcal P_{data}(\mathcal X) Pdata(X)真实分布 P g e n e ( X ) \mathcal P_{gene}(\mathcal X) Pgene(X) θ g e n e \theta_{gene} θgene确定状态下的分布。
    分布好不好求是一回事,存不存在是另一回事~这里只是验证最优解存在。

  • 此时 D ^ G ( X ; θ d ) \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) D^G(X;θd)已经求解,此时将其带回到原式,求解 G \mathcal G G的最优解
    min ⁡ G max ⁡ D V ( D , G ) = min ⁡ G V [ D ^ G ( X ; θ d ) , G ] = min ⁡ G { E x ∼ P d a t a [ log ⁡ ( P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) ) ] + E x ∼ P g e n e [ log ⁡ ( P g e n e ( X ) P d a t a ( X ) + P g e n e ( X ) ) ] } \begin{aligned} \mathop{\min}\limits_{\mathcal G} \mathop{\max}\limits_{\mathcal D} \mathcal V(\mathcal D,\mathcal G) & = \mathop{\min}\limits_{\mathcal G} \mathcal V[\hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d),\mathcal G] \\ & = \mathop{\min}\limits_{\mathcal G} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \left(\frac{\mathcal P_{data}(\mathcal X)}{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}\right)\right] + \mathbb E_{x \sim \mathcal P_{gene}} \left[\log \left(\frac{\mathcal P_{gene}(\mathcal X)}{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}\right)\right]\right\} \end{aligned} GminDmaxV(D,G)=GminV[D^G(X;θd),G]=Gmin{ExPdata[log(Pdata(X)+Pgene(X)Pdata(X))]+ExPgene[log(Pdata(X)+Pgene(X)Pgene(X))]}
    技巧性的部分:我们任意观察上式中大括号内的任意一项,这里以第一项为例:
    将期望使用展开,将其转化为 KL Divergence \text{KL Divergence} KL Divergence的形式。
    E x ∼ P d a t a [ log ⁡ ( P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) ) ] = ∫ X P d a t a ( X ) log ⁡ [ P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) ] d X = KL [ P d a t a ( X ) ∣ ∣ P d a t a ( X ) + P g e n e ( X ) ] \begin{aligned} & \quad \mathbb E_{x \sim \mathcal P_{data}} \left[\log \left( \frac{\mathcal P_{data}(\mathcal X)}{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}\right)\right] \\ & = \int_{\mathcal X} \mathcal P_{data}(\mathcal X) \log \left[\frac{\mathcal P_{data}(\mathcal X)}{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}\right] d\mathcal X \\ & = \text{KL} \left[\mathcal P_{data}(\mathcal X) || \mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)\right] \end{aligned} ExPdata[log(Pdata(X)+Pgene(X)Pdata(X))]=XPdata(X)log[Pdata(X)+Pgene(X)Pdata(X)]dX=KL[Pdata(X)∣∣Pdata(X)+Pgene(X)]
    但实际上,这种表达是没有意义的。因为需要保证 P d a t a ( X ) , P d a t a ( X ) + P g e n e ( X ) \mathcal P_{data}(\mathcal X),\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X) Pdata(X),Pdata(X)+Pgene(X)均是概率分布才有意义。很显然 P d a t a ( X ) + P g e n e ( X ) \mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X) Pdata(X)+Pgene(X)并不是一个概率分布,因为它的值域 [ 0 , 2 ] [0,2] [0,2]
    因为 P d a t a ( X ) , P g e n e ( X ) \mathcal P_{data}(\mathcal X),\mathcal P_{gene}(\mathcal X) Pdata(X),Pgene(X)是两个独立的概率分布,它们的值域均是 [ 0 , 1 ] [0,1] [0,1]

    但如果将 P d a t a ( X ) + P g e n e ( X ) \mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X) Pdata(X)+Pgene(X)调整为 P d a t a ( X ) + P g e n e ( X ) 2 \frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2} 2Pdata(X)+Pgene(X),那么这个 KL \text{KL} KL散度就可以使用了。具体表示如下:

    • 这里没有必要纠结 P d a t a ( X ) + P g e n e ( X ) 2 \frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2} 2Pdata(X)+Pgene(X)的实际意义是什么,这里仅需要凑出 KL \text{KL} KL散度即可。
    • 第二步仅展开了前一项,后一项的格式与前一项相同,这里就不展开了。并且常数的期望就是常数本身。
    • − l o g 4 = 2 log ⁡ 1 2 -log 4 = 2\log\frac{1}{2} log4=2log21

min ⁡ G V [ D ^ G ( X ; θ d ) , G ] = min ⁡ G { E x ∼ P d a t a [ log ⁡ ( P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) 2 ⋅ 1 2 ) ] + E x ∼ P g e n e [ log ⁡ ( P g e n e ( X ) P d a t a ( X ) + P g e n e ( X ) 2 ⋅ 1 2 ) ] } = min ⁡ G { E x ∼ P d a t a [ log ⁡ ( P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) 2 ) ] + E x ∼ P d a t a [ log ⁡ 1 2 ] ⏟ = log ⁡ 1 2 + ⋯   } = min ⁡ G { KL [ P d a t a ( X ) ∣ ∣ P d a t a ( X ) + P g e n e ( X ) 2 ] + KL [ P g e n e ( X ) ∣ ∣ P d a t a ( X ) + P g e n e ( X ) 2 ] − log ⁡ 4 } ≥ − log ⁡ 4 \begin{aligned} \mathop{\min}\limits_{\mathcal G} \mathcal V[\hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d),\mathcal G] & = \mathop{\min}\limits_{\mathcal G} \left\{\mathbb E_{x\sim \mathcal P_{data}} \left[\log \left(\frac{\mathcal P_{data}(\mathcal X)}{\frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2}} \cdot \frac{1}{2}\right)\right] + \mathbb E_{x\sim \mathcal P_{gene}} \left[\log \left(\frac{\mathcal P_{gene}(\mathcal X)}{\frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2}} \cdot \frac{1}{2}\right)\right]\right\} \\ & = \mathop{\min}\limits_{\mathcal G} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \left(\frac{\mathcal P_{data}(\mathcal X)}{\frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2}}\right)\right] + \underbrace{\mathbb E_{x\sim \mathcal P_{data}}\left[\log \frac{1}{2}\right]}_{=\log\frac{1}{2}} + \cdots\right\}\\ & = \mathop{\min}\limits_{\mathcal G} \left\{\text{KL}\left[\mathcal P_{data}(\mathcal X)||\frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2}\right] + \text{KL}\left[\mathcal P_{gene}(\mathcal X) || \frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2}\right] -\log4\right\} \\ & \geq -\log 4 \end{aligned} GminV[D^G(X;θd),G]=Gmin{ExPdata[log(2Pdata(X)+Pgene(X)Pdata(X)21)]+ExPgene[log(2Pdata(X)+Pgene(X)Pgene(X)21)]}=Gmin ExPdata[log(2Pdata(X)+Pgene(X)Pdata(X))]+=log21 ExPdata[log21]+ =Gmin{KL[Pdata(X)∣∣2Pdata(X)+Pgene(X)]+KL[Pgene(X)∣∣2Pdata(X)+Pgene(X)]log4}log4
因为 KL Divergence \text{KL Divergence} KL Divergence存在下界 0 0 0,因此当 P d a t a ( X ) = P g e n e ( X ) = P d a t a ( X ) + P g e n e ( X ) 2 \mathcal P_{data}(\mathcal X) = \mathcal P_{gene}(\mathcal X) = \frac{\mathcal P_{data}(\mathcal X) + \mathcal P_{gene}(\mathcal X)}{2} Pdata(X)=Pgene(X)=2Pdata(X)+Pgene(X)时,可以取到最小值 − log ⁡ 4 -\log 4 log4
最小值取多少并不重要,而是概率分布 P d a t a ( X ) , P g e n e ( X ) \mathcal P_{data}(\mathcal X),\mathcal P_{gene}(\mathcal X) Pdata(X),Pgene(X)相等,可以取得最优值。这也证明了最初目标函数的设计是可行的:
min ⁡ G max ⁡ D { E x ∼ P d a t a [ log ⁡ D ( x ; θ d ) ] + E Z ∼ P ( Z ) [ log ⁡ { 1 − D [ G ( Z ; θ g e n e ) ; θ d ] } ] } \mathop{\min}\limits_{\mathcal G} \mathop{\max}\limits_{\mathcal D} \left\{\mathbb E_{x \sim \mathcal P_{data}} \left[\log \mathcal D(x;\theta_d)\right] + \mathbb E_{\mathcal Z \sim \mathcal P(\mathcal Z)} \left[ \log \left\{1 -\mathcal D [\mathcal G(\mathcal Z;\theta_{gene}) ;\theta_d]\right\}\right]\right\} GminDmax{ExPdata[logD(x;θd)]+EZP(Z)[log{1D[G(Z;θgene);θd]}]}
P d a t a ( X ) = P g e n e ( X ) \mathcal P_{data}(\mathcal X)=\mathcal P_{gene}(\mathcal X) Pdata(X)=Pgene(X)条件带回至 D ^ G ( X ; θ d ) \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) D^G(X;θd)中,有:
D ^ G ( X ; θ d ) = P d a t a ( X ) P d a t a ( X ) + P g e n e ( X ) = 1 2 \hat {\mathcal D}_{\mathcal G}(\mathcal X;\theta_d) = \frac{\mathcal P_{data}(\mathcal X)}{\mathcal P_{data}(\mathcal X)+ \mathcal P_{gene}(\mathcal X)} = \frac{1}{2} D^G(X;θd)=Pdata(X)+Pgene(X)Pdata(X)=21
它的实际意义是:当判别模型判别该样本时,该样本服从 P d a t a ( X ) \mathcal P_{data}(\mathcal X) Pdata(X)分布的概率是0.5,服从 P g e n e ( X ) \mathcal P_{gene}(\mathcal X) Pgene(X)分布的概率也是0.5,它无法正确的分辨该样本服从哪个分布了
如果回到上一节的例子,高水平鉴赏家判定一幅画是大师的画的概率是0.5,是我画的概率也是0.5,他已经无法分辨我的画与大师的画
这个结果在神经网络反向传播的过程中,如果损失函数收敛至0.5,这意味着生成模型参数已经被学习完成了。

至此,生成对抗网络介绍到这里。下一节将介绍变分自编码器

相关参考:
生成对抗网络3-全局最优解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建立建筑领域科学的碳排放核算方法(江亿)

中国工程院院士、清华大学江亿教授受邀参加2022年12月28日“2022中国建筑节能协会年会暨第五届全国建筑节能与绿色建筑技术创新大会”并作了题为“建立建筑领域科学的碳排放核算方法”的报告。 实现能源转型,由碳基能源转为零碳能源,是中央确定的未来战…

九龙证券|锂离子电池在安全性能上应当满足哪些条件?

锂离子电池具有分量轻、容量大、无回忆效应等优势,因而得到了普遍运用——今朝的许多数码设备都采用了锂离子电池作电源,虽然其价格相对来说比较昂贵。锂离子电池的能量密度很高,它的容量是同分量的镍氢电池的1.5~2倍,而且具有很低…

Redis集群搭建

Redis集群搭建1.单机安装Redis2.Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试3.搭建哨兵集群3.1.集群结构3.2.准备实例和配置3.3.启动3.4.测试4.搭建分片集群4.1.集群结构4.2.准备实例和配置4.3.启动4.4.创建集群4.5.测试基于CentOS7下的Redi…

数据库session分析表

目录 Active Session 活动会话 gv$active_session_history 每秒采集一次 dba_hist_active_sess_history 每10秒采集一次 背景 说明: 常用sql 直接使用V$ACTIVE_SESSION_HISTORY的sql 与其他表和视图共同查询…

神经网络数学原理与编码逻辑(一) 无隐层模型

概述 几年前就想写这篇文章,但是要上班应付各种工作内容,在解析神经网络的理论问题上也是断断续续,加上个人能力有限,很多问题并没有研究的很明白,以及神经网络本身高维问题的复杂性,导致这个问题的理解也…

OAuth2代码流程演示

目录 一,创建项目 二,项目结构 一,创建项目 新建项目时,如果换了工作区间我们一定要记得改maven地址,不然下载插件时不仅占用C盘内存,还会下载的很慢。 导入项目 导入新项目后就会下载新的插件&#xf…

消息队列简介

提高系统性能首先考虑的是数据库的优化,之前一篇文章《数据库的使用你可能忽略了这些》中有提到过开发中,针对数据库需要注意的事项。但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所有我们一般会尽量把流量都挡在数据库…

Unity可用 运行时语音合成(文本转语音)插件 RT-Voice PRO

Unity语音合成文本转语音插件 RT-Voice PRO前言一、导入RT-Voice PRO插件二、使用步骤1.先看自带例子(01-Speech)2.自行配置总结前言 提示:这个插件在Unity Asset Store 卖 78美刀,确实买不起啊。 😂 AssetStore下载链接 文章最后…

复试数据结构篇[第5章-第6章]

文章目录第五章 数组和广义表1-数组定义2-数组的顺序表示3-矩阵的压缩存储(1)对称矩阵和三角矩阵(2)对角矩阵(3)稀疏矩阵(3)十字链表4-广义表的定义串、数组、广义表小结第六章 树与…

JVM的类加载

什么是类加载?java程序运行前,要经过编译即.java>.class文件。运行的时候java进程(JVM)就会读取对应的.class文件,并解析内容,在内存中构造出类对象并进行初始化(类对象就是描述这个类有哪些属性,哪些方…

基于卡尔曼滤波器的PID控制-3

基于卡尔曼滤波器的PID控制系统结构如图1所示。图1 基于卡尔曼滤波器的PID控制被控对象为二阶传递函数:离散化结果与“基于卡尔曼滤波器的PID控制-1”的仿真实例相同。采样时间为1ms。控制干扰信号w(k)和测量噪声信号v(k)幅值均为0.002的白噪声信号,输入…

Python中最全的窗口操作,如窗口最大化、最小化、窗口置顶、获取缩放比例等

Python窗口操作 前言 本文记录在Python中操作Windows应用窗口的操作。 这里的操作都是自己摸索借助强大的搜索引擎整理出来的,我真棒!!! 知识点📖📖 名称解释名称ctypes****ctypesPython的外部函数库。它…

高阶导数——“高等数学”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是高阶导数,在这之前,我们学习了导数的概念和函数的求导法则,那么今天,就让我们一起进入高阶导数的世界吧 一、高阶导数的定义 二、高阶导数的计算 1.直接法 2.间…

儿童护眼台灯如何选择?2023年儿童护眼台灯推荐

随着科技不断发展,生活方式的改变,各类的电子产品的使用,加上不注意保护视力、过度用眼等,我国儿童青少年的近视率出现上升趋势,为了保护孩子们的健康,护眼台灯受到许多家庭的青睐,那么儿童的护…

[个人备忘]go包管理

版本 1.18创作目的: 之前想要在go的项目里引用另一个自己写的项目, 然后被折磨半天,乃至弃坑1,创建项目我们创建目录gogogo,下面有两个项目: 分别创建main.goutils/main.gopackage utils import "fmt" // 大写才能被外部访问 func Log(){fmt.Print("go mod is s…

Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据

Postman 实现备份数据 Postman恢复数据 postman 导出导入数据 postman 导入导出数据 一、需求描述 在使用postman调试接口时,若遇到内网的环境,无法通过账户同步数据; 在A电脑调试的接口数据,需要移动到B电脑上,如何实…

python第三方库的离线安装与自动安装脚本(以flask为例 Ubuntu18.04系统)

1.第三方库安装方式 1.1 pip 安装 以flask为例,使用指令 pip install flask即可安装 其他选项: install 安装库 uninstall 卸载库 list 列出已经安装的库 show 列出已安装的库的详细信息 search 通过PyPI搜索库 help 帮助命令1.2 源码安装 官网获取…

SpringBoot整合Shiro

简介Shiro是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的解决方案的认证,授权,加密,会话管理。Shiro 四个主要的功能:Authentication:身份认证/登录,验证用户是不是拥…

kubernetes -- 删除namespace的过程以及遇到的bug解决

通过阅读本篇文章你可以收获如下知识: 解决一个bug。理解k8s的controller中,删除namespace的源码,理解其中的删除过程。 问题 执行kubectl delete ns {ns-name}命令来删除ns-name的时候,发现状态一直停留在Terminating。 [roo…

2023牛客寒假算法基础集训营5

(0条未读通知) 【题解】2023牛客寒假算法基础集训营5_ICPC/CCPC/NOIP/NOI刷题训练题单_牛客竞赛OJ (nowcoder.com) A-小沙の好客 下面是错误代码,我刚开始看到这题,觉得很简单阿,做了才知道,会超时,所以不能单纯的去做…