GAN網絡的理解

工作中會用到GAN網絡,現將其基本思路總結如下。
GAN網絡的核心思想
GAN的核心思想在於對抗,有兩部分模型構成,分別是生成模型(generator model)和判別模型(discriminator model)。生成模型用於生成一個逼真的樣本,判別模型用於判斷模型的輸入是真是假。通俗來講,就是生成模型要不斷提升自己的造假本領,最終達到騙過判別模型的目的。而判別模型則不斷提升自己的判別能力,達到辨別真假的目的,這也就形成了對抗。
生成模型和判別模型處於一個矛盾的關係,那麼對抗的結果究竟是什麼,這個要取決於我們的目的是什麼,比如說,我們的目的是生成逼真的人臉圖像,那麼自然就設計生成網絡博弈獲勝了。
GAN是如何實現的:
在理解GAN網絡的一些基本思想後,我們應該如何根據這一思想去設計實現GAN呢?
首先,我們有兩個網絡模型,生成網絡與判別網絡,這兩個網絡是相對獨立的,我們要找到的,是如何實現這個博弈的過程,也就是如何對模型進行訓練。我們採用的大方法叫做單獨交替迭代訓練
單獨交替迭代訓練
1.首先,我們有一個簡單的生成網絡模型(當然未訓練時效果很差),那麼我們給這個模型一個隨機的輸入,便會輸出得到一個假的樣本集,而真的樣本集我們本身就有,所以我們得到了真假數據集。
2.在得到真假數據集之後,我們開始對判別模型進行訓練,訓練過程就是一個有監督的二分類問題,即給定一個樣本,能判斷出其是真實存在的(真樣本),還是利用生成網絡生成的(假樣本)。
3.在完成判定模型的訓練之後,我們要提升生成模型的造假能力,我們將生成網絡與訓練好的判定網絡串接,我們的目標是生成可以迷惑判定模型的圖像,所以我們給生成網絡一個隨機輸入,損失函數是判定網絡的輸出是否爲真(是否達到迷惑的效果),根據損失函數,對生成網絡的參數進行更新,(注意:這裏判定網絡的參數是不改變的,因爲判定網絡是用來評價生成網絡的造假能力,計算損失的)
4.完成生成網絡的訓練之後,再次給定隨機輸入,得到新的假的數據集,將最新得到真假樣本輸入給判定網絡進行訓練,從而完成對判定網絡的再一次訓練。
5.不斷重複上述過程,直到滿足設計者設定的訓練次數。











GAN網絡的損失函數
在上篇文章中,我們對GAN網路進行了通俗的理解,這篇文章將進一步分析GAN網絡論文鼻祖Generative Adversarial Net中提到的損失函數,話不多說,直接上公式:
在這裏插入圖片描述
這個公式看似複雜,其實只要我們理解了GAN的博弈過程,就可以很清楚的瞭解這個公式的含義了,我們直到,GAN是單獨交替迭代訓練的,所以這個目標函數也是分別對判別器和生成器進行優化的,首先對判別器進行優化,表達形式如下:
在這裏插入圖片描述其中D(X)表示對真實的樣本進行判別,這裏,我們希望它的判別結果越接近於1越好,所以損失函數爲log(D(x)),而z是隨機的輸入,G(z)表示生成的樣本,對於生成的樣本,我們希望判別器的判別結果D(G(z))越接近於0越好,也就是讓總數值最大,所以總體表達形式如上所示。



在這裏插入圖片描述

在完成對判別模型的優化之後,便是對生成模型進行優化,在這裏,生成模型的優化很簡單,只需要讓判別的結果D(G(z))接近於1就可以了,也就是讓總數值最小。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章