Unspervised learning主要任務目標是發掘數據潛在有價值的結構,主要分為clustering,dimentionality reduction,feature learning, density estimation

Generative Model主要任務是給定一個數據集P(data),通過模型P(model)學習樣本的分布,可以通過模型生成近似原樣本分布的數據。主要屬於density estimation範疇。作用主要:
  • 根據需求近似生成真實數據,想像空間非常大,這是一個富裕想像力與創造性的,比如生成馬賽克,美顏,生成畫作等,當然能生成的也是可以去掉的。
  • 生成時間序列數據,可以用於強化學習
  • 也可以用於feature learning等
Generative Model

按方法分類generative model,主要分為explicity and implicity density,這次主要介紹explicity的方法。

從定義上來說,explicity density就是我直接通過定義P(model),然後通過來最大化data likelihood求解P(model)。implicity density就是不直接定義P(model),但是模型可以sample出data。

然後根據定義的density確定的likelihood是否能直接給出求解方法,如果可以那就直接解唄,說明你定義了一個tractable density。比如Fully visible belief nets的PixelRNN & CNN,按照每個像素定義每一張圖的likelihood,用鏈式法則分解likelihood為給定先前的pixels當前pixel的條件概率乘積
Full visible belief network

看圖中條件概率是很複雜,自然就可以想到用神經網路去做transformation,神經網路是很好的複雜函數的擬合器。重點是如果做這個conditional prob呢?

  • generate image pixels starting from corner
  • dependency on previous pixels modeled using an RNN(LSTM)RNN很輕鬆就可以做成依賴關係,畢竟sequential model.PixelRNN效果很好,但是缺點是比較慢,畢竟pixel by pixel sequential generation。那麼就出現了PixelCNN,和PixelRNN很像,只是用了CNN來做dependency on previous pixels,根據已經產生的局部塊圖(content region)來生成pixel。
PixelCNN

PixelCNN訓練過程較快,但是生成圖片一樣的是sequential generation比較慢。

不得不說大神不論在演算法還是應用都是很厲害的!這裡只簡單介紹,其實這個有很多精彩的地方!畢竟這裡主要介紹VAE。

VAE

這裡我決定給像我這樣的小白講講variational autoencoder

先講一下variational inference,為什麼會有這個東西,預備知識如下
  • information theoryinformation,entropy,differential entropy
  • KL DivergenceKL Divergence和lnp(x)關係
  • Graphical Model
  • Variational Inf
  1. information(I)是來衡量一個隨機事件的信息量I = -logP(x),定義上直觀理解,一個事件x發生的概率越大,其信息量越小,比如你本來就知道太陽明天會升起,那麼我告訴你這個事件,其實並沒有帶來任何信息
  2. entropy/avg information根據概率平均information,代表隨機變數的平均信息量H = sum(P(x)*-logP(x))
  3. differential entropyentropy適用於離散變數,連續變數的entropy叫differential entropy,求和換為積分就ok了
  4. KL Divergence/ Relative Entropy它是通過entropy來衡量2個分布的距離KL(p||q)代表根據p概率來衡量q和p的entropy差距,很自然就寫出entropy(q) - entropy(p) = sum(-q(x)log(q(x)) - sum(-p(x)log(p(x)),剛提到是按照p的概率,所以寫成 KL(p||q) = sum(-p(x)log(q(x)) - sum(-p(x)log(p(x)),按p的概率求和就ok了,整理寫成KL(p||q) = sum(p(x)log[p(x)/q(x)])KL Divergence兩個性質:1.大於等於零 2. 不是對稱的,不具備距離度量公理,但是其實更合理一點,在生活中!
  5. KL Divergence 和 lnP(x)

    舉個例子,假設現在有個分布P(x|z),我們不知道這個,所以想用一個分布q(z)來估計它,我們當然也不知q(z)是什麼,先來估計吧。那很自然就可以想到用KL Divergence來衡量估計得好壞,KL Divergence剛提到是用來衡量兩個分布差異的,越小說明分布差異越小(不得不寫公式了)

這裡得到了lower bound L,那為什麼要用lower bound求解呢,那肯定是lower bound好求么。。一般情況下直接求KL是解不出來的,因為有個條件概率,我們比較好得到聯合概率,下面具體說說
  1. Graphical Model簡答介紹一點,告訴你為什麼條件概率比較難求,簡單畫個圖吧

箭頭代表依賴關係,給你這個圖可以很容易寫出聯合概率分布,但是條件概率分母有積分,通常情況下是求不出來。那怎麼辦呢?得到聯合概率是否可以得到條件概率呢,不用計算積分呢?Problem:不積分通過聯合概率來求條件概率Yes!不行還說什麼,variational inference登場了!variational inference不是唯一的方法解決這個問題,主要還有

  • MCMC:Metropolis hasting、Gibbs sampling通過採樣估計,更精確,計算時間較長
  • Variational Inferencedeterministic solution,精度較低,計算時間少
  • Laplace Approximationdeterministic,精度很低,計算很快這裡重新回顧一下問題,我們想要估計p(z|x), 需要計算p(x),因為p(z|x)=p(x,z)/p(x),這裡p(x)需要通過計算積分,通常是計算不出來的,所以我們想通過一個分布q(z)來近似計算p(z|x)。然後我們利用KL Divergence來使得q(z)逼近p(z|x),最後我們得到了個公式KL[q(z)||p(z|x)]-KL[q(z)||p(z,x)]=logp(x),因為x是給定的,等式右邊不變,我們可以改變的只有q(z),目標為讓第一項變小,因為計算不了條件概率,最小化KL[q(z)||p(z|x)]等價於最大化-KL[q(z)||p(z,x)],也就是我們的lower bound,這裡沒有條件概率!結論為了找到p(z|x),variational inference通過找一個q(z)來最大化lower bound L到此終於說清楚了為什麼要用variational inference,以及他是怎麼做的!但是,找到這個q(z),仍然是一個難題,variational inference的作者好像也沒有很好的路子。。。。
  1. Variational Inference作者提出了一個可以簡化lower bound的方法,這裡不得不寫點公式了
Variational Inference1
Variational Inference2

Variational Inference3

下次介紹VAE吧!


推薦閱讀:
相关文章