20251102筆記 內容可能有錯誤,請參考原始影片 [李宏毅【生成式AI導論 2024】](https://www.youtube.com/playlist?list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI) [【生成式AI導論 2024】第17講:有關影像的生成式AI (上) — AI 如何產生圖片和影片 (Sora 背後可能用的原理)) ](https://youtu.be/QbwQR9sjWbs?si=uqjfaGlYHtHZdhoR) [【生成式AI導論 2024】第18講:有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動](https://youtu.be/MAbGgsWKrg8?si=o2UlTZCo2hEqfmG7) [【生成式AI導論 2024】GPT-4o 背後可能的語音技術猜測](https://youtu.be/MAbGgsWKrg8?si=o2UlTZCo2hEqfmG7) ### 【生成式AI導論 2024】第17講:有關影像的生成式AI (上) — AI 如何產生圖片和影片 (Sora 背後可能用的原理) 大綱 ### I. 影像生成式 AI 的兩大類型與應用 * **類型一 (Input as Condition):** AI 根據影像/影片作為條件(Condition)來生成文字或描述。 * **類型二 (Output Generation):** AI 根據條件(如文字)來生成圖片或影片。 * **應用案例:** * GPT-4o 透過圖像分析穿著、職業和美學標準。 * Talking Head 技術:根據聲音和照片生成對應的說話影像。 * 多樣化條件生成:使用草圖、草稿或照片來生成精細圖片。 * 影片生成應用:影片延長、風格轉換(如黑白轉彩色)、畫質提升。 ### II. 影像與影片的 AI 處理基礎 * **構成單位:** 圖片由像素 (Pixel) 構成;影片由幀 (Frame) 構成,常規速度為 24 FPS。 * **AI 內部表示:** 現代 AI 不直接處理像素,而是將圖片或影片透過 **Encoder** 壓縮成更簡化的單位 **Patch**(區塊)序列。 * **Patch 的壓縮:** 壓縮可以在 2D (長寬) 空間維度進行,影片還可以在時間維度上進行壓縮(合併相鄰幀)。 * **還原:** 最終生成的 Patch 序列會透過複雜的 **Decoder** 類神經網路還原為原始圖片或影片。 ### III. 文本生成影像/影片的模型策略 * **訓練資料:** 需要大量的圖文配對資料,例如 LAION 資料集擁有 58 億張圖文配對。 * **生成模式:** * **Auto-Regressive (AR):** 循序漸進生成 Patch(文生圖很少用,速度太慢)。 * **Non-Auto-Regressive (NAR):** 同時生成一張圖中所有的 Patch,透過 Transformer 內部的 **Attention** 機制維持 Patch 間的關聯性。 * **評估方法:** 使用 **CLIP Score**,將生成圖與輸入文字一起丟給 CLIP 模型評分,分數越高代表生成品質越好。 ### IV. 文生影片的挑戰與優化技術 * **SORA 案例:** 效果驚人,但仍存在瑕疵,例如背景牆壁移動、物體變形、物體增殖或消失。 * **主要挑戰:** 運算量巨大。生成 1 分鐘非高清影片,可能需要 $36$ 兆次 Attention 運算。 * **優化策略一:Attention 結構改造 (未 3D Attention)** * 將 Spatial Temporal (全 3D) Attention 拆解為:**Spatial Attention** (2D,處理同一幀內 Patch 關聯) 與 **Temporal Attention** (1D,處理不同幀同一位置 Patch 關聯)。 * 效益:疊加這兩種 Attention (未 3D Attention) 可將運算量減少約千倍。 * **優化策略二:多步生成 (Multi-step Generation)** * 將複雜生成任務拆解成多個階段,每個模型專注一個任務。 * 階段任務:逐步提高解析度 (Upscaling) 或逐步提高每秒幀數 (Interleaving)。 --- ### 1. 影像生成式 AI 的應用範疇 影像相關的生成式 AI 可以從兩個主要方向來討論: * **影像作為條件:** AI 根據所看到的圖片或影像來生成對應的內容,如文字描述或分析。 * **GPT-4o 分析:** 例如,詢問 GPT-4o 兩張照片中誰比較帥,它不會直接回答,但會分析穿著,如左邊穿牛仔外套的年輕人比較時尚有型,右邊穿白襯衫的眼鏡男士則看起來比較專業有親和力。 * **職業推測:** GPT-4o 也能根據穿著打扮猜測職業,例如牛仔外套年輕人可能從事時尚、娛樂或創意領域(正確:知名演員);白襯衫男士則可能從事學術、技術或商業領域(如教授或工程師)。 * **美學標準:** 雖然 GPT-4o 講話精明且經過大量 RLHF(Reinforcement Learning from Human Feedback),但若被強迫決定,它仍會給出答案,並會強調另一人具有專業性和親和力等魅力,展現了其風格的精明性。 * **生成圖片或影片 (Output):** AI 根據給定的條件(如文字)來產生對應的圖片或影片。 * **影片生成應用:** 可以用於未完成影片的補完、風格轉換(如黑白影片上色,可用於老電影修復)或畫質提升(將低解析度影片提升畫質)。 * **Talking Head:** 根據一段錄音和一張照片,生成照片中人物說出這句話時的嘴型和臉部表情。這項技術已經開源且有商用軟體,潛在應用包括創建沒有真人的 Vtuber。 * **多樣化輸入條件:** 生成式 AI 可以接受各式各樣的條件作為輸入,來生成圖片,包括草圖 (Sketch)、草稿 (Draft),甚至是給予一張特定人物的照片,讓 AI 根據該照片生成對應人物的圖像。 ### 2. SORA 案例分析:文生影的驚人能力與瑕疵 OpenAI 試出的 SORA 模型 Demo 展示了其強大的力量,可以根據一段文字描述生成非常清晰的影片。 * **驚人效果:** SORA 可以生成現實生活中不可能出現的場景,例如看著蠟燭融化的怪物 或沉在海底的紐約街景。 * **觀察到的瑕疵:** 仔細觀察 SORA 的 Demo 影片,仍能發現一些瑕疵: * **不自然移動:** 例如怪物不動,但背後的牆壁一直在左右移動。 * **物體變形:** 紐約海底下的水生生物會變形,例如遠看是海龜,近看突然縮成一隻魚。 * **物體增殖/分裂:** 嘗試生成五隻狼的幼崽,結果狼崽卻會不斷分裂,數量越來越多。 * **物件消失/變魔術:** 考古學家挖出塑膠椅的場景中,挖出東西後突然變出一張椅子,隨後椅子又跑掉。 ### 3. 影像與影片的 AI 處理基礎:Patch 壓縮 為了讓 AI 模型能夠高效處理複雜的影像和影片數據,需要將其簡化: * **影像構成:** 圖片由像素 (Pixel) 構成。解析度越高,像素越多,圖片越清晰(如 1024x1024)。 * **影片構成:** 影片由一張一張的圖片(幀,Frame)構成。通常 YouTube 影片是 24 FPS (Frames Per Second),遊戲可能需要 60 FPS 才能絲滑流暢。 * **Encoder/Patch 壓縮:** 現代 AI 模型通常不直接拿像素當輸入,而是使用 **Encoder** 類神經網路將圖片壓縮。 * **切塊:** Encoder 會將圖片切成一塊一塊的 **Patch**。 * **表示:** 每個 Patch 會被壓縮,可能用一個獨特的符號(Token)來表示,或是用一個低維度的向量來表示其資訊。 * **Transformer 輸入:** 這些 Patch 會被拉直成一條序列,丟給 Transformer 處理。 * **Decoder 還原:** Transformer 產生一排 Patch 序列後,會透過 **Decoder** 類神經網路將其還原回原始圖片。這個還原過程非常複雜,會考慮單一 Patch 及其所有鄰近的 Patch,甚至整張圖的 Patch 資訊。 * **影片壓縮:** 影片除了在 2D 空間 (長寬) 進行 Patch 壓縮外,還可以利用時間維度進行壓縮。常見做法是將相鄰的幾幀合併,將同樣位置的 Patch 進一步壓縮成一個 **Video Patch**。SORA 也使用了類似的 Patch 技術。 ### 4. 文生圖模型的訓練與評估 #### 4.1 訓練數據與版權風險 * **訓練基礎:** 要訓練文生圖模型,需要收集大量的圖片及其對應的文字敘述。 * **數據規模:** 現今有大規模開源數據集可供訓練,例如 LAION (Large-scale Artificial Image Network) 的最大資料集包含 **58 億張**圖文配對。 * **數據來源:** 這些數據通常是從網路上爬下來的圖文配對,經過後處理(如去除不當圖片或配對不好的數據)整理而成。 * **風險與爭議:** 使用 LAION 數據集存在風險,LAION 宣稱只負責收集,不擁有版權。例如 Stable Diffusion 的開發公司 Stability AI 曾因使用該數據集而被畫家提告。 #### 4.2 生成模式:NAR 與 Attention 的應用 * **AR 的局限:** 文生圖很少使用 Auto-Regressive (AR) 接龍方式,因為即使是 Patch 數量仍太多,速度過慢。 * **NAR 的應用:** 文生圖通常採用 Non-Auto-Regressive (NAR) 方式,所有 Patch **同時**被生成出來。 * **Transformer 與 Attention:** 雖然 Patch 是同時生成,但透過 Transformer 內建的 **Attention** 機制,每個位置在處理時會參考其他位置的資訊,從而讓 Patch 與 Patch 之間仍保持關聯性。 #### 4.3 圖像評估標準:CLIP Score * **人類評估的局限:** 過去是人類評估生成結果,但人類時間有限。 * **CLIP 模型:** CLIP 是一個模型,它被訓練來判斷一張圖片與一段文字是否為正確的配對。正確配對給高分,不正確配對給低分。 * **CLIP Score:** 今天的主流做法是引入 CLIP 模型來衡量生成式 AI 的好壞。將輸入的文字敘述與生成的圖片一起丟給 CLIP,得出的分數稱為 **CLIP Score**。分數越高,代表圖文匹配度越好,模型表現越佳。 #### 4.4 個性化圖像生成 (Customization) * **文字描述的不足:** 有很多圖像難以用文字完整描述。 * **客製化技術:** 為了實現個性化生成,可以為想要客製化的特定物體取一個**特殊符號**(例如「Star」),這個符號必須是平常不會使用的,以避免污染既有詞彙的語義。 * **微調:** 只需要用極少量的圖片(例如 3 到 5 張)來微調文生圖模型,讓模型學會識別這個特殊符號。 * **應用:** 一旦模型學會,就可以使用該符號在各種場景中生成該物體,例如要求模型畫出「Star 的油畫」或「Star 的 APP icon」。 ### 5. 文生影片的挑戰與優化策略 文生影片的原理與文生圖相似,只是生成了**更多的 Patch**,這些 Patch 集合起來對應一段影片。然而,文生影片面臨著巨大的運算挑戰。 #### 5.1 運算量的挑戰 * **驚人的 Attention 次數:** 假設生成一段 1 分鐘的影片(24 FPS),且每幀由 64x64 個 Patch 描述(總共 600 萬個 Patch),如果所有 Patch 之間都要計算 Attention (在 Transformer 中),Attention 的次數將是 600 萬的平方,即 **36 兆次**。 #### 5.2 優化策略:未 3D Attention 為了解決龐大的運算量,需要減少 Attention 的計算。 * **Special Temporal Attention (全 3D):** 這是指同時考慮同一個幀內(空間)和不同幀間(時間)的 Patch 關聯。運算量過大,難以生成高清影片。 * **分解為 2D/1D Attention:** 將 Attention 拆解成兩部分,然後交替使用: 1. **Spatial Attention (2D):** 只考慮**同一個 Frame** 裡面的 Patch 關聯。確保同一幀的畫面一致。 2. **Temporal Attention (1D):** 只考慮**不同 Frame 裡同一個位置**的 Patch 關聯。確保畫面在時間上連貫。 * **運算量比較:** * 全 3D Attention (36 兆次)。 * Special Attention (2D):約 240 億次 Attention。 * Temporal Attention (1D):約 85 億次 Attention。 * **效益:** 240 億 + 85 億 (約 325 億次) 的總運算量,相比於原來的 36 兆次,**減少了約千倍**。這種將兩種 Attention 疊在一起使用的架構,被稱為 **未 3D Attention**,是目前影片生成模型中非常常用的技術。 #### 5.3 優化策略:多步生成與流水線 文生影片通常也採用分階段的策略來處理複雜任務。 * **流水分工:** 將生成任務拆解成多個模型,每個模型專注於一個簡單的子任務。 * **階段任務差異:** * **解析度提升 (Upscaling):** 第一版可能是低解析度,後續模型專注將圖片解析度調高。 * **幀數提升 (Interleaving):** 第一版可能是低幀數(例如每秒 2 幀),後續模型專注於預測兩張圖片中間的內容,提高幀數(例如每秒 4 幀,直到 24 FPS)。 * **Google Imagen 案例:** Google 的 Imagen 模型使用了多個模組組成的流水線:先由 Base Model 產生低解析度、低幀數的影片 (16 幀, 40x24 解析度, 3 FPS),然後透過後續模組逐步提高幀數和解析度,最終生成 1280x768 解析度、24 FPS 的清晰影片。 ### 【生成式AI導論 2024】第18講:有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動 大綱 ### I. 經典影像生成模型概述 * **四大模型:** VAE (Variational Auto Encoder)、Flow-based Model、Diffusion Model、GAN (Generative Adversarial Network)。 * **Transformer 的應用:** 影像生成今天常用 Transformer 架構,概念是給一段文字產生一排 Patch (區塊) 來構成圖片。 * **Diffusion Model 特性:** 透過不斷減少雜訊,最終產生高清圖像。 ### II. 影像生成的根本挑戰:資訊不完整性 * **Multi-modality 問題:** 同一段文字描述(如「奔跑的狗」)對應多種不同的圖像樣貌(如哈士奇在草原或獵犬在都市)。 * **模型困惑:** Transformer 在訓練時因同樣輸入對應多種輸出,會「無所適從」。 * **解決思路:** 需加入**額外的資訊**,將原本文字未提及的細節補足,讓模型知道要生成哪一種圖。 ### III. 基於 Autoencoder 的生成框架:VAE 與 Flow-based Model * **訓練目標:** 訓練一個框架,讓輸入圖片經過一連串處理後,最終輸出圖片要與輸入越接近越好。 * **Encoder (資訊抽取模型):** 負責抽取文字描述未涵蓋的額外資訊(或稱 **Noise**)。其輸出通常是一串數值(一個向量)而非文字。向量維度可能代表特定含義,如狗的品種或背景地點。 * **Decoder (圖像生成模型):** 根據文字敘述與 Encoder 抽取的向量(腦補資訊),還原或生成圖片。 * **VAE (Variational Autoencoder):** 訓練 Encoder 和 Decoder 兩部分。 * **Flow-based Model:** 僅訓練一個 **可逆 (invertible)** 的 Decoder,其反函數直接作為 Encoder。 * **應用:** 可以透過調整 Encoder 輸出的向量(如減去臭臉特徵,加上笑臉特徵)來調整最終圖片效果。 * **實際使用:** 在生成階段,由於不知道要腦補什麼,Encoder 輸出的向量通常是**隨機產生**(擲骰子)。 ### IV. Diffusion Model (擴散模型) 的機制 * **核心運作:** 反覆使用同一個 Decoder,該 Decoder 每次只做一件簡單的事:**去雜訊 (denoise)**。 * **生成步驟:** 從一個雜訊圖開始,經過反覆(通常 500 到 1000 次)去雜訊步驟,最終產生清晰圖片。 * **訓練方法:** 透過 **Forward Process** (順向過程) 自行製造訓練資料:將無雜訊的圖**逐步加雜訊**直到看不出原物體。 * **訓練目標:** 教導 Denoise Model 根據有雜訊的圖和文字敘述,還原回加雜訊前的樣子。 * **Diffusion Transformer (Sora 相關技術):** 將 Transformer 架構應用於 Denoising 過程。每次 Transformer 的運算都是一次 Denoise,反覆執行。 * **與 VAE 的類比:** Diffusion Model 的 **加雜訊過程** 相當於 VAE 的 Encoder (Forward Process),**去雜訊過程** 相當於 Decoder (Reverse Process)。 ### V. 生成對抗網路 (GAN) 作為外掛 * **性質:** GAN 本質上是一個**外掛**,可以與 VAE、Flow 或 Diffusion Model 結合。 * **角色分工:** * **Generator (生成器):** 負責產生圖片。 * **Discriminator (判別器):** 負責評估 Generator 產生的圖與文字描述的**匹配程度**。 * **訓練機制:** Generator 努力騙過 Discriminator,Discriminator 則努力變得更厲害,兩者交替訓練。 * **與 RLHF 的對比:** Discriminator 類似大型語言模型訓練中的 **Reward Model** (獎勵模型)。不同點在於 Discriminator 的學習通常不需人工標註,它假設 AI 生成的都是壞的,訓練資料中的真圖都是好的。 ### VI. 互動式生成技術:GENIE (Generative Interactive Environment) * **目標:** 創造可互動的生成式環境,如操控 AVATA 在 2D 橫向捲軸遊戲中移動。 * **模型輸入與輸出:** 讀取當前畫面 (輸入) 和使用者的動作 (如搖桿輸入),輸出下一秒的畫面。 * **訓練的挑戰:** 網路上收集的遊戲影片只有畫面,**缺乏使用者輸入的動作標註**。 * **解決方案 (Latent Action):** 使用類似 Autoencoder 的概念,訓練一個 **動作抽取模型 (Action Extractor)**。 * Action Extractor 讀取前一個畫面和下一個畫面之間的差異,**猜測 (Latent Action)** 使用者按了什麼按鈕。 * 將猜測的動作 (Latent Action) 傳給圖像生成模型,與前一個畫面一起生成下一個畫面。 * 目標:讓生成的畫面與實際的下一畫面越接近越好,間接證明動作抽取模型的猜測是正確的。 * **應用潛力:** 可用於快速創造遊戲或未來開放世界的駕駛模擬器等應用。 --- ### 1. 影像生成模型的經典介紹與難點 #### 1.1 經典模型與基本架構 在影像生成的歷史中,有幾種經典的方法,包括 **VAE (Variational Auto Encoder)**、**Flow-based Model**、**Diffusion Model** 以及 **GAN (Generative Adversarial Network)**。 現今,像 Sora 這類的模型可能使用了 **Diffusion Model**,其特徵是從大量的雜訊開始,逐步減少雜訊,最終產生高清的圖片。 今天影像生成的類神經網路架構通常使用 **Transformer**,其概念是給一段文字,Transformer 產生一排 **Patch** (圖片區塊),最終構成圖片。 #### 1.2 訓練上的多樣性挑戰 (Multi-modality Problem) 在訓練影像生成模型時,會遇到一個核心問題:**同一段文字描述可能對應多種不同的圖像**。例如,訓練資料中的「一隻奔跑的狗」可能是「草原上奔跑的哈士奇」,也可能是「都市裡奔跑的獵犬」。 對於 Transformer 來說,當它接收到同樣的文字輸入,卻被要求產生不同的 Patch 序列時,它會感到困惑,不知所從。如果模型試圖學習所有的可能性,結果可能是產生**各種奇怪的混種圖片**,因為輸入的文字無法完整地描述整張圖片。 #### 1.3 解決之道:加入額外資訊 為了解決這個問題,必須將**額外且原先文字未提到的資訊**加入到訓練中。 * 例如:不只告訴模型生成「奔跑的狗」,而是明確告知它要生成「哈士奇在草原上奔跑的樣子」。 * 這樣,模型就知道為什麼同樣的文字輸入會對應到兩張不同的圖片,因為有額外的資訊在輔助它。 ### 2. Autoencoder 框架下的 VAE 與 Flow-based Model 由於難以人工標註這些額外資訊,研究者設計了 **Autoencoder (自編碼器)** 框架,讓資訊抽取與圖片生成可以一同被訓練。 #### 2.1 框架與共同目標 * **Encoder (資訊抽取模型):** 接收訓練資料中的圖片和文字描述,負責抽取文字未描述到的部分資訊。 * **Decoder (圖像生成模型):** 接收文字敘述和 Encoder 抽取的資訊,生成一張圖片。 * **共同目標:** 雖然我們不知道 Encoder 抽出了什麼是標準答案,但只要經過這連串處理後,**最終輸出的圖片與輸入圖片越接近越好**。 #### 2.2 VAE 與 Flow-based Model 的區別 * **VAE (Variational Autoencoder):** 訓練一個 Encoder 和一個 Decoder。 * **Flow-based Model:** 該模型認為 Encoder 和 Decoder 做的只是相反的事情(一個抽取資訊,一個還原資訊),因此只訓練一個 **Decoder**,並要求這個 Decoder 必須是**可逆的 (invertible)**。這個 Decoder 的反函數就直接作為 Encoder。 #### 2.3 Encoder 輸出的性質 * Encoder 輸出的不是文字,而是一個 **數值向量**,也被文獻稱為 **Noise**。 * 這個向量的每一個維度可能對應到特定的含義,例如第一個維度可能代表「狗的品種」,第二個維度可能代表「背景地點」。 * **Noise 中包含豐富資訊:** 實驗證明,這個向量可以被操作。例如,可以計算出「臭臉特徵的向量」和「笑臉特徵的向量」,然後在原圖的向量上 **減去臭臉特徵並加上笑臉特徵**,透過 Decoder 還原後,可以讓圖片中的人物笑得更開心。 #### 2.4 實際生成圖片的過程 在實際生成圖片時,我們只有文字敘述,**並不知道**文字沒描述的額外資訊是什麼。 因此,當使用 VAE/Flow 模型時,需要先**隨機擲骰子**來產生那個「腦補的向量」,再將文字敘述與這個隨機向量丟給 Decoder,由其產生最終結果。 ### 3. Diffusion Model 的機制與應用 Diffusion Model 的 Decoder (Denoise Module) 也是接收 **Noise (雜訊/腦補資訊)** 和文字敘述來產生圖片。 #### 3.1 Denoising 過程 Diffusion Model 的核心是**反覆使用同一個 Decoder**。 * **Decoder 的任務:** 每次只做一件事——**去除雜訊 (denoise)**。 * **過程:** 給予 Decoder 雜訊,它會去掉一點雜訊,讓圖片看起來更像文字的描述。這個去雜訊的過程需要反覆進行,通常是 **500 次或 1000 次**,才能產生一張清晰的圖片。 * **研究趨勢:** 目前相關研究集中於如何用更少的 Denoise 次數(例如 5 次、10 次,甚至 1 次)就得到清晰結果。 #### 3.2 訓練 Denoise 模型 Denoise Model 的訓練數據是自己製造的。 * **Forward Process (順向過程):** 將訓練資料中的清晰圖片,**自行加入雜訊**,並多次重複這個過程,直到圖片完全看不出原來的物體。 * **訓練目標:** 教導 Denoise Model 接收「有雜訊的圖」和「文字敘述」,然後將其還原回「加雜訊前的樣子」。 * **Encoder/Decoder 對比:** 在 Diffusion Model 的文獻中,**加雜訊的過程** 被稱為 **Forward Process** (對應 VAE 的 Encoder),而 **去雜訊的過程** 則稱為 **Reverse Process** (對應 VAE 的 Decoder)。 #### 3.3 Diffusion 與 Transformer 的結合 (Sora) Denoise Model 內部的類神經網路架構通常是 **Transformer**。 * **Diffusion Transformer:** 結合了 Diffusion 和 Transformer 技術。 * **運作方式:** 每次 Denoising 都是由 Transformer 完成的。一開始輸入的是充滿雜訊的 Patch,Transformer 會被重複使用 500 到 1000 次,每次都去掉更多的雜訊,最終產生乾淨的 Patch,然後透過 Decoder 還原成圖片。這種方式也被擴展到生成影片的領域。 ### 4. Generative Adversarial Network (GAN) #### 4.1 GAN 的性質:一個外掛 GAN 與 VAE、Flow 或 Diffusion Model 有**本質上的差異**。GAN 更像是一個**額外的外掛**,可以用來強化其他生成模型(如 VAE、Flow、Diffusion)的生成能力。 #### 4.2 角色與訓練機制 * **Discriminator (判別器):** 類似於 Clip 模型,它接收圖片和文字,給予一個評價,評估兩者的匹配程度。 * 訓練 Discriminator 時,需要給予它**正面例子**(真實圖片與匹配文字)和**反面例子**(例如由 Generator 生成的抽象或錯誤圖片)。 * **Generator (生成器):** 在 GAN 框架下,其他模型的 Decoder 或 Generator 會被稱為 Generator。 * **對抗學習:** Generator 不再只是向真實圖片學習,而是向 **Discriminator 學習**。Generator 的目標是產生一張圖片,讓 Discriminator 覺得它「做得非常棒」,從而騙過 Discriminator。只要另一個 AI(Discriminator)覺得好,生成就算成功,避免了需要單一標準答案的問題。 * **交替訓練:** Generator 和 Discriminator 會交替訓練,互相進步。 #### 4.3 與 RLHF 的類比 GAN 框架可以與大型語言模型中的 **RLHF (Reinforcement Learning from Human Feedback)** 對比。 * **對應關係:** GAN 中的 **Discriminator** 角色,在 RLHF 中就是 **Reward Model** (獎勵模型)。 * **主要差異:** Reward Model 的學習有**人工標註**介入;而 Discriminator 在學習時,可以假設 **AI 生成的圖都是差的**,而訓練資料中的真圖都是好的,從而不需要人類的額外標註。 ### 5. 互動式生成:GENIE (Generative Interactive Environment) GENIE 嘗試讓人類與生成的影像有更即時的互動。 #### 5.1 GENIE 的目標與輸入 * GENIE 旨在創造類似 **2D 橫向捲軸遊戲**的互動環境。 * 模型輸入:讀取當前畫面,並讀取使用者輸入的**動作 (Action)**(如上下左右的搖桿操作)。 * 目標:透過圖像生成技術,讓使用者**即時控制**影像生成的結果。 #### 5.2 訓練 GENIE 的挑戰與解決方案 * **所需資料:** 訓練 GENIE 需要「遊戲畫面」加上「人玩遊戲時的按鈕輸入」。 * **資料缺失:** 網路收集的遊戲影片只有畫面,**沒有使用者輸入的動作**。 * **Autoencoder 概念的應用:** GENIE 採用類似 VAE 的 Autoencoder 概念來解決這個**資訊缺失**問題。 * 當模型要根據前一個畫面預測下一個畫面時,它缺少了「使用者的動作」。 * **Action Extractor (動作抽取模型):** 該模型被訓練來讀取「之前的遊戲畫面」和「下一個畫面」,試圖歸納出使用者按了哪個按鈕。 * 這個動作抽取模型與圖像生成模型一起訓練,共同目標是讓最終生成的畫面與真實的下一畫面越接近越好。 * **Latent Action (潛在動作):** 由於這些動作是模型猜測出來的,而不是真實收集到的數據,因此被稱為 **Latent Action**。 #### 5.3 GENIE 的應用與未來展望 * 研究假設人可以按的按鈕有八個。 * 結果顯示,即使是猜測出來的 Latent Action,如果輸入一串相同的指令,在不同畫面中也會產生一致的變化,例如人物向右移動。 * GENIE 允許使用者透過輸入指令來隨意創造和遊玩遊戲,甚至可以將真實場景的相片當作遊戲畫面來進行操作。 * 未來應用可能包括開放世界的駕駛模擬器,讓學習者可以在虛擬世界中無限地開車,場景永遠不會停止。 ### 【生成式AI導論 2024】GPT-4o 背後可能的語音技術猜測 大綱 ### I. GPT-4o 語音模式的亮點與市場重視 * **功能特色:** 具備豐富的語音風格(如快慢、輕聲細語、唱歌),能理解語音內容以外的資訊(如喘氣聲、情緒),做到「察言觀色」,並能發出非語音性聲音(如笑聲)。 * **互動性:** 具備自然且及時的互動能力,可以被使用者打斷,並在話語未完時給予回饋。 * **市場趨勢:** 語音互動技術是各大廠(如 Google 的 Project Astra)都非常重視的領域。 ### II. 舊版語音界面的運作與限制 * **誤解澄清:** 多數使用者目前使用的手機版語音界面可能**還不是**真正的 GPT-4o Voice Mode。 * **舊版架構 (串接):** 語音辨識 (ASR) -> 文字 -> 語言模型 (LLM) -> 文字 -> 語音合成 (TTS)。 * **舊版限制:** LLM 可能不知道輸入語音的情緒,且語音合成只有單一說話風格。 ### III. GPT-4o 預測核心技術:End-to-End 整合模型 * **單一模型:** GPT-4o 宣稱其語音模式是 **End-to-End** 架構,只使用一個單一模型處理所有事情,而非複雜的串接架構。 * **語音單位 (Speech Units):** 為了解決聲音訊號的複雜性(1秒有 16,000 個取樣點,若直接接龍耗時),模型運作在壓縮後的 **Speech Units** 上進行「**聲音接龍**」。 * **壓縮架構:** 聲訊號先經 **Encoder** 壓縮成 Speech Unit 序列,再由 **Decoder** 將 Unit 轉回複雜的聲訊號。 * **混合編碼可能性:** 可將語音辨識與編碼器結合(Hybrid Encoder),將能用文字表示的部分用文字表示,無法表示的非內容資訊(如笑聲、情緒)用 Speech Unit 保留。 ### IV. 訓練與數據利用策略 * **訓練基礎:** 語音版語言模型需用大聲聲訊號進行訓練,可能使用了 Open AI 從 YouTube 影片收集的超百萬小時數據。 * **擴大風格:** 大量訓練資料有助於語音合成模型理解內容並給予戲劇性變化,以實現多樣化的聲音風格。 * **知識不足的補救:** 100 萬小時語音數據量遠低於 LLaMA 3 的 15 兆個 Token,因此模型**不能只用語音數據**,必須利用**文字資訊**(如透過原有的 LLM 進行初始化或混合訓練)。 * **對話微調 (Alignment):** 需要收集語音對話數據來微調模型,讓其學會用特定的語者聲音(如 Sky)進行互動。 ### V. 語音互動的獨特挑戰與多模態整合 * **時序猜測:** 與文字介面不同,AI 必須猜測何時該開始說話、何時該停止(例如判斷人類的停頓是等待還是結束)。 * **同時聽說:** 讓模型能同時「聽」外界聲音並「說」出自己的回應,需要將聽與說分成**兩個獨立的頻道**來處理。 * **多模態整合:** GPT-4o 具有多模態能力,需同時處理**聽、說、看**三個頻道。模型會對所有頻道(包括過去的影像和聲音資訊)進行 Attention,以提供自然的回應,即使當前畫面已沒有相關資訊(如 Google Project Astra 找眼鏡的例子)。 --- ### 1. GPT-4o Voice Mode 的能力與與市場背景 GPT-4o 語音模式 (Vice Mode) 的功能引起了廣泛關注。其特別之處包括: * **豐富的語音風格:** 它可以根據指令使用不同的語調說話,例如要求它講快一點、輕聲細語,甚至是用唱的方式表達。 * **理解非語音資訊:** GPT-4o 能夠「察言觀色」,理解語音內容以外的資訊。例如,它可以聽到一個人的喘氣聲,進而知道對方可能氣喘如牛。 * **發出非語音性聲音:** 這個模型非常愛笑,動不動就會笑出來,可以發出非語音性的聲音。 * **自然及時的互動:** 在 Demo 中,使用者話還沒說完,GPT-4o 就能即時回覆(如說一聲「哇」),顯示出其互動的即時性與自然性。 * **行業重視:** 語音互動技術是當前各大科技公司都非常重視的領域,Google 也試出了 Project Astra 的語音互動技術。 ### 2. 舊版語音界面的運作模式與其局限性 首先需要澄清一個誤解:多數人在 5 月 19 日晚間錄製影片時,應該**還沒有**使用到真正的 GPT-4o Voice Mode。大家所使用的可能是 ChatGPT 手機版既有的語音界面。 #### 2.1 舊版架構 (串接式) 舊版語音界面的運作方式是將不同模組串接起來: 1. **語音訊號**透過**語音辨識**轉換成**文字**。 2. **文字**丟給**語言模型**(如 ChatGPT)得到回應。 3. **回應文字**透過**語音合成**產生最終的**語音訊號**。 #### 2.2 舊版局限性與潛在優化 雖然如果語音辨識和語音合成跑得夠快,舊版界面也能達到蠻自然及時的互動,但與 GPT-4o Demo 相比仍有差距: * **情緒傳遞困難:** 如果聲音訊號只轉成文字,語言模型可能無法得知說話者的情緒。 * **風格單一:** 語音合成如果只接收文字輸出,可能只能產生某一種說話風格。 針對舊版架構,可以透過增加額外模組來提升能力: * **情緒辨認模組:** 在語音辨識之外加入語音事件偵測或情緒辨認模組,將偵測到的情緒與辨識結果一起丟給語言模型。 * **輸出符號/指令:** 語言模型除了文字,還可以多輸出一些符號(例如在句尾加上 `(笑)`),丟給語音合成系統。有些語音合成系統(如 Suno AI 開發的 Bark)確實可以識別並產生笑聲。LLM 也可以產生指令,告知語音合成系統應使用何種語氣進行合成(例如 Meta 開發的 Audiobox)。 ### 3. GPT-4o 預測核心:End-to-End 與 Speech Unit GPT-4o 的官方規格已表明其語音模式是一個 **End-to-End (E2E)** 的模型,這意味著它只使用一個單一模型來處理所有事情。 #### 3.1 聲音接龍的必要性 * **文字模型:** 語言模型做的是「文字接龍」,猜測下一個文字 Token。 * **語音模型:** 語音版語言模型做的是「**聲音接龍**」,聽一段聲音,然後猜接下來應該產生什麼樣的聲音。 * **聲音的複雜性:** 語音訊號相較於文字更為複雜。若取樣率是 16KHZ,一秒鐘的聲音訊號由 16,000 個數值構成。若讓聲音訊號一個一個取樣點跑出來做接龍,會非常耗時,產生一秒聲音需跑 16,000 次接龍。 #### 3.2 引入 Speech Unit(語音單元) 為了解決速度問題,語音版語言模型通常不直接對聲音訊號做接龍,而是對**壓縮過**的訊號進行運作。 * **Encoder (編碼器):** 將一段聲音訊號輸入,透過內建的 **Codebook** ,每個程式碼代表某種聲音類型,如人類發的音、笑聲、狗叫聲等),將聲訊號表示成一串 **Code 的序列**,這些 Code 被稱為 **Speech Unit**(聲音的單位)。 * **Decoder (解碼器):** 讀取這些 Speech Unit,將其轉回複雜的聲音訊號。 * **運作方式:** 聲音訊號先透過 Encoder 變為 Speech Unit,語音版語言模型對這些 Unit 進行預測(預測下一個 Unit 是什麼),然後再由 Decoder 將 Unit 轉回訊號。 #### 3.3 傳統 ASR/TTS 與 Speech Unit 的優劣 * **文字壓縮的不足:** 傳統的語音辨識 (ASR) 將聲音壓縮成文字,雖然文字是語音的濃縮版,但文字只代表了語音中**內容的資訊**。例如,如果一段聲音是「好笑」後接「哈哈」幾聲,ASR 可能只會辨識出「好笑」,笑聲的資訊就丟掉了。 * **Speech Unit 的優勢:** 它可以保留文字所無法表達的資訊,例如情緒、笑聲等。 * **Hybrid Encoder (混合編碼器) 的猜測:** 一個可能的做法是將編碼器和語音辨識結合。聲音訊號中能辨識成文字的部分用文字表示,無法用文字表示的部分(如笑聲)用 Speech Unit 符號表示。這樣做的好處是,對於 LLM 來說,文字符號的意義它早已知道,只需學習新的 Speech Unit 符號即可,可能讓學習更為容易。 ### 4. 語音模型訓練的挑戰與數據利用 #### 4.1 訓練步驟與數據來源 語音版語言模型可能採用與文字語言模型類似的三個訓練步驟: 1. **Pre-train (預訓練):** 使用大量沒有標註的語音資料進行訓練。 2. **Fine-tune (微調):** 使用少量有標註的資料進行微調。 3. **RLHF (Alignment):** 使用使用者回饋資料進行微調。 * **數據來源:** 為了獲得大量語音資料,OpenAI 被報導使用了**超過 100 萬小時的 YouTube 影片**來訓練他們的模型。 * **潛在的雜訊學習:** 由於網路影片可能包含音效和背景音樂 (BGM),語音模型可能會將音效和 BGM 也學進去。源文件猜測,這甚至可能成為一個「Feature」(特色),例如 GPT-4o 講話時可能自帶 BGM。 #### 4.2 擴展風格與知識補充 * **豐富性來自數據量:** 過去語音合成系統因為資料不足,輸出的聲音往往平淡(稱為「棒讀」)。而研究(如 Amazon 在今年 2 月的論文)顯示,如果使用大量訓練資料(如超過 10 萬小時),語音合成模型就能理解內容並給予適當的變化。例如,當讀到「輕聲細語 (whisper)」這個詞彙時,模型會自動知道要用比較輕的聲音來唸。 * **知識不足:** 100 萬小時的語音資料約等於 60 億個文字 Token。但相較於 LLaMA 3 預訓練的 15 兆個 Token,這僅是其預訓練資料的 $1/250$。因此,單純用語音資料訓練的模型知識會非常不足。 * **利用文字資訊:** 模型必須利用文字的資訊進行補充。這可能透過以下方式實現: * **初始化:** 使用原有的、已經很厲害的文字語言模型作為語音版語言模型的**初始化**,讓其學會聽懂新的語言(Speech Unit)。 * **混合訓練:** 將語音的符號(Unit)和文字全部倒在一起訓練。 #### 4.3 Alignment 與語者風格固定 * **對話訓練:** 為了讓語音模型學會好好跟人說話,需要收集語音的對話資料來進行微調 (Alignment)。 * **固定語者聲音:** 在 Demo 中,模型講話的聲音是固定的(例如固定是 Sky 這個聲音)。為了讓模型學會用特定語者的聲音講話,需要收集該語者與其他人的大量對話錄音。 * **少量數據 Fine-tune:** 由於模型在 Pre-train 階段可能已經學會模仿各種不同人說話,因此在 Alignment 階段,只需要少量特定語者的語音資料,即可完成學習。 * **語音轉換技術:** 另一個可能性是利用**語音轉換技術**,將對話中不同人的聲音都轉換成目標語者(如 Sky)的聲音,從而產生大量的訓練資料。 ### 5. 語音互動的獨特挑戰與多模態能力 語音界面與文字界面存在本質區別,主要在於時序的處理。 #### 5.1 猜測時機 (Timing Problem) * **文字界面的明確性:** 在文字互動中,使用者輸入完後按 Enter,AI 清楚知道何時輪到它講話。 * **語音界面的模糊性:** 在語音界面中,當使用者話語停頓時,AI 必須猜測:是該輪到它接話?還是使用者還沒講完,應該繼續等待? * **打斷處理:** 當 AI 在講故事時,使用者說「停」,AI 必須判斷人說話的意圖是否是要它停下來。 #### 5.2 聽與說的分離 要讓語音版語言模型能跟人有自然互動,模型必須具備**同時聽與說**的能力。 * **舊模式的困難:** 原來的文字接龍模式是切開的,模型在「說」的時候很難同時「聽」。 * **解決方案:** 將「聽 (Listening)」與「說 (Speaking)」分成**兩個不同的頻道**。 * **聽的頻道:** 記錄外界聲音和人在說什麼(模型的麥克風輸入)。 * **說的頻道:** 記錄模型自己發出過的聲音。 * **運作流程:** 語音版語言模型同時聽這兩個頻道的內容。當人說話時,模型可能輸出 `Silence` 的 Speech Unit 符號。當模型判斷人說完了,它就可能輸出自己的回應(如「哇」),然後接著說「我好期待」。若人在模型講話時再次發出聲音,模型可能會再次輸出 `Silence` 符號,保持安靜,等待人繼續說完。 #### 5.3 多模態的整合 (聽 + 說 + 看) GPT-4o 是一個多模態模型,它可以同時看圖片、影像,這意味著它可能不只有聽和說兩個頻道,還會有一個**視覺頻道**讀取外界影像輸入。 * **Attention 機制:** 在多模態互動中,模型會對**每一個頻道**(聽、說、看,以及它們的歷史資訊)都進行 Attention。 * **回溯記憶:** 即使畫面中或對話中當前沒有提及某個物體,模型也能從過去的視覺資訊中提取記憶。例如,在 Google Project Astra 的 Demo 中,模型記住了先前在畫面中一閃而過的眼鏡,並在之後被問到時回答了眼鏡的位置。 --- 其他課程: [【生成式AI導論 2024】00~02 生成式AI介紹](https://hackmd.io/@JuitingChen/ByiS0S_Aex) [【生成式AI導論 2024】03~05 訓練不了人工智慧?你可以訓練你自己](https://hackmd.io/@JuitingChen/SJZdX5KAlx) [【生成式AI導論 2024】06~08 大型語言模型修練史](https://hackmd.io/@JuitingChen/H1vfEqYCee) [【生成式AI導論 2024】09~11 AI Agent、Transfoermer、可解釋性](https://hackmd.io/@JuitingChen/BybEB9KRxx) [【生成式AI導論 2024】12~14 淺談檢定大型語言模型能力和大型語言模型相關的安全性議題](https://hackmd.io/@JuitingChen/ByyxUcY0le) [【生成式AI導論 2024】15~16 生成式人工智慧的生成策略 和 Speculative Decoding](https://hackmd.io/@JuitingChen/H1sW_mfJZg) [【生成式AI導論 2024】17~18 有關影像的生成式AI 和 GPT-4o 可能的語音技術](https://hackmd.io/@JuitingChen/S1uFKmG1Zx)