CS231n-2017 第13講 生成模型
一、監督學習與非監督學習、生成模型
-
-
監督學習
給定資料 ,以及資料所對應的標籤 ,學習一個從 到 的對映。
應用舉例:分類、迴歸、目標識別、語義分割、影象標註等。
-
-
-
非監督學習
分析資料的隱藏結構特徵。應用舉例:聚類、降維、特徵提取、資料分佈估計等。
-
-
-
生成模型
給定訓練資料,生成滿足訓練資料分佈規律的新資料。這一問題和非監督學習中的資料分佈估計問題關聯甚大。應用舉例:創造影象、影象著色、超畫素。
-
生成模型的主要研究思路分為兩類:一種是對資料分佈律進行顯式建模,本節將會講述此類中的逐畫素RNN/CNN
方法和變分自編碼器;另一類是不對資料分佈律顯式建模,而直接生成新資料,本節將講述此類方法中的對抗生成網路。
二、逐畫素RNN/CNN
樸素的想法是依據已有的畫素,確定下一畫素的取值。數學抽象描述為:在已知若干畫素的條件下,構建未知畫素的概率分佈;然後利用條件概率的鏈式法則,求取整幅影象中所有畫素的分佈規律。
解決方案:使用RNN
或LSTM
網路,從影象的左上角畫素開始,依次推測相鄰畫素的取值;然後使用新的畫素值,推進網路到下一輪的預測。
上述方法存在的問題是,在訓練階段和預測階段,位置畫素的分佈律和取值需逐個構建或推斷,因而計算效率不高。一個解決方法是使用CNN
代替RNN
來構建未知畫素的分佈律,這樣,未知畫素的取值依賴於一小塊區域,而非僅是與之相關聯的畫素;同時,使得訓練過程可以並行化,無需逐畫素進行;但推斷過程仍是逐畫素的。
三、變分自編碼器
考慮如下過程:我們期望從資料中提取最能表徵資料的特徵,然後使用這些特徵儘可能地重建資料,此即自編碼-解碼
過程。其中由自編碼器輸出的特徵可用做分類網路的輸入。
好,現在扔掉編碼器,僅考慮解碼過程,並作如下描述:假設影象 由特徵 產生,這個由 到 的過程已由上述解碼器描述,即我們已通過神經網路學得生成模型 。現要考察資料的真實分佈律。這一分佈律可由用於生成影象的特徵 的分佈律 表示。求解真實分佈律的問題可歸結為求解參量 的問題。進一步,我們明確 的最優解為使得觀測到的資料 出現概率最大的值,即一個最大似然問題:
假定
為正太分佈形式。那麼上述問題的難點在於積分式不可求解。
上述問題又進一步可轉化成如下形式:
圖 4. VAE數學抽象然後這個問題就可近似求解了。(好吧,其實我也沒看懂,後面再補充吧o(╯□╰)o)
應用例項:生成手寫字型;依據笑容程度和頭部姿態,生成人臉影象。
圖 5. 使用VAE生成人臉影象四、生成對抗網路
一個概率論中的結論:可通過恰當的變換,使得滿足均勻分佈的資料通過變換後,滿足任意分佈。在此,這種變換可使用神經網路實現。用於實現這一表換(實際上,是實現從高斯分佈到任意分佈的變換)的網路被稱為生成網路(Generator Network
)。另外需要一個判別網路(Discriminator Network
),用於監督生成的資料的好壞。這樣就構成了對抗生成網路的基本結構:生成網路用於生成虛假資料,力求使得這些虛假資料看起來像是真的,並能夠通過判別網路的檢驗;判別網路則爭取儘量識別出"偽造"的資料。
以 表示生成器生成的資料,以 表示判別器判別為真的概率,則生成對抗網路的優化目標為:
這一模型的求解,可通過對生成器和判別器交替推進來實現,即交替優化如下函式:
-
針對判別器,使用梯度上升方法,優化
-
針對生成器,使用梯度下降法,優化