1. 程式人生 > >李巨集毅機器學習2016 第十五講 無監督學習 生成模型之 VAE

李巨集毅機器學習2016 第十五講 無監督學習 生成模型之 VAE

Unsupervised Learning : Generation

本章主要講解了無監督學習中的生成模型方法。

1.生成模型(Generative Models)

“What I cannot create, I do not understand.” ——Richard Feynman

生成模型的想法是希望機器能夠自己主動去生成,去創造。


2.PixelRNN

此方法主要是用到RNN,例如要生成一張3*3的圖,可以一次生成一個畫素,再將其組合起來就可以得到要求的圖。此方法能夠被大量沒有標註的影象進行訓練。


上圖先隨機得到一個畫素點值(橙色),將其作為輸入用一個RNN網路輸出了一個藍色的畫素點;接著用原來的橙色點和生成的藍色點,兩個點作為輸入,用RNN網路輸出另外一個淺藍色的點;接著用這已有的三個點作為輸入,再重複之前的步驟......直到得到完整的圖。

3.Variational AutoEncoder(VAE)

在第十四講,瞭解了自編碼器的知識,最初想法是可以利用解碼器,隨機產生一個code作為輸入向量,來產生影象,但是效果並不理想。


VAE的想法是通過對編碼器的輸出做出改變,如下圖所示。


假設code維度是三維。編碼器的輸出m1、m2、m3是原始code,σ1、σ2、σ3視為新增的噪聲的方差,這是自動學習的,通過指數操作保證非負,e1、e2、e3是係數。得到的新的code是帶噪聲的。如果在學習時,僅僅最小化重構誤差會怎樣呢?顯然,噪聲方差為0就能使得誤差最小,但這和我們的想法不一致。所以在上圖右下方,在學習時不僅要最小化重構誤差也要最小化該公式的值。


VAE為什麼work?一種直覺的想法是,其是加上噪聲了的。比如上圖中,要在一張滿月圖和半月圖中生成一張圖,加上了噪聲後,能夠使得在很大範圍內都是月亮的圓和半圓的形狀,所以能夠在一定程度上保證在其中間的生成圖是介於兩者之間的。

其主要數學原理是高斯混合模型(Gaussian Mixture Model)。


VAE的問題是其實VAE並沒有想過怎樣去生成一張新圖,而是在產生一張與資料庫中的圖儘可能相似的圖,只是在模仿。上圖中一個畫素點的不同在原始的“7”圖上,左邊的可以理解,但是右圖是不一樣的,是假的,但是VAE會認為說其與原始目標是一致的。

VAE並沒有生成新圖,而是僅僅記住了已經存在了的圖。

4.總結

本章主要講述了兩種生成模型的方法:PixelRNN

以及Variational AutoEncoder(VAE)

並講述了其原理及優缺點。