生成式模型


Unsupervised Learning:只有数据没有标签,我们的目标是学到一些潜在的数据中的结构,比如聚类,降维PCA,特征学习,密度估计等。

image

Generative Models:

给定训练数据,学得一个p-model,并用p-model生成新的数据,我们希望p-model 和 p-data 尽可能的相似。

image

可以分为显式密度估计和隐式密度估计。

为什么Generative Models很重要?

image

Generative Models的一些分类:

image

我们使用链式法则来分解image x的可能性,然后最大化训练数据的likelihood:

image

但是这个在每个pixel values上的分布非常的复杂,我们可以用神经网络来表达它。

PixelRNN:

从corner生成pixels,用RNN(LSTM)来解决之前的像素的依赖,缺点是这个序列生成太慢了。

image

PixelCNN:

仍然是从corner生成pixels,但与PixelRNN不同的是,这里直接使用CNN来解决之前的像素的依赖,然后最大化训练图像的似然

image

Variational AutoEncoder(VAE) ,它引入了一个隐变量,这不好直接优化

image

什么是Autoencoders?它是一个无监督学习,目标是从一堆无标签的训练数据中学到一个低维的feature representation

image

为什么要降维呢?因为我们想找到数据中最重要的特征。

我们训练这样的特征z 使得它能够用来重建原来的数据x,我们需要一个encoder来提取x的特征z(CNN卷积) ,然后再用一个decoder重建数据(CNN upsampling),然后将该数据与输入计算一个loss,想让这个loss尽可能小,也就是pixels 之间相差很小。

image

encoder可以用来初始化一个监督模型

image

接下来让我们走近VAE,它在autoencoders 中加入随机因子,那么我们就可以采样生成新的data。

我们假设训练数据是从不知道的表示 z 中产生的,z是一个 latent factor,可能表示 x 中的一些特征。

image

我们想要学到一个真实的 \(\theta^*\) 来表示这个模型,那么该如何表示这个模型呢?我们可以选择简单的 p(z) ,然后 p(x|z) 很复杂,可以用神经网路来表示。

怎么训练这个模型呢?通过最大化似然函数来学习模型的参数:

image

但是似然函数是 intractable的,但我们可以定义一个additional encoder network \(q_{\phi}(z|x)\) 来近似 \(p_{\theta}(z|x)\) ,这是很有用的。

image

然后我们就可以通过编码和解码网络来计算似然函数:

image

隐变量的威力真的是十分巨大了,EM算法中也同样使用的隐变量来迭代优化,不过这里可以通过采样来估计第一项的这个期望。而且最后一项恒大于等于0。

image

image

上面红线所指的那部分,我们想要最大化这个输入data的重构的似然,而绿线那部分,我们想使它尽可能小,也就是让后验和先验尽可能的相似。

训练好之后就可以开始产生新的数据了:

image

但是往往它的图片像素很低而且 low quality与 GAN 相比。

下面介绍 GAN(Generative Adversarial Networks):

考虑一下如果我们不显式对密度建模,而是直接采样,GAN就是基于这样的想法game-theoretic 的方法,通过2-player game学习产生训练数据分布。

但现在问题是如何从一个复杂的高维的训练分布中采样呢?我们可以先从简单的分布采样,然后学习一个 transformation 将这个简单的采样趋近于训练数据分布,需要一个神经网络来做这件事。

image

在GAN中有两个网络:

  • Generator network:它通过产生real-looking的图片尝试欺骗 Discriminator
  • Discriminator network:尝试辨别real 和 fake 图片

image

通过一个minimax game来训练这个两个网络:

image

Discriminator(\(\theta_d\) ) 输出 (0,1)概率,Discriminator(\(\theta_d\) ) 想让 D(x) 趋近于1,D(G(z))趋近于0。

Generator(\(\theta_{g}\) ) 想让 D(G(z)) 趋近于1,也就是可以让Discriminator 认为产生的 G(z) 是真的。

然后就是轮流优化:

image

但是在第二步训练时会有些问题,当sample是fake(趋近于0)时,梯度很平缓,很难训练,而sample的结果很好时,梯度却很大

image

于是我们可以这样修改

image

综合起来:

image

训练结束后,可以通过 Generator network 来产生新的图片:

image


文章作者: lovelyfrog
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lovelyfrog !
 上一篇
PRML第二章笔记part2 PRML第二章笔记part2
指数族分布参数为 \(\eta\) 的变量为 \(x\) 的指数族分布的定义为: 这里 \(\eta\) 被称为概率分布的自然参数,\(g(\eta)\) 可以被看成系数,它确保概率分布的归一化。 接下来证明我们本章讨论过的概率分布的
2018-05-13
下一篇 
PRML第二章笔记part1 PRML第二章笔记part1
概率分布本章主要研究某些特殊的概率分布,它们是构成复杂模型的基石。 本章中假设数据点独立同分布,我们考虑离散随机变量的二项分布和多项式分布,以及连续随机变量的高斯分布,这些分布都是参数分布的典型例子。在给定数据集的条件下,我们想确定参数
2018-05-12
  目录