我们就是找到一个 G ,这个 G 可以让和之间的 JSDiv 距离尽量小。
回忆一下我们在 GAN 中任务,就是找到一个可以让 和 之间距离最小的 G,那么之前这个我们因为不知道 和 形状所以是无法计算的 的现在可以用 来计算这个距离。怎么计算的呢,再简单总结一下,就是找到 D 让 最大,这个在这个找到可以让 最大 D 带入到 后的值就是距离。
假设现在只有 个生成器 图中横坐标表示 D 调整参数后选择不同的 D,纵坐标表示在给定 G 前提条件,也就是固定 G 后哪个一个 D 可以让 最大(红色点表示)
002.png然后找一个 G 可以让 的值最小,其实这个很简单,经过这个图解,李宏毅老师就巧妙地把这个式子讲清楚了。
003.png现在我们似乎有点明白了在 GAN 训练中为什么要先后分别固定生成器和判别器然后再更新他们的参数。
初始化生成器和判别器
- 先固定生成器,同时训练判别器更新其参数
- 再固定判别器,同时训练生成器来更新其参数
也就是找到一个 D 让的值越大越好。
这里可能有点疑问就是在我们目标函数中 那么对于这样损失函数我们应该如何求导。其实也并不难,我们可以将 x 对应最大的找到,然后就对这个 进行求导即可。
-
我们会先看 x 的区域,然后在这个区域中哪一个所对应值最大,我们就对其进行求导
-
开始有一个给定
-
然后找到一个 可以让 最大。
-
找到可以让大后,我们再来更新
-
通过上面更新参数可以找到,接下来就可以继续找下一个 让
网友评论