判別器
判別器是 GAN 的「裁判」:給它看一張影像,它就判定那是真正的訓練影像,還是生成器造出的贗品。它是一個普通的影像分類器,但它真正的用途並非為分類而分類——而是為生成器製造學習訊號。每當它偵測到一個贗品,「是什麼讓這看起來像假的」之梯度就會傳回生成器,作為改進的指示。有好的判別器,才可能有好的生成器。
精確地說,判別器是一個函數 D,把影像 x 映射到 [0,1] 中的一個值,即 x 為真的估計機率;它以二元分類器的形式訓練,最大化「對真實 x 取期望值的 log D(x)」加上「對 z 取期望值的 log(1 − D(G(z)))」——也就是把 D(真) 推向 1、D(假) 推向 0。在架構上(依 DCGAN),它是一個使用 LeakyReLU 與正規化的步幅卷積 CNN,下採樣至單一 logit。對固定的生成器而言,最佳判別器為 D*(x) = p_data(x) / (p_data(x) + p_g(x))——它在每一點回報真實與生成的相對密度,而這正是生成器把 p_g 推向 p_data 所需的資訊。
兩個網路必須維持大致平衡。若判別器太強,它把 D(假) 推向 0,此時飽和的生成器損失沒有梯度、學習停滯;若太弱,它給出的訊號又缺乏資訊。讓它行為良好的技術包括:非飽和生成器損失、單邊標籤平滑(one-sided label smoothing)、頻譜正規化(限制判別器的 Lipschitz 常數),以及梯度懲罰。在 Wasserstein GAN 中,判別器被一個評論者(critic)取代,它輸出無界的實數分數(而非機率),用以估計推土機距離(Earth-Mover distance),並被約束為 1-Lipschitz。
判別器在訓練後通常會被丟棄——你只保留生成器。但它本身並非毫無用處:判別器的特徵可遷移到下游任務,它的分數可用來為樣本品質排序,而 PatchGAN 判別器(用於 pix2pix 與 CycleGAN)是在重疊的局部區塊、而非整張影像上評斷真實度,這能銳化紋理。