机器学习笔记之生成对抗网络——全局最优解的求解逻辑
- 引言
- 回顾:生成对抗网络的判别过程
- 关于生成对抗网络的一些特性
- 最优解的求解过程
引言
上一节介绍了生成对抗网络,并介绍了其判别过程,本节将介绍关于模型参数的求解逻辑。
回顾:生成对抗网络的判别过程
生成对抗网络的计算图结构表示如下:
其中
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}) Z∼P(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 Y∣x | 1 1 1 | 0 0 0 |
---|---|---|
P ( Y ∣ x ) \mathcal P(\mathcal Y \mid x) P(Y∣x) | D ( x ; θ d ) \mathcal D(x;\theta_d) D(x;θd) | 1 − D ( x ; θ d ) 1 - \mathcal D(x;\theta_d) 1−D(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{Ex∼Pdata[logD(x;θd)]+EZ∼P(Z)[log{1−D[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{EZ∼P(Z)[log{1−D[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{Ex∼Pdata[logD(x;θd)]+EZ∼P(Z)[log{1−D[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=1∏NPgene(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=1∑NlogPgene(x(i);θgene)]≈θgeneargmax{Ex(i)∼Pdata[logPgene(X;θgene)]}=θgeneargmax∫XPdata(X)logPgene(X;θgene)dX=θgeneargmax∫XPdata(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{Ex∼Pdata[logD(x;θd)]+EZ∼P(Z)[log{1−D[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)
Z∼P(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}
x∼Pgene中直接进行采样,并执行
x
x
x的运算,最终可将上式转化为如下表达形式:
虽然两项中均有
x x x,但来自的分布并不相同。
发现公式中并不含
θ g e n e \theta_{gene} θgene,其原因在于:既然能够写成该形式
x ∼ P g e n e x \sim \mathcal P_{gene} x∼Pgene,这意味着从
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)=Ex∼Pdata[logD(x;θd)]+Ex∼Pgene{log[1−D(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{Ex∼Pdata[logD(x;θd)]+Ex∼Pgene{log[1−D(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[1−D(X;θd)]dX=∫X{Pdata(X)logD(X;θd)+Pgene(X)log[1−D(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)]=∂D∂∫X{Pdata(X)logD(X;θd)+Pgene(X)log[1−D(X;θd)]}dX=∫X∂D∂{Pdata(X)logD(X;θd)+Pgene(X)log[1−D(X;θd)]}dX=∫X[Pdata(X)D(X;θd)1−Pgene(X)1−D(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)1−Pgene(X)1−D(X;θd)1=0⇒Pdata(X)D(X;θd)1=Pgene(X)1−D(X;θd)1⇒D^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{Ex∼Pdata[log(Pdata(X)+Pgene(X)Pdata(X))]+Ex∼Pgene[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} Ex∼Pdata[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{Ex∼Pdata[log(2Pdata(X)+Pgene(X)Pdata(X)⋅21)]+Ex∼Pgene[log(2Pdata(X)+Pgene(X)Pgene(X)⋅21)]}=Gmin⎩
⎨
⎧Ex∼Pdata[log(2Pdata(X)+Pgene(X)Pdata(X))]+=log21
Ex∼Pdata[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{Ex∼Pdata[logD(x;θd)]+EZ∼P(Z)[log{1−D[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-全局最优解