1. 程式人生 > >無監督學習:Deep Generative Mode(深度生成模型)

無監督學習:Deep Generative Mode(深度生成模型)

speech nom like 當前 多個 generator 問題 get pixel

一 前言

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

無監督學習:Deep Generative Mode(深度生成模型)