无监督学习:Deep Generative Mode(深度生成模型)

一 前言

1.1 Creation

据说在费曼死后,人们在他生前的黑板上拍到如图画片,在左上角有道:What i cannot create ,I do not understand. Generative models,就是在做创造的事情。

1.2 Image Processing

二 Generative Models

这是目前的主要方法。

2.1 PixelRNN

每次生成一个像素,用这样的方法,没有任何注释可以训练就有一大堆图像,效果还不错。下边是某一个实例:

2.2 Variational Autoencoder (VAE)

回忆Auto-encoder方法,如果随机生成一个向量code输出一张图片就是在create了,但是发现这样做的performance并不很好,而Variational Autoencoder会好很多。

VAE结构与Auto-encoder很像

需要minimize两处。 VAE,能通过code来控制产生的结果。 比如我们固定住8维,改变其中的两维向量,看他们生成的图像变化趋势,从而得到当前维度控制结果产生的规律。

效果: 如下图,右上角站立,左下角平躺。

也可以让VAE write poetry:

Why VAE?-->用VAE,从code space上去sample一个code,能得到一个比较好的image,而auto encoder可能得不到。

将code加上了noise,而variance决定了noise的大小,variance是train出来的。variance要做一些限制,否则就会是0,所以就要用Minimize。

以上是直观的解释,那么回到我们要解决的问题,即Estimate the probability distribution

那么怎么来Estimate the probability distribution呢?可以用Gaussion Mixtrue Model 。怎样从Gaussian Mixture Model 里sample一个data呢? 首先有一个multinomial distribution,先决定sample 其中的哪一个Gaussian,用m表示。有了m,就可以找到μ和Σ,然后可以sample出一个x。

也就是说每一个你生成的x并不属于某一个class或cluster,而是它有一个vector来描述他所描述的不同对象的特性,所以,VAE其实就是Gaussian Mixture Model的distribute representation的版本。 先sample一个 z ,假设μ 和 σ都分别来自函数μ(z) 和 σ(z),在z的space里,每一个点都有可能被sample到,只是可能性有大小m,z上的每一个点都可能被sample到并对应着无穷多个gaussian,那么function该怎么找呢?那么可以说NN就是function,训练出这个NN就ok啦。

对gaussian的假设是很随意的,因为NN都能被训练适应。现在手上已经有了一批image x,maximize已有image的L。

上面的NN其实就是decoder,下面的是encoder。那么那么logP(x)怎么求呢?

思想就是,likelihood = KL+Lb,logP(x)只与log(x|z)有关,无论q怎么调,图中的上线是不会变的。这时假如固定住p,调q是会使Lb一直上升,最后likelihood会和Lb非常接近,而再继续下去likelihood也会随之变大。

conditional VAE

Problem of VAE

2.3 Generative Adversarial Network (GAN)

Yann LeCun’s comment的评价:

GAN的概念,有点像拟态的演化。

The evolution of generation,Generator演化(蝴蝶),Discriminator也跟着演化(天敌)。 需要注意的是,generator从来没有看过真正的image,它要做的就是努力骗过看过真正image的discriminator。所以generator才能产生出database中没过的image。

GAN - Discriminator

GAN - Generator

Fix the discriminator,然后去调generator的参数。

实例:GAN – Toy Example

Moving on the code space

先随机sample五个vector,然后向该方向moving,会发生很神奇的事情,比如窗变成电视,电视变成窗户。

In practical

参考:

http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/VAE%20%28v5%29.pdf

https://blog.csdn.net/soulmeetliang/article/details/77461607

原文地址:https://www.cnblogs.com/Terrypython/p/9459584.html

时间: 2024-10-10 01:30:38

无监督学习:Deep Generative Mode(深度生成模型)的相关文章

生成模型(Generative)和判别模型(Discriminative)

https://www.cnblogs.com/realkate1/p/5683939.html 生成模型(Generative)和判别模型(Discriminative) 引言 最近看文章<A survey of appearance models in visual object tracking>(XiLi,ACMTIST,2013),在文章的第4节第1段有这样的描述,“Recently,visualobject tracking has been posed as a tracking

10-graph-gen 图机器学习之图生成模型

图深度生成模型 deep generative models for graph 回顾上一节课中的图编码,图卷积等 今天,来学习图深度解码,也就是反编码,最终输出一个图结构 Problem of Graph Generation图生成需要解决的问题 给定一个真实图,生成一个合成图 那么,什么才是好的生成模型? 图生成的意义 生成→深入探索图行程的过程 异常检测 预测--从过去预测未来 新网络的仿真 图填充 如果...场景?? 图生成的任务: 真实图的生成 目标导向图的生成,例如分子生成 为什么如

生成模型与判别模型区别

概念理解 监督学习方法可分为两大类,即生成方法与判别方法,它们所学到的模型称为生成模型与判别模型. 判别模型:判别模型是学得一个分类面(即学得一个模型),该分类面可用来区分不同的数据分别属于哪一类: 生成模型:生成模型是学得各个类别各自的特征(即可看成学得多个模型),可用这些特征数据和要进行分类的数据进行比较,看新数据和学得的模型中哪个最相近,进而确定新数据属于哪一类. 举个例子:若分类目标是对图像中的大象和狗进行分类.判别方法学得一个模型,这个模型可能是判断图中动物鼻子的长度是否大于某一阈值,

Deep Learning(深度学习)之(三)Deep Learning的常用模型或者方法

九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重.自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征.自动编码器就是一种尽可能复现输入信号的神经网络.为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素

Deep Belief Network简介——本质上是在做逐层无监督学习,每次学习一层网络结构再逐步加深网络

from:http://www.cnblogs.com/kemaswill/p/3266026.html 1. 多层神经网络存在的问题 常用的神经网络模型, 一般只包含输入层, 输出层和一个隐藏层: 理论上来说, 隐藏层越多, 模型的表达能力应该越强.但是, 当隐藏层数多于一层时, 如果我们使用随机值来初始化权重, 使用梯度下降来优化参数就会出现许多问题[1]: 如果初始权重值设置的过大, 则训练过程中权重值会落入局部最小值(而不是全局最小值). 如果初始的权重值设置的过小, 则在使用BP调整参

判别模型(Discriminative model)和生成模型(Generative model)

在前面的章节中,我们介绍过SVM.逻辑回归,这两者都属于监督学习中的一种,即训练数据的标签是给定的,我们希望通过对训练数据进行学习,这样对于给定的新样本数据,我们可以对它的类别标签进行预测.实际上,监督学习又可以分为两类,判别模型(Discriminative model)和生成模型(generative model),前面提到的SVM和逻辑回归都属于判别模型的一种.那么判别模型和生成模型有何区别? 1.1 判别模型和生成模型的区别 我们先来看以前讲过的SVM和逻辑回归(LR)有什么特点.这两者

05_无监督学习--聚类模型--K 均值

无监督学习--聚类模型--K 均值0.引入依赖1.数据的加载和预处理2.算法实现3.测试 无监督学习--聚类模型--K 均值 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt # 这里直接 sklearn 里的数据集from sklearn.datasets.samples_generator import make_blobs 1.数据的加载和预处理 x, y = make_blobs(n_samples=100, centers

深度学习(八):生成模型

一.引入 最开始知道生成模型和判别模型,是在李航的统计学习方法里,当时的理解是:生成模型,就是同时考虑了X和Y的随机性,也就是说二者都是随机变量:判别模型,就是只考虑了Y的随机性,而X并不是个随机变量,即使X存在于条件中,但是并没有p(x)这种说法.当时同时也知道了,朴素贝叶斯和隐马尔可夫都是生成模型,最主要的原因就是在这两个模型中涉及到的变量都是随机变量.生成模型可以转变成判别模型,也就是生成模型由于考虑的都是随机变量,可以通过条件概率公式计算出条件概率:反之不行,因为判别模型无法描述联合概率

监督学习模型分类 生成模型 判别模型 概率模型 非概率模型 参数模型 非参数模型

判别模型和生成模型:统计学派和贝叶斯学派之争 判别模型: 直接对输入空间到输出空间的映射h(x)做预测,或者直接对条件概率分布P(y|x)做预测 PM,SVM,NN,KNN,LR,DT 模型一般更准确 不需要预设条件 鲁棒性更高 生成模型: 先对概率分布P(x,y)做预测,根据贝叶斯公式得到P(y|x) GDA,NB,HMM 收敛速度一般更快 可以训练包含隐变量的模型 需要假设的先验分布 可以还原出联合概率分布P(x,y) 可以还原出判别模型,但反过来不行 概率模型和非概率模型:预测概率还是预测