機器學習2021 — Diffusion Model 介紹文章
機器學習2023 — Diffusion Model 介紹文章¶
Diffusion Model(擴散模型)是當前頂尖生成式 AI 領域中,特別是在影像生成方面,最常用且效果最好的模型之一。其運作機制基於一個相對直觀的概念,但背後的數學推導則較為複雜。
一、 擴散模型的核心概念
Diffusion Model 的核心概念包含兩個相互對立的過程:前向過程(Forward Process,加噪)和反向過程(Reverse Process,去噪)。
- 前向過程(Forward Process):加噪
前向過程的目標是逐步將雜訊(noise)加到原始的乾淨圖像(通常以 x0 表示)中。這個過程會持續進行,直到圖像看起來完全都是雜訊,無法辨認出原始圖像為何。
• 訓練步驟(DDPM 實際操作):儘管概念上雜訊是逐步加入的,但 DDPN(Denoising Diffusion Probabilistic Models)的實際訓練算法採用一步到位的方式加噪。
• 在訓練時,模型會先從資料庫中抽取出乾淨圖像 x0。
• 同時,模型會從一個均值為 0、方差(variance)為 1 的常態分佈(normal distribution)中採樣出一個純雜訊 ϵ。
• 這張 x0 會與雜訊 ϵ 根據一個預先設定好的比例混合,得到一張有雜訊的圖像 xt。
• 這個比例由一個採樣出來的整數 t(從 1 到 T,如 1000)決定。t 越大,代表雜訊 ϵ 佔的比例越多,加噪的程度也越「凶狠」。
• 在 Diffusion Model 的文獻中,加噪的過程 Q(Forward Process)是人為設計好的,不需要學習。
- 反向過程(Reverse Process):去噪與生成
反向過程即是去噪(denoise)的過程。
• 生成開始:模型從一張純粹都是雜訊的圖片(xT)開始。
• 圖像浮現:透過反覆的去噪操作,每次去噪都會讓圖像浮現一點點出來。
• 去噪模型:核心組件是雜訊預測器(Noise Predictor,通常表示為 ϵθ 或一個 neural network)。
◦ 在訓練階段,雜訊預測器的輸入是有雜訊的圖像 xt 和步驟 t。
◦ 它的學習目標是預測當初混入乾淨圖像 x0 的原始雜訊 ϵ。
• 圖像生成/採樣 (Sampling):
◦ 模型從 xT 開始,重複 T 次迭代,目標是從 xt 生成 xt−1。
◦ 在生成過程中,去噪模組會輸出一個結果,但這還不是最終的 xt−1。
◦ 在實際的採樣(sample)過程中,一個令人匪夷所思的操作是,模型除了減去預測的雜訊外,還會再採樣一次雜訊(z)並將其加到圖像中。
◦ 這額外加入的雜訊 σt 是必要的,因為它為模型帶來了隨機性,能避免如同在語言模型中僅選擇機率最大的輸出時,可能出現的「跳針」或重複的無聊結果。
二、 訓練目標與 VAE 的關聯
Diffusion Model 的訓練目標,如同大多數影像生成模型一樣,是追求 Maximum Likelihood Estimation(最大似然估計)。
• 等價於最小化 KL 散度:最大似然估計在數學上等價於讓模型生成的圖像分佈 pθ 與真實數據分佈 pdata 之間的 KL 散度(KL divergence)最小化。KL 散度是衡量兩個分佈之間差異程度的方法,越小代表分佈越接近。
• Lower Bound:由於直接計算 pθ(x) 複雜,Diffusion Model 實際上是最大化對數機率的一個 Lower Bound(下界)。
• 與 VAE 的相似性:Diffusion Model 在形式上與 VAE(Variational Autoencoder)極為相似。
◦ 加噪的 Q 過程(Forward Process)在 VAE 中相當於 Encoder。
◦ 去噪的 P 過程(Reverse Process)在 VAE 中相當於 Decoder。
◦ Diffusion Model 的 Lower Bound 推導過程與 VAE 也是完全一樣的,只是符號的替換。
三、 擴散模型在文生圖框架中的應用
當前最優秀的文生圖模型(如 Stable Diffusion 或 Imagen)採用一個複合式框架,Diffusion Model 只是其中的一個生成元件。
• 整體架構:這類模型通常由三個主要元件構成:
-
文字編碼器(Text Encoder):將輸入的文字敘述轉化成一組向量(embedding)。
-
生成模型(Generation Model):通常是 Diffusion Model,它接收雜訊和文字編碼器輸出的向量。
-
解碼器(Decoder):將生成模型產生的中間產物還原成最終的原始圖片。
• 潛在空間擴散(Latent Diffusion):在 Stable Diffusion 等模型中,Diffusion Model 並非直接在像素級別的圖片上操作。
◦ 它是在圖片被壓縮後的潛在表示(Latent Representation)或中間產物上進行加噪和去噪。
◦ 流程是:先用一個 Encoder 將原始圖片壓縮成 Latent Representation。然後,雜訊被加到這個 Latent Representation 上。
◦ Diffusion Model 在這個 Latent Representation 上進行去噪,最終由 Decoder 將這個去噪後的潛在表示還原成清晰的圖片。
◦ 這種做法可以看作是將傳統 DDPM 的 2D 圖片輸入替換成了潛在表示,但其訓練和採樣流程與傳統 DDPM 相同。
比喻:
您可以將 Diffusion Model 想像成一個古董修復師。
前向過程 (加噪) 就像是將一件完整的古董(x0)不斷地用沙子和灰塵(雜訊 ϵ)覆蓋,直到它變成一團完全看不清的泥土狀物(xT)。在訓練時,我們讓修復師看一眼完整的古董,然後立刻看覆蓋了 t 層沙子的泥土狀物,並告訴修復師:你需要學會辨識這 t 層沙子(原始雜訊 ϵ)。
反向過程 (去噪) 就像是從那團泥土狀物(xT)開始,修復師利用他學到的知識,逐步將沙子抹去。每抹去一點(一個去噪步驟),古董的輪廓就更清晰一些。最終,當所有的沙子都被去除(或者去除到 x0 階段),完整的古董就被生成出來了。
資料來源:
- 李宏毅老師 【生成式AI】Diffusion Model 原理剖析 [1][2][3][4]
- 自動生成影片可參考 https://youtu.be/Szk4hfu4K04
Comments
Loading comments…
Leave a Comment