簡介#
生成式 AI 的主要應用之一,就是生成逼真的人臉影像。這項技術在娛樂、行銷和虛擬實境等領域有廣泛的應用場景。本章將探討人臉生成背後的核心技術。
![Figure 1: Realistic faces generated by StyleGAN2 [1]](figure-7-1-24AIFKRL.png)
釐清需求#
以下是候選人與面試官之間的典型對話:
候選人:人臉生成系統的主要用途是什麼? 面試官:初期聚焦於娛樂和內容創作,未來也會考慮用於資料收集。
候選人:只需生成臉部嗎?還是需要生成整個身體? 面試官:只聚焦在臉部即可。
候選人:生成的臉部是否應涵蓋多元的種族、年齡和性別? 面試官:是的,這對確保包容性和避免偏差至關重要。
候選人:系統是否需要支援對臉部屬性的控制?例如在保留身份的同時,編輯生成影像的表情? 面試官:好問題。先從不支援屬性控制開始,有時間再作為選修議題討論。
候選人:訓練資料如何取得?資料量有多大? 面試官:使用具有適當授權的公開資料集,確保符合隱私法規。資料集包含 70,000 張多元人臉影像。
候選人:期望的影像解析度是多少? 面試官:目標為 1024x1024。
候選人:生成一張臉的預期速度是多少? 面試官:系統應接近即時生成——不超過一秒。
將問題框架化為機器學習任務#
定義系統的輸入與輸出#
在人臉生成系統中,使用者通常不提供特定輸入,只需請求生成一張新的臉。由於機器學習模型需要數值輸入來啟動,大多數影像生成模型以**隨機雜訊向量(Random Noise Vector)**作為初始輸入,模型再將其轉換為逼真的影像。若系統支援屬性控制,使用者還可以提供期望的屬性作為輸入來引導生成。
輸出為一張逼真的人臉影像,並應反映指定的屬性(若有),如年齡、性別和髮型。
選擇合適的機器學習方法#
影像生成有四種主要方法:
- 變分自編碼器(VAE, Variational Autoencoder)
- 生成對抗網路(GAN, Generative Adversarial Network)
- 自迴歸模型(Autoregressive Model)
- 擴散模型(Diffusion Model)
變分自編碼器#
**變分自編碼器(VAE)**是一種生成模型,透過學習資料的分佈,從學到的分佈中取樣來生成新的資料點。
VAE 由兩個主要元件組成:
- 編碼器(Encoder):將輸入影像映射到低維度的潛在空間(Latent Space),輸出為潛在向量(Latent Vector)——即輸入影像的編碼表示。
- 解碼器(Decoder):將編碼表示映射回與原始輸入相同大小的影像。
在訓練過程中,VAE 將輸入編碼到潛在空間,再從編碼表示重建原始輸入。訓練完成後,VAE 可以從學到的多元高斯分佈中取樣,並使用解碼器將取樣點映射為影像,藉此生成新影像。
透過重參數化技巧(Reparameterization Trick)(詳見 [2]),VAE 將潛在向量建模為從多元高斯分佈中取樣。這有助於 VAE 學習可平滑內插的有意義表示,對影像漸變和產生輸入資料的變體等任務特別有利。
優點#
- 架構簡單:編碼器和解碼器都是直觀的神經網路架構,易於實作。
- 生成速度快:相比其他方法,VAE 的影像生成速度快——從潛在空間取樣隨機雜訊再解碼為影像。
- 訓練穩定:VAE 的訓練通常簡單且穩定。
- 壓縮能力:VAE 是將影像壓縮為低維表示的強大工具。
缺點#
- 影像真實度較低:VAE 難以捕捉高頻細節,導致影像不夠真實。
- 模糊問題:一個顯著的限制是傾向於產生模糊、缺乏銳利細節的影像。
- 新穎性有限:VAE 通常難以生成與訓練資料顯著不同的影像。
- 生成控制有限:VAE 不支援額外的控制輸入,如文字描述或屬性控制。
VAE 並非生成高品質、細緻影像的最佳選擇。其優勢在於高效地將影像編碼為緊湊的表示。在第 11 章中,我們將探討 VAE 並利用其壓縮能力來建構高效的影片生成系統。
生成對抗網路#
生成對抗網路(GAN)[3] 由兩個網路組成:
- 生成器(Generator):將隨機雜訊轉換為影像的神經網路。
- 判別器(Discriminator):判斷給定影像是真實還是人工生成的神經網路。
在訓練過程中,兩個網路進行持續的對局:生成器學習製作更逼真的影像,判別器則變得更擅長區分真假。若生成的影像被正確分類為「生成的」,生成器會受到懲罰。這種對抗過程持續進行,直到生成器產出判別器無法與真實影像區分的影像為止。
優點#
- 高品質生成:GAN 以生成高品質影像著稱。
- 生成速度快:雖然通常比 VAE 慢,但生成器仍可在單次前向傳遞中產出影像。
- 屬性控制:GAN 架構可以修改以控制特定屬性,如年齡或表情。
缺點#
- 訓練不穩定:GAN 的訓練具有挑戰性。常見問題包括模式崩塌(Mode Collapse)[4](生成器只產出有限的輸出多樣性)和不收斂(Non-convergence)[5](模型在訓練中無法穩定)。
- 控制有限:雖然 GAN 允許屬性控制,但難以超越這個範圍,例如使用文字描述來生成影像 [6]。
- 新穎性有限:GAN 通常難以生成與訓練資料顯著不同的新穎影像。
GAN 的訓練具有挑戰性,且對生成影像的控制有限。但它們能生成細緻的影像並支援臉部屬性控制,適合用於人臉生成和影像編輯。
自迴歸模型#
在自迴歸建模中,影像生成被定義為一個序列生成任務,影像的每個部分依序生成。這使得可以使用 Transformer 架構,受益於其捕捉長程依賴關係的強大能力。
優點#
- 高細節與真實感:自迴歸模型生成的影像具有高度的細節和銳利度。
- 訓練穩定:相比 GAN,訓練通常更為穩定。
- 生成可控性:可使用額外輸入(如文字提示)來控制影像生成。這種靈活性來自 Transformer 架構,可支援任意數量的輸入作為輸入序列的一部分。
- 多模態條件化(Multimodal Conditioning):自迴歸模型容易支援不同模態的條件化(如音訊、文字)。這是因為 Transformer 架構只要輸入以數值向量序列提供,就能支援不同的模態。
- 新穎性高:能生成新穎而複雜的影像——例如「火星上椅子上的酪梨」——即使訓練資料中沒有這類範例。
缺點#
- 生成速度慢:逐 token 的序列生成方式使其比 VAE 或 GAN 更慢。
- 資源密集:通常是擁有數十億參數的大型模型,需要大量運算資源。
- 影像操作受限:不像 VAE 和 GAN,自迴歸模型沒有結構化的潛在空間可進行臉部屬性控制等影像操作。
許多知名的影像生成模型,如 OpenAI 的 DALL-E [7] 和 Google 的 Muse [8],都是基於自迴歸建模。第 8 章將更詳細地探討此方法。
擴散模型#
**擴散模型(Diffusion Model)**將影像生成定義為一個迭代過程。在訓練期間,雜訊逐步加入影像中,並訓練一個神經網路來預測該雜訊。在推論時,從隨機雜訊開始,訓練好的網路在固定步數中迭代去噪,每一步增加更多細節。
優點#
- 高細節與真實感:能生成品質和真實感極高的影像。
- 訓練穩定:相比 GAN,訓練通常穩定。
- 生成可控性:類似自迴歸模型,可使用文字描述等多種輸入來控制。
- 新穎性與創意:能生成新穎且富有想像力的影像。
- 對雜訊影像的穩健性:由於去噪過程,擅長從影像中去除雜訊。
缺點#
- 生成速度慢:多步驟的去噪過程使其比其他方法更慢。
- 資源密集:通常是擁有數十億參數的大型模型,訓練的運算成本高昂。
- 影像操作受限:沒有結構化的潛在空間來操作影像。
大多數最先進的影像生成模型,如 DALL-E 3 [9],都是基於擴散模型。第 9 章將詳細探討擴散模型。
方法比較#
| 特性 | VAE | GAN | 自迴歸模型 | 擴散模型 |
|---|---|---|---|---|
| 品質 | 低 | 中等 | 高 | 極高 |
| 速度 | 快 | 快 | 慢 | 慢 |
| 訓練穩定性 | 穩定 | 不穩定 | 穩定 | 穩定 |
| 生成可控性 | 有限 | 有限 | 靈活 | 中等 |
| 臉部操作 | 否 | 是 | 否 | 否 |
| 新穎性 | 有限 | 有限 | 高 | 高 |
| 資源需求 | 中等 | 中等 | 高 | 高 |
表 1:不同影像生成方法的比較
對於逼真人臉生成,我們選擇 GAN 作為主要方法。GAN 特別有效,因為它允許我們透過結構化的潛在空間操控臉部屬性,這正是本章的選修需求。
資料準備#
開發逼真人臉生成系統需要大量影像集合。此處我們有 70,000 張多元的人臉影像。準備這些影像進行訓練的步驟如下:
- 移除低品質或低解析度影像:使用 ML 模型篩選低品質、模糊的影像,確保模型僅從高品質資料中學習。
- 資料增強(Data Augmentation):應用翻轉、旋轉或色彩調整等技術,人為增加訓練集大小,幫助模型更好地泛化。
- 正規化與調整尺寸:將所有影像調整為標準尺寸(如 1024x1024),並將像素值正規化到 [-1, 1] 範圍。
- 增強多元性:使用 ML 分類器為影像標註性別、年齡等屬性,再調整資料集以確保不同群體的均衡代表,避免生成臉部的偏差。
模型開發#
架構#
GAN 由兩個元件組成:生成器(Generator)和判別器(Discriminator)。以下分別探討其架構。
生成器#
生成器以隨機雜訊作為輸入,將其轉換為影像。其架構由一系列**上取樣區塊(Upsampling Block)**組成,每個區塊增加輸入的空間維度(高度和寬度),逐步將低維雜訊向量轉換為所需大小的 2D 影像。
上取樣區塊的三個主要元件為:
- 轉置卷積(Transposed Convolution)
- 正規化層(Normalization Layer)
- 非線性啟動函數(Non-linear Activation)
轉置卷積#
轉置卷積(Transposed Convolution)(也稱為 deconvolution 或 upsampling convolution)是一種用於增加特徵圖空間解析度的神經網路運算——本質上是一般卷積的反向操作。廣泛用於影像生成、語意分割和超解析度。
與標準卷積在輸入上滑動濾波器不同,轉置卷積先在輸入特徵圖的像素之間插入零值來擴展它,再用濾波器對擴展後的輸入進行卷積,其中濾波器的步幅(Stride)[^1]和填充(Padding)[^2]會調整以達到所需的輸出大小。例如,從 1x1x100 的輸入開始,使用 1024 個核大小 1x1、步幅 1 的濾波器,得到 4x4x1024 的特徵圖。下一步使用 512 個核大小 3x3、步幅 1 的濾波器,得到 8x8x512 的特徵圖。這是圖 8 中的前兩個上取樣階段。
![Figure 9: Transpose conv with 3x3 filter and stride=1 over 4x4 inputs [11]](figure-7-9-V6JFIU6C.png)
在 PyTorch 中,這一層通常使用 ConvTranspose2d 來實作。更多關於卷積和轉置卷積的內容,請參考 [11]。
正規化層#
正規化層透過將輸入資料縮放至一致的分佈來改善訓練穩定性。
GAN 的訓練不穩定,因為兩個網路互相競爭。這可能導致模式崩塌(多樣性不足)或振盪(無法收斂)。正規化透過在每層縮放激活值來穩定訓練,降低梯度消失或爆炸的風險,維持激活值分佈的一致性,這對生成器和判別器之間的平衡競爭至關重要。
有幾種正規化方法:
批次正規化(Batch Normalization, BN)#
BN [12] 在批次維度上對層的輸入進行正規化,計算每個特徵的均值和變異數,再使用可學習參數對正規化後的資料進行縮放和偏移。
- 優點:穩定學習、允許更高的學習率,並作為正則化器減少過擬合。
- 用途:常用於深層網路,包括 CNN 和 GAN 生成器。
層正規化(Layer Normalization, LN)#
LN [13] 對每個獨立樣本的特徵進行正規化,而非跨批次維度。
- 優點:在批次大小較小或不固定時效果佳。
- 用途:常用於 RNN、Transformer,以及需要跨樣本一致行為的場景。
實例正規化(Instance Normalization, IN)#
IN [14] 對每個樣本的每個特徵圖個別進行正規化。
- 優點:適用於個別樣本外觀差異大的任務,使網路聚焦於內容而非風格。
- 用途:常用於風格轉換和影像生成任務。
群組正規化(Group Normalization, GN)#
GN [15] 將特徵分組並在每組內進行正規化,提供 BN 和 LN 之間的平衡。
- 優點:在批次大小非常小、BN 可能不有效時特別有用。
- 用途:常用於 BN 因小批次大小而失效的場景,或需要跨特徵群組一致性的情況。
![Figure 10: Comparison of different normalization methods [15]](figure-7-10-QIJRYXKR.png)
非線性啟動函數#
非線性啟動函數(如 ReLU [16])為模型引入非線性,使其能學習複雜的模式。若沒有非線性,無論網路有多深,都只是線性變換,無法建模複雜的資料分佈。
如圖 11 所示,生成器由上取樣區塊(ConvTranspose2D)組成,每個區塊後接正規化層(BatchNorm2D)和非線性啟動(ReLU)。最後一個區塊使用 Tanh [17] 代替 ReLU,確保輸出範圍在 -1 到 1 之間,以匹配正規化後的影像像素範圍。
判別器#
判別器區分真實影像和生成影像,作為一個二元分類器(Binary Classifier),接受影像作為輸入,輸出該影像為真實的機率。
判別器包含:
- 下取樣區塊(Downsampling Block):逐步降低輸入影像的空間維度,同時擷取特徵。
- 分類頭(Classification Head):處理擷取的特徵,預測輸入影像為真實的機率。
下取樣區塊由數個卷積運算組成,逐步縮小輸入的空間維度。在 PyTorch 中,通常使用步幅為 2 的 Conv2D 層將空間維度減半。與生成器類似,卷積層之間使用批次正規化(BatchNorm2D)和 ReLU 來增強訓練穩定性。
分類頭包含一到兩個全連接層,後接 Sigmoid 啟動函數,確保最終輸出範圍在 0 到 1 之間,以便進行機率解釋。
多年來已開發了多種 GAN 版本。例如,StyleGAN [18] 修改生成器架構以控制生成臉部的屬性,如年齡、髮色和表情。詳情請參考 [18]。
訓練#
為了產出逼真的影像,我們使用**對抗訓練(Adversarial Training)**來訓練 GAN。生成器和判別器在類似遊戲的場景中同時訓練:
- 生成器的目標是產出看起來真實的影像。
- 判別器提升其區分真實與生成影像的能力。
這個競爭過程持續進行,直到生成器產出判別器無法再偵測為假的影像。
確保生成器和判別器一起進步至關重要,需避免其中一方主導另一方的情況。為維持平衡,交替進行:
- 凍結生成器,訓練判別器數次迭代。
- 凍結判別器,訓練生成器數次迭代。
機器學習目標與損失函數#
生成器和判別器各有其特定且相互衝突的目標:
- 判別器的目標是準確區分真實和生成的影像。
- 生成器的目標是產出判別器無法與真實影像區分的影像。
判別器損失#
我們使用**二元交叉熵(Binary Cross-Entropy)**作為判別器的損失函數(Loss Function):
$L_D=-\hspace*{-5pt}\overbrace{\frac{1}{m} \sum_{i=1}^m \log D\left(\mathbf{x}^{(i)}\right)}^{\begin{array}{c} \text { loss contribution } \ \text { from real images } \end{array}} \hspace*{-4pt}-~ \overbrace{\frac{1}{n} \sum_{j=1}^n \log \left(1-D\left(G\left(\mathbf{z}^{(j)}\right)\right)\right)}^{\begin{array}{c} \text { loss contribution } \ \text { from fake images } \end{array}}$
其中:
- $D\left(x^{(i)}\right)$ 是判別器對真實影像的預測機率
- $G\left(z^{(j)}\right)$ 是生成器根據隨機雜訊產出的影像(假影像)
- $m$ 是真實影像數量
- $n$ 是假影像數量
判別器的 ML 目標是最小化此二元交叉熵損失。
生成器損失#
生成器的目標是產出判別器無法與真實影像區分的逼真影像。理想情況下,判別器應對生成器的輸出預測接近 1 的機率。ML 目標是最大化所有假影像的 $\log \left(D\left(G\left(z^{(j)}\right)\right)\right)$,等價於最小化:
$L_G=\frac{1}{n} \sum_{j=1}^n \log \left(1-D\left(G\left(\mathbf{z}^{(j)}\right)\right)\right)$
GAN 的極小極大損失#
極小極大損失(Minimax Loss)[19] 將生成器和判別器的損失統一為單一函數:
$\text { Minimax loss }=\frac{1}{m} \sum_{i=1}^m \log D\left(\mathbf{x}^{(i)}\right)+\frac{1}{n} \sum_{j=1}^n \log \left(1-D\left(G\left(\mathbf{z}^{(j)}\right)\right)\right)$
判別器的目標是最大化此損失,生成器的目標是最小化它。整體的 ML 目標為:
$\min G \max D\left(\frac{1}{m} \sum{i=1}^m \log D\left(\mathbf{x}^{(i)}\right)+\frac{1}{n} \sum{j=1}^n \log \left(1-D\left(G\left(\mathbf{z}^{(j)}\right)\right)\right)\right)$
除了極小極大損失,研究者還提出了其他損失函數來改善訓練穩定性。詳情請參考 [20]。
GAN 常見的訓練挑戰#
相比其他生成模型,GAN 的訓練更為困難。三個主要挑戰為:
- 梯度消失(Vanishing Gradients)
- 模式崩塌(Mode Collapse)
- 無法收斂(Failure to Converge)
梯度消失#
梯度消失問題(Vanishing Gradient Problem)[21] 發生在訓練過程中梯度變得極小時。這主要影響生成器:當判別器過於擅長區分真假影像時,會提供非常小的梯度值,減緩或阻止生成器的學習。
兩種常見的緩解技術:
修改後的極小極大損失:原始 GAN 論文建議將生成器的目標改為最大化:
$L_G=\frac{1}{n} \sum_{j=1}^n \log \left(D\left(G\left(\mathbf{z}^{(j)}\right)\right)\right)$
這項調整改變了視角:生成器目標是最大化假影像被識別為真實的機率,而非最小化被識別為假的機率。
Wasserstein 損失:用於修改版的 GAN,稱為 WGAN(Wasserstein GAN):
- WGAN 的判別器(評論家, Critic):不再將影像分類為真假,而是輸出代表影像「真實程度」的分數。評論家損失是真實影像和假影像分數的差值,目標是最大化此損失。
$\text { Critic loss }=D(x)-D(G(z))$
- WGAN 的生成器:目標是最大化假影像被識別為真實的機率:
$\text { Generator loss : } D(G(z))$
模式崩塌#
**模式崩塌(Mode Collapse)**指生成器只產出有限多樣性影像的情況。在訓練過程中,生成器可能找到一張對判別器看起來最合理的影像,並持續只產出該影像,永遠無法學會生成多樣的輸出。
兩種常見的緩解技術:
- Wasserstein 損失
- Unrolled GAN [22]
更多關於 Unrolled GAN 如何緩解模式崩塌的資訊,請參考 [4]。
無法收斂#
隨著生成器的改進,判別器的表現會下降,因為區分真假變得越來越困難。若生成器完美模仿真實資料,判別器的準確率會降至 50%——等同於隨機猜測。這種下降阻礙了收斂,因為判別器的回饋變得毫無用處。持續使用無用回饋進行訓練可能導致生成器品質崩塌。
改善訓練穩定性和收斂的方法:
- 正規化:批次正規化等技術透過確保各層之間的一致分佈來穩定訓練。
- 不同學習率:為生成器和判別器使用不同的學習率,有助於平衡雙方的進展。
- 正則化(Regularization):權重衰減等方法防止過擬合並維持訓練穩定性。
- 為判別器輸入添加雜訊:注入雜訊防止判別器過早變得過於強大,平衡競爭。
更多詳情請參考 [21] 和 [23]。
取樣#
**取樣(Sampling)**是從訓練好的 GAN 模型生成新影像的過程。
在訓練期間,生成器學會將各種雜訊向量轉換為影像。這個過程形成一個潛在空間(Latent Space)——一個多維空間,其中每個點代表一個潛在的雜訊向量。生成器可以將此空間中的每個點映射到對應的影像。
要生成逼真的人臉影像,我們從潛在空間中取樣一個點(即潛在向量),生成器再將其轉換為影像。
從潛在空間取樣有兩種方法:
隨機取樣#
隨機取樣使用標準高斯分佈來抽取潛在向量。這確保了潛在向量的多元選取,產出多樣化的影像。
截斷取樣#
截斷取樣將潛在向量限制在潛在空間中較小的高機率區域。透過截斷分佈,此方法降低了生成離群值的機會,產出更高品質的影像。實作細節請參考 [24]。
隨機取樣透過探索整個潛在空間來確保多樣性,而截斷取樣聚焦於高機率區域以增強真實感。對於逼真人臉生成,我們使用隨機取樣,因為它帶來多樣性且在實務中通常表現良好。
評估#
離線評估指標#
評估影像生成系統需要同時評估生成影像的品質和多樣性。常見指標包括 Inception Score [25]、Frechet Inception Distance(FID)[26] 和 Kernel Inception Distance(KID)[27]。其中,Inception Score 和 FID 是最廣泛使用的。人工評估也仍然不可或缺。
在 ML 系統設計面試中,面試官的目標是評估你的直覺和實務理解,而非對公式的詳細知識。但對這些指標有廣泛的了解是有幫助的。
Inception Score#
Inception Score 使用預訓練的影像分類模型(如 Inception v3 [28])來評估生成影像的品質。
計算步驟:
- 生成影像:使用待評估的模型產出大量影像。
- 計算類別機率:對每張生成影像,Inception 模型提供 1,000 個物體類別的機率分佈。高品質影像應有尖峰分佈(某一類別有高機率)。
- 計算邊際分佈(Marginal Distribution):將所有影像的預測類別機率取平均。若影像多樣,此分佈將在多個類別上呈平坦分佈。
- 計算 KL 散度(KL Divergence):衡量每張影像的類別分佈與邊際分佈的差異程度。高品質影像的分佈會與邊際分佈差異很大。
- 計算 Inception Score:所有影像的 KL 散度平均值的指數。較高的 Inception Score 表示影像兼具多樣性和高品質。
Inception Score 如何同時衡量多樣性和品質:
- 多樣性:檢查生成影像是否產出接近均勻的邊際分佈,表示影像均勻分佈在不同類別上。
- 品質:高品質影像會產出尖銳的尖峰機率分佈。該分數比較此分佈與邊際分佈來評估影像品質。
Frechet Inception Distance(FID)#
FID 評估生成影像的分佈與真實影像分佈的相似程度。不同於 Inception Score(使用類別機率),FID 考慮的是預訓練模型(如 Inception v3)提取的特徵統計量。
計算步驟:
- 生成影像:產出大量影像與真實影像進行比較。
- 擷取特徵:將每張影像(生成的和真實的)通過 Inception v3,從深層擷取捕捉高階資訊(形狀、紋理、物體)的激活值。
- 計算均值和共變異數:分別為生成影像和真實影像計算擷取特徵的均值和共變異數。
- 計算 Frechet 距離:計算兩個分佈之間的距離。較低的 FID 表示更大的相似性,意味著生成影像更逼真且多樣。公式請參考 [29]。
FID 如何同時衡量多樣性和品質:
- 多樣性:考慮特徵的共變異數。多樣化的生成影像集將擁有與真實影像相似的特徵分佈。
- 品質:比較特徵的均值和共變異數。若生成影像特徵與真實影像特徵緊密匹配,則生成影像可能是高品質的。
FID 和 Inception Score 依賴 ImageNet 類別,可能引入偽影。[30] 的作者建議使用非 ImageNet 訓練的模型(如 CLIP)可能與人類評估更一致。然而,即使基於 CLIP 的指標也無法完全取代直接的人類回饋。
人工評估#
人工評估至關重要,因為自動化指標可能忽略美感等主觀品質。一種協定 [31] 是向使用者展示由不同模型生成的成對影像,評估者選擇哪張影像看起來更逼真,基於與人類判斷一致的標準來比較模型。
線上評估指標#
在生產環境中常監控的兩個指標:
- 使用者回饋:直接反映使用者對生成影像的意見。透過調查、評分或直接評論收集。
- 延遲(Latency):從請求到完整生成影像交付的時間。快速的回應時間對互動式應用至關重要。監控延遲有助於識別效能瓶頸。
整體 ML 系統設計#
逼真人臉生成系統的核心元件:
- 人臉生成器(Face Generator)
- 訓練服務(Training Service)
- 評估服務(Evaluation Service)
- 部署服務(Deployment Service)
人臉生成器#
人臉生成器是負責生成逼真人臉的核心元件。它處理使用者請求,並與訓練好的 GAN 模型互動以取樣高品質影像。使用者可選擇性地指定期望的屬性,如年齡、性別、髮型和表情。該服務利用 StyleGAN 的特性,根據這些屬性在潛在空間中調整雜訊向量。
屬性控制和潛在空間操作的架構細節通常不在 ML 系統設計面試中討論。深入了解請閱讀 [32][33]。
訓練服務#
訓練服務透過定期使用使用者認可的生成影像和新訓練資料重新訓練 GAN 模型,持續改進模型。
評估服務#
評估服務使用預定義的指標自動評估新訓練的模型。結果決定新模型是否達到品質標準,以及是否應取代現有模型。
部署服務#
部署服務將改進後的模型部署到生產環境。它確保更新期間的順暢過渡,將停機時間降到最低,並監控已部署模型的效能。
其他討論主題#
面試結束後若還有時間,可考慮討論:
- 各種 GAN 架構(DCGAN、WGAN、StyleGAN)及其權衡 [34][35][18]
- 穩定 GAN 訓練的技術:Wasserstein 損失、梯度懲罰及其他穩健方法 [36]
- 條件式 GAN(cGAN, Conditional GAN)用於根據特定條件生成人臉 [37]
- 條件一致性的評估指標 [38][39]
- 人臉生成中的風格混合(Style-mixing)[18]
摘要#
