美文网首页深度学习
2020机器学习GAN(6)

2020机器学习GAN(6)

作者: zidea | 来源:发表于2020-02-29 20:15 被阅读0次
    naruto_vs_sasuke.png

    2 \log \frac{1}{2} + 2JSD(P_{data}||P_G)
    我们就是找到一个 G ,这个 G 可以让P_GP_{data}之间的 JSDiv 距离尽量小。

    G = \arg \min_{G} Div(P_{data},P_G)
    回忆一下我们在 GAN 中任务,就是找到一个可以让 P_{data}P_G 之间距离最小的 G,那么之前Div(P_{data},P_G)这个我们因为不知道 P_{data}P_G形状所以是无法计算的 Div(P_{data},P_G) 的现在可以用 D = \arg \max_D V(D,G) 来计算这个距离。怎么计算的呢,再简单总结一下,就是找到 D 让V(D,G) 最大,这个在这个找到可以让V(D,G) 最大 D 带入到V(D,G) 后的值就是Div(P_{data},P_G)距离。

    G = \arg \min_{G} \max_D V(G,D)

    001.png

    假设现在只有3(G_1,G_2,G_3) 个生成器 图中横坐标表示 D 调整参数后选择不同的 D,纵坐标表示V(G,D)在给定 G 前提条件,也就是固定 G 后哪个一个 D 可以让 V(G,D) 最大(红色点表示)

    002.png

    然后找一个 G 可以让 \max_D V(G,D) 的值最小,其实这个很简单,经过这个图解,李宏毅老师就巧妙地把这个式子讲清楚了。

    003.png

    现在我们似乎有点明白了在 GAN 训练中为什么要先后分别固定生成器和判别器然后再更新他们的参数。
    初始化生成器和判别器

    • 先固定生成器,同时训练判别器更新其参数
    • 再固定判别器,同时训练生成器来更新其参数

    L(G) = \max_D V(G,D)
    也就是找到一个 D 让L(G)的值越大越好。
    \theta_G \leftarrow \theta_G - \eta \frac{\partial L(G)}{\partial \theta_G}

    f(x) = \max \{ f_1(x),f_2(x),f_3(x) \}
    这里可能有点疑问就是在我们目标函数中 \max 那么对于这样损失函数我们应该如何求导。其实也并不难,我们可以将 x 对应最大的f(x)找到,然后就对这个 f(x) 进行求导即可。

    • 我们会先看 x 的区域,然后在这个区域中哪一个f(x)所对应值最大,我们就对其进行求导

    • 开始有一个给定G_0

    • 然后找到一个 D_0 可以让 L(G)最大。

    • 找到可以让L(G)大后,我们再来更新
      \theta_G \leftarrow \theta_G - \eta \frac{\partial V(G,D_0)}{\partial \theta_G} \Rightarrow G_1

    • 通过上面更新参数可以找到G_1,接下来就可以继续找下一个D_1V(G_1,D)

    相关文章

      网友评论

        本文标题:2020机器学习GAN(6)

        本文链接:https://www.haomeiwen.com/subject/zutvhhtx.html