在上一篇中咱們給你們介紹了GAN的相關原理和推導,GAN是VAE的後一半,再加上一個鑑別網絡。這樣而致使了徹底不一樣的訓練方式。算法
GAN,生成對抗網絡,主要有兩部分構成:生成器,判別器。網絡
生成器網絡的主要工做是負責生成樣本數據,輸入的是高斯白噪聲z,輸出的是樣本數據向量x:函數
判別器網絡的主要工做是負責檢測樣本的數據增長,輸入真實或者生成的樣本數據,輸出樣本的標籤:學習
因爲生成器和判別器都是須要通過網絡進行訓練的,因此二者都要可以微分。優化
生成對抗網絡的工做方式是讓第一代的G產生一些圖片,而後把這些圖片和一些真實的圖片丟到第一代的D裏面去學習,讓第一代的D可以分別生成的圖像和真實的圖片。在訓練第二代的G,第二代的G產生的圖片,可以騙過第一代的D,在訓練第二代的D,依次迭代。spa
那麼,問題就來了,如何訓練新一代的G來騙過上一代的D呢?3d
咱們能夠把新一代的G和上一代的D連起來造成一個新的NN,咱們訓練最終的輸出接近1,而後咱們那中間的結果當作咱們新的圖片的輸出。blog
優化函數圖片
生成器G固定以後,使用來評價Pdata和Pz之間的差別。優化方式,對於生成器優化而言,咱們要最小化價值函數,對於判別器而言,咱們要優化最大價值函數,不斷的交替進行以後,可以達到有個平衡點,稱之爲納什均衡點。監控
生成器最小化目標即爲判別器將生成數據識別爲假的機率的log值,對於上述提到的均衡點,它是判別代價函數的鞍點。
對於GAN的訓練算法,步驟以下:
a、執行D-step的minibatch優化k次:
1.從先驗分佈p(z)隨機生成m個隨機噪聲向量z
2.從數據集分佈p(x)裏隨機獲取m個樣本x
3.使用隨機梯度上升優化判別器的代價函數
b.執行G-step的minibatch優化1次:
1.從先驗分佈p(z)隨機生成m個隨機噪聲向量z
2.使用梯度降低優化生成器的代價函數
咱們能夠經過下面的曲線進一步理解訓練過程:
其中,綠線爲生成器的數據分佈,黑線爲真實數據的分佈,藍線爲判別器的結果分佈。
GAN的問題:
GAN的訓練比較困難,主要存在收斂難,很難達到納什均衡點,而且沒法有效監控收斂狀態,另外一方面,模型容易崩潰,判別器快速達到最優,能力明顯強於生成器,生成器將數據集中生成在判別器最承認的空間上,即輸出多樣性低,不使用於離散輸出(不可微分)。