各种散度
熵
S
(
p
)
=
−
∑
i
p
(
x
i
)
l
o
g
b
p
(
x
i
)
S(p)=- \sum \limits_i p(x_i)log_bp(x_i)
S(p)=−i∑p(xi)logbp(xi)
在P分布携带的信息量
/
对P分布的样本使用基于P的编码所需的最小字节数
交叉熵
H
(
p
,
q
)
=
−
∑
i
p
(
x
i
)
l
o
g
b
q
(
x
i
)
H(p,q)=- \sum \limits_i p(x_i)log_bq(x_i)
H(p,q)=−i∑p(xi)logbq(xi)
从Q分布的角度来看P分布的信息量
/
对P分布的样本使用基于Q的编码所需的所需要的“平均的编码长度”
为何交叉熵可以用来衡量损失?参考
训练样本P分布的熵是恒定的,最小化交叉熵等于最小化KL散度,即用当前分布来拟合训练数据分布的信息量损失。
KL散度
K
L
(
p
∣
∣
q
)
=
−
(
∑
i
p
(
x
i
)
l
o
g
b
q
(
x
i
)
)
+
∑
i
p
(
x
i
)
l
o
g
b
p
(
x
i
)
KL(p||q)=-(\sum \limits_i p(x_i)log_bq(x_i))+\sum \limits_i p(x_i)log_bp(x_i)
KL(p∣∣q)=−(i∑p(xi)logbq(xi))+i∑p(xi)logbp(xi)
=
H
(
p
,
q
)
−
H
(
p
)
=H(p,q)-H(p)
=H(p,q)−H(p)
不对称性 非负性
使用Q分布来近似P分布时信息的损失量
/
对P分布的样本使用基于Q的编码“额外所需的编码长度”。
JS 散度
对称性 0-1之间 越小越相似
GAN 原理
根据原始GAN定义的判别器loss,我们可以得到最优判别器的形式;而在最优判别器下,可以把原始GAN定义的生成器loss等价变换为最小化真实分布
P
r
P_r
Pr与生成分布
P
g
P_g
Pg之间的JS散度。
固定G,求出最优的D,然后代入max DV(G,D),得到的是JS散度,最小为-2log2
最小化上式,即最优化JS散度,那么必然
训练产生问题
- 原始GAN 问题:
生成器梯度消失严重
- JS 散度衡量不了不重叠分布距离
图片是由低维的vector到高维生成的,由于 P r P_r Pr与 P g P_g Pg几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数 log 2 \log 2 log2,最终导致生成器的梯度(近似)为0,梯度消失。 - 判别器太好
- G、D训练互相影响
更新G之后,确实对应的JS散度变小了,但是同时影响了V(G,D)曲线,那下次的maxV(G,D)可能变大了,就是说D拟合两者分布的能力变差了
解决方式 更新多次D,更新一次G
- 改进的生成器loss(因为刚开始训GAN的时候判别器对生成图片的输出较小,原损失函数的梯度小,训练慢)
导致不稳定&collapse mode 多样性不 足
等于最小化
又要最小化KL,又要最大化JS 梯度不稳定
前面KL的毛病:不对称
第一项是没有生成真实数据集里存在的样本,第二项是错误生成了真实数据里没有的样本,那我宁愿不去生成多样性的样本,不试错。
WGAN
Earth-Mover(EM)距离
在所有可能的联合分布下,求真实样本和生成样本距离的期望,取这个期望的下界。
也就是在最优的联合分布下,将Pr挪到Pg的最小消耗。
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。
WGAN
对真实样本来说取f(x),对生成样本来说取-f(x)的上界,对参数w梯度有限制。
1-拉普拉斯连续 :限制输出变化量<输入变化量,即要求函数平滑,防止训练趋向于将两类距离越拉越大不收敛。
与原始GAN 区别:
1.损失函数
-
参数截断以满足拉普拉斯条件
-
去掉判别器中的sigmoid
因为原始D(x)拟合的是0、1值,而在这里判别器拟合的是Wassertain 距离。
WGAN-GP
使用梯度惩罚 加惩罚项
Relativistic GANs
传统的 GAN 会度量生成数据是真实数据的概率。相对 GAN(Relativistic GAN)则会去度量生成数据比真实数据「更加真实」的概率
参考:WGAN