無監督學習: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的版本。
對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(深度生成模型)