GAN学习笔记(一)

1、算法演示

初始化辨别器θd和生成器θg

  • 每次训练迭代:

  • 判别器训练

    • 从数据库采样m个样本

      \[\{x^1,x^2,...,x^m\} \]

    • 从一个分布(高斯分布?)中选取m个噪音数据

      \[\{z^1,z^2,...,z^m\} \]

    • 获得生成的数据

      \[\{\tilde{x}^1,\tilde{x}^2,...,\tilde{x}^m\},\tilde{x}^i=G(z^i) \]

    • 调判别器参θd至最大化

      \[\tilde{V}=\frac1m\sum_{i=1}^mlogD(x^i)+\frac1m\sum_{i=1}^{m}log(1-D(\tilde{x}^i)) \\ \theta_{d}\leftarrow\theta_d+\eta\nabla\tilde{V}(\theta_d) \]

  • 生成器训练

    • 从一个分布中选取m个噪音数据(不需要和判别器采样一致)

      \[\{z^1,z^2,...,z^m\} \]

    • 调生成器参θg至最大化

      \[\tilde{V}=\frac1m\sum_{i=1}^mlog(D(G(z^i))) \\ \theta_g\leftarrow\theta_{g}+\eta\nabla\tilde{V}(\theta_g) \]

2、结构化学习

2.1 One-Shot/Zero-Shot学习

  • 在分类中,每个类别都有一些例子。
  • 在结构化学习中。
    • 如果你把每个可能的输出看作是一个 "类" ......
    • 由于输出空间很大,大多数 "类 "没有任何训练数据。
    • 机器必须在测试期间创造新的东西。
    • 需要更多的情报
  • 机器学习必须要有规划
    • 机器逐个组件地生成对象。但它应该在脑海中有一个大规划
    • 因为输出的组件有依赖性,所以应该全盘考虑

2.2 结构化学习方法

image

3、Generator能否自己学习?

Auto-encoder

image

input和output越接近越好

image

在此过程中,decoder即为Generator

image

此类情况未必产生正确结果,有可能是噪声

解决该问题的方法Variational Auto Encoder(VAE变分自动编码器)

image

损失?

Euclidean Distance,计算欧式距离判断生成器和目标的相似度

大局观的例子:

image

4、判别器能否生成项目?

image

推论

\[\tilde{x}=arg\ max_{x\in X}D(x) \\ 穷举所有可能 \]

在判别器训练中

负向样本很关键:怎样生成高质量负向样本

image

image

过拟合

image

image

Generator V.S. Discriminator

Generator Discriminator
优势 即使是深度模型也容易产生 考虑整体规划
劣势 需要模仿 生成并不总是可行的(特别是深度模型)
很难学习组件之间的关联性 如何进行负向取样

GAN的好处

从判别器角度来看:

使用生成器生成负向样本

image

从生成器角度来看:

  • 仍然逐个组件生成项目
  • 但是其从判别器中学习到了全局观
posted @ 2022-04-06 17:44  王二狗喵喵喵  阅读(93)  评论(0)    收藏  举报