1. 程式人生 > >CS231n-2017 第13講 生成模型

CS231n-2017 第13講 生成模型

一、監督學習與非監督學習、生成模型

    1. 監督學習

      給定資料 x x ,以及資料所對應的標籤 y

      y ,學習一個從 x x y y
      的對映。

      應用舉例:分類、迴歸、目標識別、語義分割、影象標註等。

    1. 非監督學習
      分析資料的隱藏結構特徵。

      應用舉例:聚類、降維、特徵提取、資料分佈估計等。

    1. 生成模型
      給定訓練資料,生成滿足訓練資料分佈規律的新資料。這一問題和非監督學習中的資料分佈估計問題關聯甚大。

      應用舉例:創造影象、影象著色、超畫素。

生成模型的主要研究思路分為兩類:一種是對資料分佈律進行顯式建模,本節將會講述此類中的逐畫素RNN/CNN方法和變分自編碼器;另一類是不對資料分佈律顯式建模,而直接生成新資料,本節將講述此類方法中的對抗生成網路。

二、逐畫素RNN/CNN

樸素的想法是依據已有的畫素,確定下一畫素的取值。數學抽象描述為:在已知若干畫素的條件下,構建未知畫素的概率分佈;然後利用條件概率的鏈式法則,求取整幅影象中所有畫素的分佈規律。

p ( x ) = Π i = 1 n p ( x i x 1 ,   , x i 1 )       \begin{array}{ccl} p(x) &=& \Pi^n_{i=1} p(x_i|x_1,\cdots,x_{i-1})\\ \,\,\uparrow &&\quad\quad\quad\uparrow\\ 影象畫素 &&\,\,下一個未知畫素 \end{array}

解決方案:使用RNNLSTM網路,從影象的左上角畫素開始,依次推測相鄰畫素的取值;然後使用新的畫素值,推進網路到下一輪的預測。

圖 1. 逐畫素RNN圖示

上述方法存在的問題是,在訓練階段和預測階段,位置畫素的分佈律和取值需逐個構建或推斷,因而計算效率不高。一個解決方法是使用CNN代替RNN來構建未知畫素的分佈律,這樣,未知畫素的取值依賴於一小塊區域,而非僅是與之相關聯的畫素;同時,使得訓練過程可以並行化,無需逐畫素進行;但推斷過程仍是逐畫素的。

圖 2. 逐畫素CNN圖示

三、變分自編碼器

考慮如下過程:我們期望從資料中提取最能表徵資料的特徵,然後使用這些特徵儘可能地重建資料,此即自編碼-解碼過程。其中由自編碼器輸出的特徵可用做分類網路的輸入。

圖 3. 自編碼-解碼圖示

好,現在扔掉編碼器,僅考慮解碼過程,並作如下描述:假設影象 x x 由特徵 z z 產生,這個由 z z x x 的過程已由上述解碼器描述,即我們已通過神經網路學得生成模型 p ( x z ) p(x|z) 。現要考察資料的真實分佈律。這一分佈律可由用於生成影象的特徵 z z 的分佈律 p θ ( z ) p_\theta(z) 表示。求解真實分佈律的問題可歸結為求解參量 θ \theta 的問題。進一步,我們明確 θ \theta 的最優解為使得觀測到的資料 x x 出現概率最大的值,即一個最大似然問題:

arg max θ p θ ( x ) = p θ ( z ) p θ ( x z ) d z \arg\max_\theta p_\theta(x) = \int p_\theta(z)p_\theta(x|z)dz
假定 p θ ( x ) p_\theta(x) 為正太分佈形式。那麼上述問題的難點在於積分式不可求解。

上述問題又進一步可轉化成如下形式:

圖 4. VAE數學抽象

然後這個問題就可近似求解了。(好吧,其實我也沒看懂,後面再補充吧o(╯□╰)o)

應用例項:生成手寫字型;依據笑容程度和頭部姿態,生成人臉影象。

圖 5. 使用VAE生成人臉影象

四、生成對抗網路

一個概率論中的結論:可通過恰當的變換,使得滿足均勻分佈的資料通過變換後,滿足任意分佈。在此,這種變換可使用神經網路實現。用於實現這一表換(實際上,是實現從高斯分佈到任意分佈的變換)的網路被稱為生成網路(Generator Network)。另外需要一個判別網路(Discriminator Network),用於監督生成的資料的好壞。這樣就構成了對抗生成網路的基本結構:生成網路用於生成虛假資料,力求使得這些虛假資料看起來像是真的,並能夠通過判別網路的檢驗;判別網路則爭取儘量識別出"偽造"的資料。

G θ g ( z ) G_{\theta_g(z)} 表示生成器生成的資料,以 D θ d ( ) D_{\theta_d}(\cdot) 表示判別器判別為真的概率,則生成對抗網路的優化目標為:

min θ g max θ d [ E x p d a t a log D θ d ( x ) + E z p ( z ) log ( 1 D θ d ( G θ g ( z ) ) ) ] \min_{\theta_g}\max_{\theta_d}\left[ E_{x\sim p_{data}}\log D_{\theta_d}(x) + E_{z\sim p(z)}\log(1-D_{\theta_d}(G_{\theta_g}(z))) \right]

這一模型的求解,可通過對生成器和判別器交替推進來實現,即交替優化如下函式:

  • 針對判別器,使用梯度上升方法,優化

    max θ d [ E x p d a t a log D θ d ( x ) + E z p ( z ) log ( 1 D θ d ( G θ g ( z ) ) ) ] \max_{\theta_d}\left[ E_{x\sim p_{data}}\log D_{\theta_d}(x) + E_{z\sim p(z)}\log(1-D_{\theta_d}(G_{\theta_g}(z))) \right]

  • 針對生成器,使用梯度下降法,優化

    min θ g E z