【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
?
大家好,今天小米粥在有三AI開設新專欄《GAN的優化》。在這個專欄中,我們會講述GAN的相關背景、基本原理、優化等相關理論,尤其是側重于GAN目標函數的優化。小米粥和有三將帶領大家從零學起,深入探究GAN的點點滴滴。
本專欄將比較著重于理論,每周更新一次,歡迎大家和我一起學習。本人才學疏淺,有諸多不到之處還請各位包涵指正。
?
作者 | 小米粥
編輯 | 言有三
今天是第一期,在正式進入GAN之前,我們有必要先介紹一些GAN的背景知識,理一理各種生成模型的那些千絲萬縷的聯系,然后深入到GAN中去。
1 生成模型
在機器學習或者深度學習領域,生成模型具有非常廣泛的應用,它可以用于測試模型的高維概率分布的表達能力,可以用于強化學習、半監督學習,可以用于處理多模輸出問題,以及最常見的產生“真實”數據問題。
我們有必要先說明一個問題,本專欄所講述的GAN包括的VAE、玻爾茲曼機等其他生成模型均屬于無監督學習的范疇,這與李航老師的《統計學習方法(第一版)》里的有監督學習生成方法有所區別。簡單而言,有監督學習與無監督學習的區別之處在于是否存在標簽信息。
在有監督學習生成方法中,我們學得聯合概率分布P(X,Y),然后求出生成模型P(Y|X),其重點在于學習聯合分布。例如,在樸素貝葉斯方法中,我們通過數據集學習到先驗概率分布P(Y)和條件概率分布P(X|Y),即可得到聯合概率分布P(X,Y);在隱馬爾可夫模型中,我們通過數據集學習到初始概率分布、狀態轉移概率矩陣和觀測概率矩陣,即得到了一個可以表示狀態序列和觀測序列的聯合分布的馬爾可夫模型。而在GAN、VAE等無監督生成模型中,只存在關于X的數據集,我們的目標是近似得到P(X)的概率密度函數,或者直接產生符合X本質分布的樣本。
2 極大似然估計
我們從最簡單的生成模型開始說起。考慮這樣一個問題,依概率P(X)在X中獨立采樣n次構建一個包含n樣本的數據集,如何根據這個數據集來求得X的概率密度函數P(X)。其實這個問題并不容易解決,可是如果再額外提供一些關于X的先驗知識,比如X服從正態分布,那這個問題便可以使用極大似然法輕松搞定。
如若X服從正態分布,則概率密度函數P(X)的表達式形式已知,只需要再確定均值、方差兩個參數值便可以得到P(X)。接下來便是計算數據集的似然函數,對似然函數取負對數,然后最小化即可,即
其實,對隨機變量X的概率密度函數的建模源于先驗知識,極大似然估計只是一個參數估計的方法。容易證明,極大似然法本質上是在最小化數據集的經驗性分布和模型分布之間的KL散度,而且當具備某些條件時,參數的極大似然估計值會趨近于真實值。
3 顯式的概率密度函數
當不知道X的概率密度函數P(X)的表達形式,或者該表達式極其復雜的時候,我們如何對P(X)建模?這時,借用神經網絡強大的函數擬合能力、表達能力,我們可以用來擬合相關函數來顯式地構造P(X)。
例如在自回歸網絡中,我們將d維隨機變量X的聯合概率分布通過鏈式法則進行分解,
其中的條件概率分布由神經網絡進行表示。
圖3.1 神經自回歸網絡
另一類是以深度信念網絡、深度玻爾茲曼機以及各種變體為代表的通過加入隱變量來建模P(X)的方法。它們的結構分為可見層和隱層,可見層用于接受輸入,隱層單元用于特征表示。隱變量類似于多層感知器中的隱藏單元,用來模擬可見層的高階交互,可提高網絡的表達、擬合能力。訓練目標均是使可見層節點的分布最大可能接近樣本的真實分布。其區別之處在于深度玻爾茲曼機是一個完全無向模型,而深度信念網絡的是有向圖和無向圖的混合模型,是受限玻爾茲曼機的堆疊。
圖3.2 深度信念網絡
圖3.3 深度玻爾茲曼機
以深度玻爾茲曼機為例,使用能量函數定義聯合概率分布,其中Z為樸素的歸一化配分函數。
我們仍然可以使用極大似然法進行訓練,但是需要解決兩個困難的計算問題,一個是邊緣化隱變量時的推斷問題,一個是配分函數的梯度求解問題。
再一種是基于可微生成器網絡,使用可微函數g(z)將隱變量z的樣本變換為樣本x上的分布。其典型代表便是VAE,其將x顯式建模為
VAE中也需要使用變分法近似最大似然函數。
無論如何顯式地定義概率密度函數P(X),其基本思路都是極大化樣本集的似然函數,最終求解出P(X)中的參數,某些模型需要加一個邊緣化隱變量的操作。在自回歸網絡中,計算難度不算太大,但是在深度玻耳茲曼機、深度信念網絡中涉及到圖模型和隱變量時,不可避免要使用馬爾可夫鏈近似、變分推斷等技術。
4 GAN
再思考一個問題,依概率P(X)在X中獨立采樣n次構建一個包含n樣本的數據集,如何根據這個數據集來訓練一個模型,使得模型能源源不斷產生符合X概率分布的樣本?
如若只是產生樣本,生成模型不必非要去顯式定義概率密度函數,然后近似求解P(X),就比如在深度玻爾茲曼機中,不僅訓練時運算復雜,采樣產生樣本時還需要Gibbs采樣技術。
還是在可微生成器網絡中,不同于VAE,我們使用可微函數g(z)將潛變量z變化為樣本x,全程沒有任何顯式地出現過概率密度函數,直接做一個end-to-end的模型。g(z)的本質是一個參數化計算過程,它能很好地學習到z排布情況以及從z到x的映射。我們所做的就是根據訓練數據來推斷參數,然后選擇合適的g,其代表便是GAN。
GAN(對抗生成網絡)是一種深度生成模型,由Gooldfellow于2014年首次提出,現已發展成時下最火熱的模型之一。其設計靈感來自于博弈論,一般由生成器和判別器兩個神經網絡構成,通過對抗方式進行訓練,最后得到一個性能優異的生成器。
圖4.1 GAN結構
GAN的核心任務是:使生成器G產生的樣本的概率分布盡量接近訓練集的概率分布。判別器D的功能類似于邏輯回歸,對于一個樣本x,判別器D(x)將給出該樣本來源于訓練集的概率,所以一個“完美”的判別器應該對來自于訓練集的樣本輸出概率1,對來自于生成器的生成樣本輸出概率0;對于生成器G,它試圖捕捉到訓練集的本質模式,生成樣本并將樣本送至判別器D,最好能使該樣本“欺騙”判別器,使判別器誤認為該樣本來源于訓練集而輸出概率1。通過這個對抗生成過程,GAN沒有顯式地建模P(x),也可以得到滿足P(x)分布的樣本。
4.1 判別器
訓練判別器,就是在做類似于有監督學習中的邏輯回歸的問題。用于訓練的樣本包括兩部分,原始訓練集(其標簽為1)、生成樣本集(其標簽為0),還是使用極大似然方法便可以得到其目標函數。
圖4.2 判別器
接下來,我們看下最優判別器。我們訓練判別器,理論上存在一個最優解,我們來求解一下這個解。
理想狀態下的最優判別器的數學表達式還是非?!昂唵味鴦諏崱钡?#xff0c;也非常符合我們的直覺。
4.2 生成器
論文最開始提出的生成器是全連接網絡,它不斷優化,使產生的樣本盡量欺騙判別器(即使判別器輸出值盡量大)。
圖4.3 生成器
我們來看一下,生成器的目標函數到底是什么。將最優判別器代入,可有
其實真正在指導生成器進行訓練的是隱式定義的分布和數據集真實分布的JS散度。當兩個分布完全重合時,生成器的目標函數值達到最小-lg4,且此時的判別器也為最優,對任意輸入,均給出D(x)=0.5。理論上可證明,只要有足夠的精度,模型一定能收斂到最優解。
另外,在訓練生成器時,可使用另一個目標函數trick,我們來看看這個目標函數的本質。
單純從數學的角度來看,這個目標函數是自相矛盾的,最大JS散度的同時減少KL散度,這樣的訓練可以認為是沒有什么意義的。
5 作者介紹
小米粥,本科就讀于吉林大學物理學院、經濟學院,現為中科院二年級直博生,主要研究方向為機器學習、GAN。
總結
今天向大家講了講一部分關于的生成模型的內容,從極大似然法到顯式的定義概率密度函數到隱式定義概率密度函數的GAN。在GAN中,我們介紹了基本結構,推導了幾個基本結論,內容比較簡單。
下期預告:度量與fGAN
微信群推薦
歡迎大家加入有三AI GAN交流群,限前100人免費噢,超過100人需添加有三微信Longlongtogo。
另外有三AI夏季劃出爐了,助你成長為中級CV算法工程師,感興趣可以了解:
轉載文章請后臺聯系
侵權必究
往期精選
【技術綜述】有三說GANs(上)
【模型解讀】歷數GAN的5大基本結構
【完結】深度學習CV算法工程師從入門到初級面試有多遠,大概是25篇文章的距離
【完結】優秀的深度學習從業者都有哪些優秀的習慣
【完結】給新手的12大深度學習開源框架快速入門項目
【完結】總結12大CNN主流模型架構設計思想
【AI不惑境】數據壓榨有多狠,人工智能就有多成功
【AI不惑境】網絡深度對深度學習模型性能有什么影響?
【AI不惑境】網絡的寬度如何影響深度學習模型的性能?
【AI不惑境】學習率和batchsize如何影響模型的性能?
【AI不惑境】學習率和batchsize如何影響模型的性能?
總結
以上是生活随笔為你收集整理的【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】自然语言处理专栏上线,带你一步
- 下一篇: 【图像分割模型】多感受野的金字塔结构—P