1700540236
1700540237
1700540238
高维空间绝大部分地方见不到真实数据,pr(x)处处为零,对KL距离的贡献为零;即使在真实数据蜷缩的低维空间,高维空间会忽略低维空间的体积,概率上讲测度为零。KL距离就成了:。
1700540239
1700540240
再看第二个KL距离:
1700540241
1700540242
1700540243
1700540244
1700540245
(13.14)
1700540246
1700540247
1700540248
同理KL距离也为:。因此,JS距离为log 2,一个常量。无论生成器怎么“布网”,怎么训练,JS距离不变,对生成器的梯度为零。训练神经网络是基于梯度下降的,用梯度一次次更新模型参数,如果梯度总是零,训练还怎么进行?
1700540249
1700540250
问题2 破解武器:WGAN针对前面问题做了哪些改进?什么是Wasserstein距离?
1700540251
1700540252
难度:★★★★☆
1700540253
1700540254
分析与解答
1700540255
1700540256
直觉告诉我们:不要让生成器在高维空间傻傻地布网,让它直接到低维空间“抓”真实数据。道理虽然是这样,但是在高维空间中藏着无数的低维子空间,如何找到目标子空间呢?站在大厦顶层,环眺四周,你可以迅速定位远处的山峦和高塔,却很难知晓一个个楼宇间办公室里的事情。你需要线索,而不是简单撒网。处在高维空间,对抗隐秘的低维空间,不能再用粗暴简陋的方法,需要有特殊武器,这就是Wasserstein距离(见图13.7),也称推土机距离(Earth Mover distance)
1700540257
1700540258
1700540259
1700540260
1700540261
(13.15)
1700540262
1700540263
1700540264
1700540265
1700540266
图13.7 Wasserstein距离
1700540267
1700540268
1700540269
1700540270
怎么理解这个公式?想象你有一个很大的院子,院子里有几处坑坑洼洼需要填平,四个墙角都有一堆沙子,沙子总量正好填平所有坑。搬运沙子很费力,你想知道有没有一种方案,使得花的力气最少。直觉上,每个坑都选择最近的沙堆,搬运的距离最短。但是存在一些问题,如果最近的沙堆用完了,或者填完坑后近处还剩好多沙子,或者坑到几个沙堆的距离一样,我们该怎么办?所以需要设计一个系统的方案,通盘考虑这些问题。最佳方案是上面目标函数的最优解。可以看到,当沙子分布和坑分布给定时,我们只关心搬运沙子的整体损耗,而不关心每粒沙子的具体摆放,在损耗不变的情况下,沙子摆放可能有很多选择。对应式(13.16),当你选择一对(x,y)时,表示把x处的一些沙子搬到y处的坑,可能搬部分沙子,也可能搬全部沙子,可能只把坑填一部分,也可能都填满了。x处沙子总量为,y处坑的大小为,从x到y的沙子量为γ(x,y),整体上满足等式
1700540271
1700540272
1700540273
,
1700540274
1700540275
(13.16)
1700540276
1700540277
1700540278
.
1700540279
1700540280
(13.17)
1700540281
1700540282
为什么Wasserstein距离能克服JS距离解决不了的问题?理论上的解释很复杂,需要证明当生成器分布随参数θ变化而连续变化时,生成器分布与真实分布的Wasserstein距离也随θ变化而连续变化,并且几乎处处可导,而JS距离不保证随θ变化而连续变化。
1700540283
1700540284
通俗的解释,接着“布网”的比喻,现在生成器不再“布网”,改成“定位追踪”了,不管真实分布藏在哪个低维子空间里,生成器都能感知它在哪,因为生成器只要将自身分布稍做变化,就会改变它到真实分布的推土机距离;而JS距离是不敏感的,无论生成器怎么变化,JS距离都是一个常数。因此,使用推土机距离,能有效锁定低维子空间中的真实数据分布。
1700540285
[
上一页 ]
[ :1.700540236e+09 ]
[
下一页 ]