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 结构化学习方法

3、Generator能否自己学习?
Auto-encoder

input和output越接近越好

在此过程中,decoder即为Generator

此类情况未必产生正确结果,有可能是噪声
解决该问题的方法Variational Auto Encoder(VAE变分自动编码器)

损失?
Euclidean Distance,计算欧式距离判断生成器和目标的相似度
大局观的例子:

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

推论
\[\tilde{x}=arg\ max_{x\in X}D(x)
\\
穷举所有可能
\]
在判别器训练中
负向样本很关键:怎样生成高质量负向样本


过拟合


Generator V.S. Discriminator
| Generator | Discriminator | |
|---|---|---|
| 优势 | 即使是深度模型也容易产生 | 考虑整体规划 |
| 劣势 | 需要模仿 | 生成并不总是可行的(特别是深度模型) |
| 很难学习组件之间的关联性 | 如何进行负向取样 |
GAN的好处
从判别器角度来看:
使用生成器生成负向样本

从生成器角度来看:
- 仍然逐个组件生成项目
- 但是其从判别器中学习到了全局观

浙公网安备 33010602011771号