GAN作為一個聽名字就讓人熱血狂燃的生成模型,近年來在CV,NLP,語音處理等各個領(lǐng)域都取得了驕人的成果。本文介紹了GAN的基本思想,損失函數(shù),優(yōu)化過程,揭開了這個神秘角色的第一層面紗。
2014年,Good Fellow等人將生成對抗網(wǎng)絡(luò)的概念引入機器學(xué)習(xí)范疇,開啟GANs元年。此后的數(shù)年,GANs攜帶著它形形色色的變種橫掃生成模型領(lǐng)域,在每年的AI頂級會議中成為當(dāng)之無愧的流量鮮肉(相關(guān)paper數(shù)量增長見圖1,且其中70%都是華人發(fā)表),并被Yann Lecun盛贊為“十年來機器學(xué)習(xí)領(lǐng)域最有趣的想法”。那么,這個中文譯名讓人瞬間想擼起袖子的大魔王,GAN,到底有什么本事能在深度學(xué)習(xí)進入相對瓶頸的階段,還能強勢占據(jù)一席之地,和變分自編碼模型VAE二分天下的呢(這個‘天下’有點小,是深度學(xué)習(xí)生成模型的天下)。如果你愿意隨本文一起一層一層剝開它的心,你會發(fā)現(xiàn)你會訝異,原來傳說中的GANs并沒有那么深不可測,核心原理比雞兔同籠還淺顯(因為筆者已經(jīng)記不清雞兔同籠的解法了)。好,我們開始剝史上最智能的“洋蔥”!
圖1
監(jiān)督學(xué)習(xí)二人轉(zhuǎn):生成模型和判別模型
首先,嗯,剝開洋蔥第一層:什么是監(jiān)督學(xué)習(xí)?監(jiān)督學(xué)習(xí)就是有‘老師’帶領(lǐng)的學(xué)習(xí),學(xué)習(xí)目的很明確,無監(jiān)督學(xué)習(xí)就是沒有‘老師’帶領(lǐng)的學(xué)習(xí),學(xué)到什么算什么,這里的‘老師’指的就是學(xué)習(xí)數(shù)據(jù)的‘標(biāo)簽’(注意,這只是一個形象而不精準(zhǔn)的說法,后續(xù)的文章會專門針對監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)進行標(biāo)準(zhǔn)闡述,敬請期待)。
然后我們來了解監(jiān)督學(xué)習(xí)的一個重要的概念:生成模型和判別模型的區(qū)別。注意,這層洋蔥皮可能會讓部分同學(xué)眼部不適,隨后會給出眼藥水進行治愈。我們快速手起刀落,切開洋蔥,眼睛流淚的同學(xué)可以快速跳至解藥部分。首先假定我們已知數(shù)據(jù)X={x1,x2,x3,…,xn},這些數(shù)據(jù)可能是圖像、聲音、或已經(jīng)預(yù)提取的特征向量,數(shù)據(jù)對應(yīng)的標(biāo)簽Y={y1,y2,y3,…,yn},我們需要解決的問題是建立X與Y之間的概率映射關(guān)系。
* λ生成模型
生成模型并不直接針對條件概率分布P(Y|X)建模,而是將聯(lián)合概率分布P(X,Y)作為學(xué)習(xí)目標(biāo),進一步,條件概率可以基于聯(lián)合概率,通過概率公式來進行轉(zhuǎn)化計算,如下所示:
公式1
即
公式2
所以生成模型關(guān)注的是先計算出聯(lián)合概率分布,再計算條件概率分布。
* λ判別模型
判別模型相對簡單,直接將條件概率分布P(Y|X)作為學(xué)習(xí)目標(biāo),即對于給定的數(shù)據(jù)x,判別模型預(yù)測x屬于每種標(biāo)簽y的概率。與生成模型的一個明顯區(qū)別已經(jīng)呼之欲出,即判別模型不關(guān)心數(shù)據(jù)集X服從什么樣的實際概率分布,而是直接根據(jù)條件概率來學(xué)習(xí)決策函數(shù)Y=f(X)。
已然忘卻了概率論基礎(chǔ)概念的同學(xué)可能被第一層洋蔥辣得眼淚橫飛,眼藥水在此:
生成模型屬于統(tǒng)計學(xué)習(xí)范疇,從大量的數(shù)據(jù)中尋找真實分布規(guī)律;而判別模型只關(guān)心不同類型的數(shù)據(jù)的差別,利用差別來進行分類。
我們常見的機器學(xué)習(xí)的各種算法都可以按照該定義進行分類:
生成模型-樸素貝葉斯、隱馬爾可夫(em算法)
判別模型- k近鄰法、感知機、決策樹、邏輯回歸、線性回歸、最大熵模型、支持向量機(SVM)、提升方法、條件隨機場(CRF)
GANs之父的靈光一閃
長期以來,生成模型與判別模型各司其職,左右護法,在不同的領(lǐng)域各自精彩紛呈地高歌猛進。2014年,這兩兄弟開始了開啟時代的協(xié)作,Good Fellow將博弈論和對抗思想引入,讓生成器和判別器左右互搏,各自對抗進化,以此來生成更逼真的數(shù)據(jù)。
現(xiàn)在我們開始剝第二層洋蔥。GANs,全稱為Generative Adversarial Nets(生成對抗網(wǎng)絡(luò)),它包括了生成器(簡稱G)及判別器(簡稱D)兩個重要部分。
生成器G:
輸入為給定的隨機噪聲向量noise,輸出目標(biāo)是生成符合真實數(shù)據(jù)分布的樣本,如圖片、音頻、特征數(shù)據(jù)等等。
判別器 D:
目標(biāo)為判定輸入數(shù)據(jù)的真?zhèn)危举|(zhì)上是一個二值分類器,當(dāng)輸入為真實數(shù)據(jù)時,輸出為1,輸入為由 G 生成的假數(shù)據(jù)時,輸出為0。
當(dāng)訓(xùn)練過程開始以后,整個模型的優(yōu)化過程是一個“二元極小極大博弈(minimax two-player game)”的問題。G作為‘造假者’,會窮盡所能去學(xué)習(xí)真實數(shù)據(jù)的分布,并偽造出fake的數(shù)據(jù),希望能騙過D。博弈的另一端,D則希望不斷去學(xué)習(xí)真實數(shù)據(jù)和偽造數(shù)據(jù)的差異性,并以此提升自己的鑒別能力。理論上來說,博弈的最終結(jié)果會達到一種納什均衡,促使‘造假者’G生成逼真的假數(shù)據(jù)。
眼藥水又來了,把D想象成咱們的執(zhí)法打假部門,G就是莆田的非著名造鞋廠商,一開始不管是打假部門還是莆田造鞋廠自身能力都不足,一個分辨真?zhèn)吻蛐陌盐詹淮,一個也只具備極其稚嫩的仿冒技術(shù)。隨后,我們不斷給廠商展示阿迪|耐克|靠背|新平衡|喬丹的最新款式,讓廠商工人不斷優(yōu)化自己的仿冒技術(shù),打假部門自然就壓力巨大。為了緩解壓力,執(zhí)法部門連夜開會,不斷研究原版鞋與made in 莆田的區(qū)別,天亮后已經(jīng)具備將當(dāng)前造假廠商一鍋端的能力。廠商們不甘束手就擒,繼續(xù)研究新款式正版鞋制作工藝…… 如此循環(huán)往復(fù),執(zhí)法部門D的鑒假能力提升也迫使造假者G生產(chǎn)出更逼真的偽造鞋,最終莆田造學(xué)得了真鞋的精髓,泛濫成災(zāi)。
我們以原論文中的一幅圖為例來講解一下GANs偽造數(shù)據(jù)的能力是如何修煉出來的。
圖2
圖2中用藍色的虛線來表示D的判別能力,真實的數(shù)據(jù)樣本生成分布用黑色的虛線來表示,由G偽造的數(shù)據(jù)分布用綠色實線來表示。圖中下部則展示了從噪音采樣z經(jīng)過生成器G后映射到輸出x的關(guān)系變化過程。
GANs的目標(biāo)是讓生成器使用偽造的樣本分布(綠色實線)去模擬真實的樣本分布(黑色虛線),使兩條線盡量一致。
(1)在初始狀態(tài)(a),生成器產(chǎn)生的數(shù)據(jù)和真實數(shù)據(jù)分布相差非常大,同時,判別器也不能太穩(wěn)定工作對二者加以區(qū)分;
(2)在(b)中,首先我們鎖住生成器G,通過訓(xùn)練判別器D,使判別器能識別出未經(jīng)訓(xùn)練的生成器生成的偽造數(shù)據(jù)和真實數(shù)據(jù)的區(qū)別;
(3)在(c)中,我們訓(xùn)練生成器G,讓其具備欺騙當(dāng)前判別器的能力,生成的數(shù)據(jù)相比之前更逼近真實樣本分布;
(4)重復(fù)上述(2)(3)步,迭代n次后,從理論上我們可以達到(d)圖的狀態(tài),即生成的樣本分布能基本擬合真實的樣本數(shù)據(jù)分布,同時判別器對任意數(shù)據(jù)的判定概率均為0.5,即無法區(qū)分出是否是真實數(shù)據(jù)還是偽造數(shù)據(jù)。 與其說生成對抗網(wǎng)絡(luò)定義了一種網(wǎng)絡(luò),不如說定義了一種框架及思想。其中的G和D可以是卷積網(wǎng)絡(luò)CNN,可以是老牌生成器VAE,可以是時間序列相關(guān)模型RNN,也可以是莆田造鞋怪,這就使得不挑食的GANs的應(yīng)用相當(dāng)廣泛,在圖像,語音,文字等領(lǐng)域均有用武之地。
博弈游戲公式-loss損失函數(shù)
模型優(yōu)化當(dāng)然需要定義損失函數(shù),流量明星GANs也不例外。首先我們聚焦判別器D,本質(zhì)上它是一個分類器,對于分類器,我們很自然地可以聯(lián)想到常見的交叉熵損失函數(shù)。
公式3
其中Pi為真實的樣本分布,qi為G偽造的樣本分布。
同時,由于D實質(zhì)上只輸出{0,1}二分類,所以針對單個樣本,可以強行將函數(shù)展開成兩項:
公式4
基于此,對于N個樣本,損失函數(shù)為:
公式5
上式中的待鑒定數(shù)據(jù)Xi 在GANs模型中有兩個來源,一個來自真實的數(shù)據(jù)分布,我們記為,另一個來源是輸入一個噪聲z(z一般滿足某種已知常見分布,如正態(tài)分布),從生成器G中偽造出一個X,我們記為G(z),將兩個來源替換到上式中,得到GANs判定器損失函數(shù)的一般期望表達形式:
公式6
我們選擇了一條最容易理解,最不辣眼睛的方式推導(dǎo)了GANs判定器的損失函數(shù),而通常我們見到的GANs損失函數(shù)都是以如下形式呈現(xiàn)的:
公式7
這種形式的損失函數(shù)更能體現(xiàn)對抗的MinMax博弈過程,其中V(D,G)表示真實樣本與偽造樣本的差異程度,對于生成器G來說,希望盡量縮小這個差異(min),對于判別器D來說希望能盡量拉大這個差異(max),一強一弱,此消彼長地對模型進行迭代優(yōu)化。
總結(jié)
本文旨在將GANs的基礎(chǔ)概念和思想呈現(xiàn)在讀者眼前,從純理論方面驗證了GANs的超強擬合能力,對于GANs本身的學(xué)習(xí)和研究來說可謂是冰山一角,滄海一粟。GANs的天賦異能讓它在特定領(lǐng)域如魚得水,但自身的弱點缺陷也是觸目驚心,本文尚未涉及到更深層次的探討,精彩未完,敬請期待。
最后,附送一個冷知識,為什么我們通常在paper和文章中既能看到GANs,也能看到GAN,哪種寫法是對的?其實都對。GANs中的s指的是Nets,也就是把生成對抗網(wǎng)絡(luò)看做多個(至少有生成器和判別器兩個)模型,而寫作GAN的,是把整個生成對抗網(wǎng)絡(luò)視為一個模型了。
作者:青榴實驗室 來源:移動labs