iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

生成對抗網路 (GAN)

前言

昨天出現小插曲~ 今天要來介紹生成對抗網路囉~

什麼是生成對抗網路

首先老樣子,我們先來認識甚麼是生成對抗網路(Generative Adversarial Network, GAN),是一種由深度學習模型組成的架構,由2014年Ian Goodfellow等人提出。GAN的核心思想是利用兩個神經網路相互競爭,以達到生成與判別的效果。這兩個網路分別是:

  1. 生成器(Generator):生成器的目的是從隨機雜訊中生成與真實數據類似的假數據。它嘗試學習真實數據的分佈,以便能夠生成高品質的假數據。生成器在訓練過程中不斷改進,以便能夠騙過判別器。

    隨機雜訊(Random Noise)在生成對抗網路(GAN)的上下文中,通常指的是生成器輸入的一組隨機數據,它是生成器創造假數據的起點。這些隨機數據可以被視為“靈感”或“初始素材”,生成器將根據這些隨機噪聲進行數據生成。

  2. 判別器(Discriminator):判別器的目的是區分真實數據和生成器生成的假數據。它的任務是識別出來一個數據是來自真實的數據集,還是來自生成器。隨著生成器生成的數據越來越逼真,判別器也需要不斷提高辨識能力。

用另一個更直觀的描述方法來說,它的核心思想可以想像成一場「畫家」與「鑑賞家」的對決。
舉個例子:

  1. 生成器(Generator):
    就像是一位偽造藝術品的畫家,生成器的工作是從一個隨機的想法(隨機雜訊)出發,創造出一幅接近真品的畫作。這位畫家一開始對於如何模仿真品的技巧還不成熟,畫出來的畫跟真品差距很大。但他不斷地根據鑑賞家的反饋改進自己的作品,目標就是讓自己的畫作看起來越來越像真的一樣。
  2. 判別器(Discriminator):
    這時候,我們還有一位專業的藝術品鑑賞家,判別器的任務是要分辨這些藝術品到底是真品還是假貨。他一開始或許能輕鬆地區分出來哪幅畫是假的,但隨著畫家技巧的進步,這個鑑賞家也需要更加仔細地進行辨別。

兩者就像進行了一場不斷升級的對抗賽,畫家試圖創作出完美的假畫,而鑑賞家則想提高鑑別能力,不讓假畫通過。GAN 的訓練過程就是這樣一個不斷競爭的過程:生成器(畫家)越來越擅長製造假數據,而判別器(鑑賞家)則越來越能夠分辨真假數據。
當訓練達到一定階段,理想狀態下,畫家的畫作變得如此逼真,以至於鑑賞家也無法分辨,此時生成器成功地生成出與真實數據無法區別的假數據,而這就是生成對抗網路的終極目標。

生成對抗網路的工作原理

在了解了生成器(畫家)和判別器(鑑賞家)之後,接下來我們來看看生成對抗網路(GAN)的工作原理,這個過程可以繼續用畫家和鑑賞家的比喻來說明。

  1. 生成器接收隨機雜訊
    GAN 的訓練開始時,**生成器(畫家)**接收到一個隨機雜訊,這個隨機雜訊可以看作是畫家腦海中的隨機靈感。生成器根據這些隨機雜訊,試圖創作出一幅「假」畫,這幅畫要盡可能模仿真實世界的藝術品。

  2. 判別器接收數據進行分類
    同時,**判別器(鑑賞家)**會收到兩類數據:一部分是真實數據集中的數據(比如一些真實的藝術作品),另一部分是生成器創造的假數據(假畫)。判別器的任務是對這些數據進行分類,判斷哪一幅是真實的,哪一幅是假的。

  3. 訓練的對抗過程

  • 在訓練過程中,生成器和判別器彼此之間進行對抗,這個過程又可以分為兩個步驟:
    • 判別器的訓練:在這個步驟中,判別器學習如何更好地區分真實數據和生成器生成的假數據。換句話說,鑑賞家在不斷接受訓練,提升自己的鑑別能力。當判別器能夠更準確地分辨真假時,它的判斷結果會用來更新其內部參數,讓它的分辨能力更強。
    • 生成器的訓練:接著,生成器則根據判別器的反饋進行改進。假如判別器能輕鬆識破它的作品是假的,生成器就會調整它的策略,試圖生成更加逼真的假數據來騙過判別器。這就好比畫家不斷提高自己的技術,試圖畫出能夠蒙混過關的藝術品。
  1. 損失函數的更新
  • GAN 的訓練過程依賴於雙方的損失函數:

    • 判別器的損失函數:判別器的損失函數用來衡量它是否能夠正確區分真實數據和假數據。如果判別錯誤,它的損失會變大,這促使它在下一輪中更好地分辨。
    • 生成器的損失函數:生成器的損失函數與判別器相反,它希望判別器錯誤地將假數據判斷為真實數據,這樣生成器的損失就會降低。生成器會根據這個損失來進行優化,生成更加逼真的假數據。
  1. 不斷迭代,達到平衡
    隨著訓練的不斷進行,生成器和判別器之間會形成一個博弈過程。畫家的技巧越來越高明,最終創作出的作品逼真到幾乎無法分辨;而鑑賞家則努力不被騙過,判別的能力也越來越精準。最終,這個對抗過程會達到一個平衡點,在這個平衡點上,判別器無法再有效區分生成器生成的數據和真實數據,這時生成器的數據已經與真實數據相當。

GAN的應用

生成對抗網路(GAN)在很多領域中有很大的潛力,下面我舉例幾個應用:

  1. 圖像生成
    • 人臉生成:GAN可以用來生成虛構的人臉,例如使用StyleGAN模型可以生成非常逼真的人臉圖像,而這些圖像在現實中並不存在。
    • 藝術風格轉換:如CycleGAN可以將一種風格的圖像轉換為另一種風格。例如,將照片轉換為油畫風格或將白天的風景轉換為夜晚的風景。
      image
  2. 圖像修復
    • 缺失部分填補:GAN可以用來修復損壞的圖像或填補圖像中的缺失部分,這通常被稱為圖像修復(Image Inpainting)。比如,填補老照片中的刮痕或損壞區域。
    • 超分辨率:透過GAN,低解析度的圖像可以被升級為高解析度圖像,這稱為超解析度成像(Super Resolution)

挑戰

看起來生成對抗網路(GAN)是不是很厲害呢?雖然在生成數據方面表現出色,但在訓練過程中卻面臨著幾個挑戰。

  1. Mode Collapse
    Mode Collapse 是GAN訓練過程中最常見的問題之一。當生成器僅能生成有限數量的樣本,但是卻忽略了數據集的多樣性時,便會發生Mode Collapse。這使得生成器的能力受到限制,無法充分利用數據集中的所有可能性。舉例來說,若生成器專注於生成一種特定風格的圖像,那麼它可能就會不斷生成相同的圖像,而無法創造出多樣化的結果。

  2. 不穩定的訓練過程
    GAN的訓練過程有時候會顯得不穩定,這主要是因為生成器和判別器之間的競爭可能失去平衡。當判別器過於強大時,生成器就無法學習到有用的信息,反之亦然。這樣的結果會導致訓練無法有效收斂。

結語

今天的介紹就到這邊囉,如果這幾天有時間的話,我會再想辦法生出實作來跟大家分享~


上一篇
[Day 21] 數字辨識實戰:使用MNIST模型識別數字
下一篇
[Day 23] 自然語言處理 NLP
系列文
深度學習的學習之旅:從理論到實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言