原始GAN的问题
判别器越好,生成器梯度消失越严重。
当判别器为最优时,最佳生成器的损失函数为
2
J
S
(
P
r
∥
P
g
)
−
2
log
2
2 J S\left(P_{r} \| P_{g}\right)-2 \log 2
2JS(Pr∥Pg)−2log2
即当判别器为最优时,最小化真实分布
P
r
P_{r}
Pr与生成分布
P
g
P_{g}
Pg之间的JS散度,可以得到最优的生成器。当真实分布
P
r
P_{r}
Pr与生成分布
P
g
P_{g}
Pg有重叠部分时,最小化其JS散度可以拉近这二个分布。但当真实分布
P
r
P_{r}
Pr与生成分布
P
g
P_{g}
Pg没有重叠部分时,最佳的JS散度固定为
log
2
\log 2
log2。此时,不管真实分布
P
r
P_{r}
Pr与生成分布
P
g
P_{g}
Pg相距多远,只要没有重叠部分,JS散度就固定是常数
log
2
\log 2
log2,生成器梯度为0,导致梯度消失的问题。
在(近似)最优判别器下,最小化生成器的loss等价于最小化真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg之间的JS散度,而由于 P r P_{r} Pr与 P g P_{g} Pg几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数 log 2 \log 2 log2,最终导致生成器的梯度(近似)为0,梯度消失。
梯度不稳定
生成器损失函数为
E
x
∼
P
g
[
−
log
D
(
x
)
]
\mathbb{E}_{x \sim P_{g}}[-\log D(x)]
Ex∼Pg[−logD(x)]
在最优判别器
D
∗
D^{*}
D∗下,
E
x
∼
P
a
[
−
log
D
∗
(
x
)
]
=
K
L
(
P
g
∥
P
r
)
−
2
J
S
(
P
r
∥
P
g
)
+
2
log
2
+
E
x
∼
P
r
[
log
D
∗
(
x
)
]
\mathbb{E}_{x \sim P_{a}}\left[-\log D^{*}(x)\right]=K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right)+2 \log 2+\mathbb{E}_{x \sim P_{r}}\left[\log D^{*}(x)\right]
Ex∼Pa[−logD∗(x)]=KL(Pg∥Pr)−2JS(Pr∥Pg)+2log2+Ex∼Pr[logD∗(x)]
所以最小化生成器的损失函数等价于最小化
K
L
(
P
g
∥
P
r
)
−
2
J
S
(
P
r
∥
P
g
)
K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right)
KL(Pg∥Pr)−2JS(Pr∥Pg)
由于
K
L
(
P
g
∥
P
r
)
K L\left(P_{g} \| P_{r}\right)
KL(Pg∥Pr)与
J
S
(
P
r
∥
P
g
)
J S\left(P_{r} \| P_{g}\right)
JS(Pr∥Pg)在最小化时矛盾,导致训练时梯度不稳定。
collapse mode,多样性不足
由于KL散度是不对称的衡量,即 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 与 K L ( P r ∥ P g ) K L\left(P_{r} \| P_{g}\right) KL(Pr∥Pg)存在差别。
- 当 P g ( x ) → 0 P_{g}(x) \rightarrow 0 Pg(x)→0 而 P r ( x ) → 1 P_{r}(x) \rightarrow 1 Pr(x)→1 时, P g ( x ) log P g ( x ) P r ( x ) → 0 P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow 0 Pg(x)logPr(x)Pg(x)→0 ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 贡献趋近 0。即生成器没能生成真实的样本,但惩罚很小。
- 当 P g ( x ) → 1 P_{g}(x) \rightarrow 1 Pg(x)→1 而 P r ( x ) → 0 P_{r}(x) \rightarrow 0 Pr(x)→0 时, P g ( x ) log P g ( x ) P r ( x ) → + ∞ P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow+\infty Pg(x)logPr(x)Pg(x)→+∞ ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(Pg∥Pr) 贡献趋近正无穷。生成器生成了不真实的样本,惩罚很大。
这导致生成器趋向于生成重复的接近真实的样本,避免产生错误,造成样本多样性不足的情况。
Wasserstein距离
Wasserstein距离的定义为:
W
(
P
r
,
P
g
)
=
inf
γ
∼
Π
(
P
r
,
P
g
)
E
(
x
,
y
)
∼
γ
[
∥
x
−
y
∥
]
W\left(P_{r}, P_{g}\right)=\inf _{\gamma \sim \Pi\left(P_{r}, P_{g}\right)} \mathbb{E}_{(x, y) \sim \gamma}[\|x-y\|]
W(Pr,Pg)=γ∼Π(Pr,Pg)infE(x,y)∼γ[∥x−y∥]
Π
(
P
r
,
P
g
)
\Pi\left(P_{r}, P_{g}\right)
Π(Pr,Pg) 是
P
r
P_{r}
Pr 和
P
g
P_{g}
Pg 组合起来的所有可能的联合分布的集合。
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。
Lipschitz连续指的是存在一个常数
K
>
0
K>0
K>0 使得定义域内的任意两个元素
x
1
x_{1}
x1 和
x
2
x_{2}
x2 都满足
∣
f
(
x
1
)
−
f
(
x
2
)
∣
≤
K
∣
x
1
−
x
2
∣
\left|f\left(x_{1}\right)-f\left(x_{2}\right)\right| \leq K\left|x_{1}-x_{2}\right|
∣f(x1)−f(x2)∣≤K∣x1−x2∣
等价于
f
f
f的导函数绝对值不超过
K
K
K。
由于Wasserstein距离的式子无法直接求解,可以变换成
W
(
P
r
,
P
g
)
=
1
K
sup
∥
f
∥
L
≤
K
E
x
∼
P
r
[
f
(
x
)
]
−
E
x
∼
P
g
[
f
(
x
)
]
W\left(P_{r}, P_{g}\right)=\frac{1}{K} \sup _{\|f\|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}[f(x)]-\mathbb{E}_{x \sim P_{g}}[f(x)]
W(Pr,Pg)=K1∥f∥L≤KsupEx∼Pr[f(x)]−Ex∼Pg[f(x)]
其中,
∥
f
∥
L
\|f\|_{L}
∥f∥L表示函数
f
f
f 的Lipschitz常数。上式又可近似为
K
⋅
W
(
P
r
,
P
g
)
≈
max
w
:
∣
f
w
∣
L
≤
K
E
x
∼
P
r
[
f
w
(
x
)
]
−
E
x
∼
P
g
[
f
w
(
x
)
]
K \cdot W\left(P_{r}, P_{g}\right) \approx \max _{w:\left|f_{w}\right|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]
K⋅W(Pr,Pg)≈w:∣fw∣L≤KmaxEx∼Pr[fw(x)]−Ex∼Pg[fw(x)]
可以用神经网络来拟合
f
w
f_{w}
fw。我们可以构造一个含参数
w
w
w、最后一层不是非线性激活层的判别器网络
f
w
f_{w}
fw,在限制
w
w
w不超过某个范围的条件下,
L
=
E
x
∼
P
r
[
f
w
(
x
)
]
−
E
x
∼
P
g
[
f
w
(
x
)
]
L=\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]
L=Ex∼Pr[fw(x)]−Ex∼Pg[fw(x)]
L
L
L就是近似真实分布与生成分布之间的Wasserstein距离。
判别器 f w f_{w} fw 做的是近似拟合Wasserstein距离,属于回归任务,要去掉最后一层的Sigmoid函数。判别器要做的是令Wasserstein距离尽可能最大,所以损失函数为 E x ∼ P g [ f w ( x ) ] − E x ∼ P r [ f w ( x ) ] \mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right] Ex∼Pg[fw(x)]−Ex∼Pr[fw(x)]
而生成器的损失函数则为 − E x ∼ P g [ f w ( x ) ] -\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right] −Ex∼Pg[fw(x)]
Wasserstein GAN对原始GAN的改动
- 去掉判别器最后一层的Sigmoid
- 生成器和判别器的损失函数不取log
- 每次更新判别器的参数之后把它们的绝对值进行截断
- 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp和SGD