原 GAN(Goodfellow et al., 2014)的完整理論推導(dǎo)與 TensorFlow 實(shí)現(xiàn)請(qǐng)查看機(jī)器之心的 GitHub 項(xiàng)目與文章:GAN 完整理論推導(dǎo)與實(shí)現(xiàn)。下面,我們將為各位讀者介紹該綜述論文。 論文地址:https:///pdf/1710.07035.pdf 生成對(duì)抗網(wǎng)絡(luò)(GAN)提供了一種不需要大量標(biāo)注訓(xùn)練數(shù)據(jù)就能學(xué)習(xí)深度表征的方式。它們通過反向傳播算法分別更新兩個(gè)網(wǎng)絡(luò)以執(zhí)行競(jìng)爭(zhēng)性學(xué)習(xí)而達(dá)到訓(xùn)練目的。GAN 學(xué)習(xí)的表征可用于多種應(yīng)用,包括圖像合成、語義圖像編輯、風(fēng)格遷移、圖像超分辨率技術(shù)和分類。這篇論文的目的是為信號(hào)處理社區(qū)做一個(gè) GAN 的綜述。除了介紹訓(xùn)練和構(gòu)建 GAN 的不同方法以外,我們還討論了其理論和應(yīng)用中尚存在的挑戰(zhàn)。 1. 引言 生成器和判別器通常由包含卷積和(或)全連接層的多層網(wǎng)絡(luò)構(gòu)成。生成器和判別器必須是可微的,但并不必要是直接可逆的(理論分析上必須可逆)。如果生成網(wǎng)絡(luò)由某些表征空間映射得到,即映射一個(gè)隱空間到數(shù)據(jù)空間中(我們需要把注意力集中在圖像上),用更加形式化的表示為:G : G(z) → R^|x|,其中 z ∈ R^|z|是隱空間中的一個(gè)樣本,x ∈ R^|x|是一張圖像,| · |表示維數(shù)。 原始 GAN 的判別網(wǎng)絡(luò) D 可以看成是將圖像數(shù)據(jù)映射到(該圖像是來自真實(shí)數(shù)據(jù)分布,而不是生成器分布)判別概率的函數(shù) D : D(x) → (0, 1)。對(duì)于一個(gè)固定的生成器 G,判別器 D 可能被訓(xùn)練用于分辨圖像是來自訓(xùn)練數(shù)據(jù)(真,概率接近 1)還是來自生成器(假,概率接近 0)。若判別器已經(jīng)是最好的,它將變得無法被欺騙,而這時(shí)生成器 G 需要繼續(xù)訓(xùn)練以降低判別器的準(zhǔn)確率。如果生成器分布足以完美匹配真實(shí)數(shù)據(jù)分布,那么判別器將會(huì)被最大地迷惑而對(duì)所有輸入給出 0.5 的概率值。在實(shí)踐中,判別器可能無法訓(xùn)練到理想狀態(tài),我們將在第 4 節(jié)更深入地探索訓(xùn)練過程。 圖 1. 這張圖分別展示了 GAN 中的判別器 D 和生成器 G 的訓(xùn)練流程。通常利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),但實(shí)際上它們可以用任意形式的(將數(shù)據(jù)從一個(gè)空間映射到另一個(gè)的)可微系統(tǒng)實(shí)現(xiàn)。 3.GAN 架構(gòu) 圖 2. 在 GAN 的訓(xùn)練過程中,生成器可以生成一個(gè)樣本分布 p_g(x)以匹配真實(shí)數(shù)據(jù) p_data(x)。通過適當(dāng)參數(shù)化并訓(xùn)練 GAN,這些分布將變得難以區(qū)分。GAN 的表征分布可以通過生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的學(xué)習(xí)參數(shù)(權(quán)重)而構(gòu)建。 A. 全連接 GAN 首個(gè) GAN 架構(gòu)在生成器與鑒別器上皆使用全連接神經(jīng)網(wǎng)絡(luò)。這種架構(gòu)類型被應(yīng)用于相對(duì)簡(jiǎn)單的圖像數(shù)據(jù)庫,即 MNIST(手寫數(shù)字)、CIFAR-10(自然圖像)和多倫多人臉數(shù)據(jù)集(TFD)。 B. 卷積 GAN 因?yàn)?CNN 非常適合處理圖像數(shù)據(jù),所以從全連接到卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)自然的擴(kuò)展。早期在 CIFAR-10 上進(jìn)行的試驗(yàn)表明,用監(jiān)督學(xué)習(xí)相同水平和表征能力的 CNN 訓(xùn)練生成器和鑒別器網(wǎng)絡(luò)會(huì)更加困難。 通過使用多尺度分解生成過程的形式,拉普拉斯金字塔形對(duì)抗網(wǎng)絡(luò)(LAPGAN)[13] 為這一問題貢獻(xiàn)了一個(gè)方案:真值圖像本身被分解成拉普拉斯金字塔(Laplacian pyramid),并且條件性卷積 GAN 被訓(xùn)練在給定上一層的情況下生成每一層。 此外,Radford et al.[5](為「深度卷積 GAN」)提出了一種稱之為 DCGAN 的網(wǎng)絡(luò)架構(gòu)族,它允許訓(xùn)練一對(duì)深度卷積生成器和判別器網(wǎng)絡(luò)。DCGAN 在訓(xùn)練中使用帶步長(zhǎng)的卷積(strided convolution)和小步長(zhǎng)卷積(fractionally-strided convolution),并在訓(xùn)練中學(xué)習(xí)空間下采樣和上采樣算子。這些算子處理采樣率和位置的變化,這是圖像空間到低維潛在空間、從圖像空間到判別器映射的重要要求。Section IV-B 將詳細(xì)介紹 DCGAN 架構(gòu)和訓(xùn)練。 作為 2D 圖像合成的擴(kuò)展,Wu et al. [14] 展示了使用體積卷積(volumetric convolution)合成 3D 數(shù)據(jù)樣本的 GAN。Wu et al. [14] 合成包括新物體,如椅子、桌子和汽車;此外,他們還展示了一種從 2D 圖像映射到 3D 圖像的方法。 C. 條件 GAN Mirza 等人通過將生成器和判別器改造成條件類(class-conditional)而將(2D)GAN 框架擴(kuò)展成條件設(shè)置。條件 GNN 的優(yōu)勢(shì)在于可以對(duì)多形式的數(shù)據(jù)生成提供更好的表征。條件 GAN 和 InfoGAN[16] 是平行的,它可以將噪聲源分解為不可壓縮源和一個(gè)「隱編碼」(latent code),并可以通過最大化隱編碼和生成器之間的交互信息而發(fā)現(xiàn)變化的隱藏因子。這個(gè)隱編碼可用于在完全無監(jiān)督的數(shù)據(jù)中發(fā)現(xiàn)目標(biāo)類,即使這個(gè)隱編碼是不明確的。由 InfoGAN 學(xué)到的表征看起來像是具備語義特征的,可以處理圖貌中的復(fù)雜糾纏因素(包括姿勢(shì)變化、光照和面部圖像的情緒內(nèi)容)。 D.GAN 推斷模型 GAN 的初始形式無法將給定的輸入 x 映射為隱空間中的向量(在 GAN 的文獻(xiàn)中,這通常被稱為一種推斷機(jī)制)。人們提出了幾種反轉(zhuǎn)預(yù)訓(xùn)練 GAN 的生成器的技術(shù),比如各自獨(dú)立提出的對(duì)抗性學(xué)習(xí)推斷(Adversarially Learned Inference,ALI)和雙向 GAN(Bidirectional GANs),它們能提供簡(jiǎn)單而有效的擴(kuò)展,通過加入一個(gè)推斷網(wǎng)絡(luò),使判別器共同測(cè)試數(shù)據(jù)空間和隱空間。 這種形式下的生成器由兩個(gè)網(wǎng)絡(luò)組成:即編碼器(推斷網(wǎng)絡(luò))和解碼器。它們同時(shí)被訓(xùn)練用于欺騙判別器。而判別器將接收到一個(gè)向量對(duì)(x,z)(見圖 4 所示),并決定其是否包含一個(gè)真實(shí)圖像以及其編碼,或者一個(gè)生成的圖像樣本以及相關(guān)的生成器的隱空間輸入。 理想情況下,在一個(gè)編碼-解碼模型中的輸出(作為輸入的重構(gòu))應(yīng)該和輸入相似。通常情況下,使用 ALI/BiGAN 合成的重構(gòu)數(shù)據(jù)樣本的保真度都很低。通過額外添加(數(shù)據(jù)樣本和它們的重構(gòu)的)對(duì)抗代價(jià)函數(shù)可以提高樣本的保真度。 E. 對(duì)抗自編碼器(AAE) 自編碼器是由編碼器和解碼器組成的網(wǎng)絡(luò),學(xué)習(xí)將數(shù)據(jù)映射到內(nèi)部隱表征中,再映射出來,即從數(shù)據(jù)空間中學(xué)習(xí)將圖像(或其它)通過編碼映射到隱空間中,再通過解碼從隱空間映射回?cái)?shù)據(jù)空間。這兩個(gè)映射形成了一種重構(gòu)運(yùn)算,而這兩個(gè)映射將被訓(xùn)練直到重構(gòu)圖像盡可能的接近初始圖像。 圖 3. 圖左,條件 GAN(Conditional GAN),由 Mirza 等人提出,可以根據(jù)條件(class-condition)合成圖像;判別器根據(jù)條件類判定圖像為真或假。圖右,InfoGAN,其判別器還可以估計(jì)類別標(biāo)簽。 圖 4. ALI/BiGAN 的結(jié)構(gòu),由三個(gè)網(wǎng)絡(luò)構(gòu)成。其中一個(gè)是判別器,還有一個(gè)網(wǎng)絡(luò)將噪聲向量從隱空間映射到圖像空間(解碼器,以 G 表示),最后一個(gè)網(wǎng)絡(luò)(編碼器,以 E 表示)將真實(shí)圖像從圖像空間映射到隱空間。 4. 訓(xùn)練 GAN A. 引言 GAN 的訓(xùn)練目標(biāo)是獲得令判別器分類準(zhǔn)確率最大化的參數(shù),以及獲得最大化欺騙判別器的生成器參數(shù)。訓(xùn)練過程已在圖 5 中總結(jié)。 訓(xùn)練的代價(jià)由一個(gè)價(jià)值函數(shù) V(G,D) 評(píng)估,其包含了生成器和判別器的參數(shù)。 訓(xùn)練過程可表示如下: 訓(xùn)練過程中,其中一個(gè)模型的參數(shù)被更新,同時(shí)另一個(gè)模型的參數(shù)固定不變。Goodfellow 等人證明對(duì)于一個(gè)固定的生成器存在唯一的最優(yōu)判別器 D? (x) = p_data(x) /(p_data(x)+p_g(x))。他們還證明了生成器 G 在 pg(x) = pdata(x) 的時(shí)候是最優(yōu)的,這等價(jià)于最優(yōu)判別器對(duì)所有的樣本 x 都給出 0.5 的概率值。換個(gè)說法就是當(dāng)判別器 D 被最大化迷惑而無法區(qū)分真假樣本的時(shí)候,生成器 G 是最優(yōu)的。 理想情況下,判別器將被訓(xùn)練到對(duì)當(dāng)前生成器為最優(yōu);然后生成器再次被更新。然而實(shí)際情況下,判別器可能無法訓(xùn)練到最優(yōu),因此常用的策略是,判別器只會(huì)經(jīng)過少量的迭代訓(xùn)練,而且生成器和判別器同步更新。此外,生成器通常使用一種交替的、非飽和的訓(xùn)練規(guī)范,即使用 max_G log D(G(z)),而不使用 min_G log(1 ? D(G(z)))。 盡管理論上存在唯一的解,GAN 的訓(xùn)練還是存在著挑戰(zhàn),經(jīng)常出現(xiàn)不穩(wěn)定的狀況,原因有好幾個(gè)。一種提升 GAN 訓(xùn)練效率的辦法是追蹤訓(xùn)練過程中可能遇到的經(jīng)驗(yàn)癥狀,這包括:
圖 5. GAN 訓(xùn)練的主要循環(huán)。新型數(shù)據(jù)樣本 x' 可以通過傳遞隨機(jī)樣本得出,z 為抽取的隨機(jī)噪聲并作為生成器網(wǎng)絡(luò)的輸入。生成器更新一次之前,判別器可能需要更新 k 次。 B. 訓(xùn)練技巧 用于圖像生成的 GAN 訓(xùn)練的第一個(gè)重大改進(jìn)是 Radford et al. [5] 提出的 DCGAN 架構(gòu)。該研究是計(jì)算機(jī)視覺領(lǐng)域之前使用的 CNN 架構(gòu)的進(jìn)一步探索,并且?guī)砹艘幌盗袠?gòu)建和訓(xùn)練生成器、判別器的準(zhǔn)則。在 Section III-B 中,我們提到帶步長(zhǎng)的卷積和小步長(zhǎng)卷積的重要性 [27],它們是架構(gòu)設(shè)計(jì)的重要組件。這允許生成器和判別器學(xué)習(xí)優(yōu)秀的上采樣和下采樣操作,這些操作可能提升圖像合成的質(zhì)量。具體到訓(xùn)練中,研究者推薦在兩種網(wǎng)絡(luò)中使用批量歸一化 [28],以穩(wěn)定深層模型中的訓(xùn)練。另一個(gè)建議是最小化用于提升深層模型訓(xùn)練可行性的全連接層的數(shù)量。最后,Radford et al. [5] 認(rèn)為在判別器中間層使用 leaky ReLU 激活函數(shù)的性能優(yōu)于使用常規(guī)的 ReLU 函數(shù)。 Salimans et al. [25] 進(jìn)一步提出穩(wěn)定 GAN 訓(xùn)練的啟發(fā)式方法。首先,特征匹配稍稍改變生成器的目標(biāo),以增加可獲取的信息量。具體來說,判別器仍然需要訓(xùn)練來區(qū)分真樣本和假樣本,但是生成器的訓(xùn)練目標(biāo)是匹配判別器中假樣本和真樣本的期望中間激活值(特征)。第二,小批量判別(mini-batch discrimination)向判別器額外添加輸入,該特征對(duì)小批量中的給定樣本和其他樣本的距離進(jìn)行編碼。目的在于防止模式崩潰(mode collapse),因?yàn)榕袆e器能夠輕易判斷生成器是否生成同樣的輸出。 第三個(gè)啟發(fā)式技巧是啟發(fā)式平均(heuristic averaging),如果網(wǎng)絡(luò)參數(shù)偏離之前值的運(yùn)行平均值,則會(huì)受到懲罰,這有助于收斂到平衡態(tài)。第四個(gè)技巧是虛擬批量歸一化(virtual batch normalization),它可減少小批量?jī)?nèi)樣本對(duì)其他樣本的依賴性,方法是使用訓(xùn)練開始就確定的固定參考小批量(reference mini-batch)樣本計(jì)算歸一化的批量統(tǒng)計(jì)(batch statistics)。 最后,單邊標(biāo)簽平滑(one-sided label smoothing)將判別器的目標(biāo)從 1 替換為 0.9,使判別器的分類邊界變得平滑,從而阻止判別器過于自信,為生成器提供較差的梯度。S?nderby et al. [29] 改進(jìn)了這個(gè)想法,他在將樣本饋送至判別器之前向樣本中添加噪聲來挑戰(zhàn)判別器。S?nderby et al. [29] 認(rèn)為單邊標(biāo)簽平滑偏向最佳判別器,而他們的技術(shù)——樣本噪聲(instance noise)使真樣本和假樣本的流形(manifold)更加接近,同時(shí)防止判別器輕易找到完全分離真假樣本的判別器邊界。該技巧在實(shí)踐中可以通過向合成圖像和真實(shí)圖像中添加高斯噪聲來實(shí)現(xiàn),使標(biāo)準(zhǔn)差隨著時(shí)間逐漸減小。后來 Arjovsky et al. [26] 把向數(shù)據(jù)樣本添加噪聲來穩(wěn)定訓(xùn)練的過程形式化。 C. 成本函數(shù)的修正 1)GAN 成本函數(shù)的泛化:Nowozin et al. [30] 認(rèn)為 GAN 訓(xùn)練可以泛化至不僅最小化 JS 散度(Jensen-Shannon divergence),同時(shí)還最小化 f 散度的估計(jì)值。這些可以稱為 f-GAN。 2)防止梯度消失的其他成本函數(shù):Arjovsky et al. [32] 提出 WGAN,一種帶有其他成本函數(shù)的 GAN 網(wǎng)絡(luò),該函數(shù)從近似 Wasserstein 距離中推導(dǎo)出。 7. 討論 A. 開放性問題 1)Mode Collapse:如第四章所述,GAN 的普遍問題是生成器崩潰(generator collapsing),只能輸出一小類類似樣本(部分崩潰),最壞的情況是僅能生成一個(gè)簡(jiǎn)單樣本(完全崩潰)[26], [48]。 2)訓(xùn)練不穩(wěn)定——鞍點(diǎn):在 GAN 中,損失函數(shù)的海森矩陣(Hessian)變得非正定。因此,二階矩陣非正定只能找到一個(gè)鞍點(diǎn)而不是局部極小值。 B. 結(jié)論 對(duì) GAN 的研究興趣不只是因?yàn)樗鼈兛梢詮臐撛诳臻g和數(shù)據(jù)空間之間的映射和逆映射中學(xué)習(xí)深度、高度非線性的映射,還因?yàn)樗鼈兛梢岳么罅糠菢?biāo)注圖像數(shù)據(jù),這種操作類似深度表征學(xué)習(xí)。在 GAN 訓(xùn)練中,存在很多理論和算法的發(fā)展機(jī)會(huì)。有了深度網(wǎng)絡(luò)的幫助,新應(yīng)用存在大量機(jī)會(huì)。 本文為機(jī)器之心編譯,轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)。 ?------------------------------------------------ |
|