專欄文章

生成對抗網路原理

  • 生成對抗網路(Generative Adversarial Networks, GAN)是一個很有趣的機器 學習方法,它用來訓練一個可以產生資料的模型。
     
  • 為什麼要瞭解 GAN?
    圖 1 我們來舉一個生活案例:合成鑽與天然鑽的關係就是一種生成網路對抗關係。
     

 圖1. 合成鑽石(右)與天然鑽石(左)
 

要如何製造一台好的鑽石製造機?首先,你需要一位好的鑑定師來制定檢驗標準,然後利用製造機生成大量的合成鑽石來企圖通過鑑定師的檢驗,這樣代表一台好的製造機已製成完成,如下圖2:

 

圖2. 合成與天然鑽檢驗架構圖

 

上圖2中的上半部是礦場開採出的天然鑽石,下半部是製造機產出的合成鑽石,任何一個鑽石都會交付給鑑定師檢驗,結果會分成兩種:真(Real:1)與假(Fake:0)。

 

製造機產出合成鑽石的過程中,首先會給予製造機的參數,為了要讓產出的合成鑽石更逼真,會給予不同的雜訊來微調製造機的參數,然後由製造機合成鑽石,再由鑑定師檢驗,如果檢驗沒通過就要重新設定製造機的參數,直到鑑定師認可為止。如果將合成鑽石的比喻對應到生成對抗網路(GAN),你會發現背後的思維也是如此,在生成網路會有生成器(Generator, G)和判別器(Discriminator, D),生成器與判別器彼此之間是博弈關係,如下圖3

 

  • 生成器:生成假資料,使其看起來和真資料一樣。
  • 判別器:盡可能檢驗出假資料。
     

圖3. 生成器與判別器彼此之間是博弈關係

 

  • 𝒙 : 資料,例:天然鑽石
  • z : 雜訊,例:輸入製造機的微調訊號。
  • : 生成器,用於製造假資料的函數,希望產出的假資料越接近真資料越 好,例如:鑽石製造機。
  • : 判別器,判斷資料是否為真的函數,例如:鑽石鑑定師。
  • G(z): 生成資料(假資料),代入不同的雜訊(z)會產生不同的資料,例:合成鑽石。
  • D(𝒙): 真資料判別結果,輸出為 0~1 之是的機率值,越強則 D(𝒙越大,值會接近於 1.0,若 D(𝒙) = 0.9,代表認為這一筆資料是真資料,若 為 0.1 則比較像假資料
  • D(G(z))假資料判別結果,值越大代表這台鑽石製造機可以產出與天 然鑽石一樣的合成鑽石。

 

當我們理解了生成對抗網路的架構後,就可以來討論目標函數的內容了!因 為生成對抗網路的目標函數會用到期望值,我們來複習一下何謂期望值,如下表。

 

  • 假設今天自錢袋中隨機抽一枚硬幣的面額期望值是多少?
    解:期望值可被視為加權平均數,一枚硬幣的面額期望值會被計算如下:
     0.3 * 5 + 0.4 * 10 + 0.1 * 20 + 0.2 * 50 = 1.5 + 4 + 2 + 10 = 17.5
    17.5代表抽取一枚硬幣平均面額是 17.5元,也就是「平均會出現的硬幣面額」。
     
  • 期望值可以理解為加權平均數,生成對抗網路的目標函數就是利用期望值來計算真實資料與生成資料之間的差距,公式(1)如下所示:

 

  

公式(1)說明

  • 真實資料的機率分布。
    • 例:假設一顆天然鑽石 x 輸入到  後得到一個機率值 0.3,記做:(x)=0.3,代表這顆天然鑽石在實際生活中出現的機率是0.3。
  • 生成資料的機率分布
    • 當我們隨機加入雜訊 z 到製造機 後得到一個機率值 0.25,記做(z)= 0.25,代表這顆合成質石的產出機率是0.25
  •  真實資料的期望值
    • 其定義: = 定義成期望值的原因是有些資料常出現,而有些資料不常出現,故用「平均會出現的資料」來做代表。
  • 其定義為: =
  •  鑑別度
    • 一個判別器對於真資料判別結果  與 假資料判別結果  之間的鑑別度,當這兩種資料被視為一致,此值就會很小,反之差異越大則數值越大。
  •  最佳判別器
    • 底下的代表「不斷調整」,也就是透過調整判別器的參數()而產生各種能力的判別器。因為鑑別度可以衡量判別器的能力,所以在各種能力的判別器中具備最大鑑別度的判別器就是最佳的判別器。
  • 最佳生成器
    • 底下的代表不斷調整,也就是透過調整生成器參數()來建立多種生成器。當最佳判別器被給定之後,我們會將各種生成器產生的假資料給這個判別器,能使假資料鑑別度最小的成生器就是最佳生成器 

 

最佳生成器就是整個目標函數的所求,其物理意義就是能夠產出最逼真的假資料之生成器。目標函數的執行是一個來回調整參數的過程,它會不斷重複以下步驟

固定G → 變動D → 計算鑑別度 → 選擇「最大」的D

固定D → 變動G → 計算鑑別度 → 選擇「最小」的G

固定G → 變動D → 計算鑑別度 → 選擇「最大」的D

如此反覆…


製造與鑑定是一場博奕的過程,如果鑑定師()無法很好的分辨天然與合成鑽石,那麼代表鑑定師()需要更精進自己的審查能力,也就是調整()。

反之如果製造出的鑽石很容易被檢定為合成鑽石,那麼工廠就需要調整製造機的參數(),讓製造出的合成鑽石能夠騙過鑑定師的審查。

這個博弈的過程不斷重複執行到最後,就會得到一位經驗豐富的鑑定師()與做工精良的製造機()。

 

  • 接下來我們將舉一個計算實例:

鑽石淨潔程度越高的鑽石缺陷特徵越少,售價越高。我們將鑽石分成兩種等級:高級與次級,其中高級代表缺陷特徵的數量小於或等於5,而缺陷特徵數量大於5的鑽石為次級。

定義好鑑定標準後我們就可以開始訓練鑽石製造機,在市場中隨機取得三個天然鑽石 ~,假設分成兩種等級:

  • 高級天然鑽石
  • 次級天然鑽石 


然後開始進入來回調整的參數過程。

  • 第一輪調整(固定變動
  • 固定
    • 一開始先固定製造機()的參數,然後開始生產出三顆合成鑽石,這三顆鑽石大略分成兩個等級:高級與次級,我們假設這兩種合成鑽石在製造時給予的雜訊z分別為 (高級)與~ (次級)形成高級合成鑽石 )與次級合成鑽石G()~ G()。
  • 變動D:
    • 在本階段中,我們開始訓練鑑定師的鑑定能力(參數),每訓練一次這會產生不同的鑑定效果,我們這邊只訓練兩次。

 

假設我們聘請兩位不同標準的鑑定師  ,而鑽石的出現機率與正確鑑定的機率分別如下表:


  •   
  • 算鑑別度: 

                          

                           

  • 算鑑別度:
      
                                                 
  • 擇「最大」的
    • 因為是負數,所以 -0.648 > -1.1,使用 > ,故擇  做為新的鑑定師。
      • (換句話說, 對於鑽石的鑑別度比 更高,代表 辨別天然鑽石與合成鑽石的能力比較好。)

 

  • 第二輪調整(固定D變動G
    • 固定D:
      • 因為我們在上一輪中選擇  做為新的鑑定標準,所以會沿用對於天然鑽石的鑑定結果做為計算鑑別度的基礎。
      • 在本階段中,我們開始調整製造機的參數,每調整一次就會產生不同的製造效果,為了解說方便我們只調整兩次,並產生兩種不同標準的製造機   ,然後各自生產出三顆合成鑽石,這三顆鑽石沿用之前的假設,依然分兩種等級:高級與次級,所級的雜訊別分別為   (高級)與 ~  (次級)。

  • 算鑑別度: 

    •                    
                           

  • 算鑑別度: 

    •                      
                           

  • 擇「最小」的
    • 因為是負數,所以 -1.892 <  -1.202,使用  < ,故擇 做為新的製造機。
      • 直觀上說所產生之合成鑽石經過後鑑別度小,代表能夠以假亂真。
    • 接下來的步驟又會回到與第一輪一致的執行內容,假設我們只有兩輪而不再繼續,那麼最終我們會以的來做為鑽石製造機,它所產生的合成鑽石最能通過鑑別師的檢驗,進而逼近天然鑽石。

以上就是我們GAN的原理博弈過程,直到收斂為止,這就是我們生成資料的技術,是不是很神奇呢!

 

參考文獻

  • 選擇的能力 – 探索人工智慧的核心 陳永維 李厚均 著  TKB
  • 台大李宏毅教授 – 機器學習課程

 

撰文者:政大人工智慧與數位教育中心   黃啟賢研究員