## 介紹自編碼器(Autoencoder) 自編碼器(Autoencoder, AE)是一種經典的神經網路架構,屬於自監督學習(self-supervised learning)的一種應用,其核心目的是將輸入資料壓縮(編碼)成一個潛在空間表示(latent representation),再從中重建回原始資料,藉此學得有意義的特徵表示。 ### Autoencoder 的基本架構與原理 自編碼器包含兩個主要部分,分別是編碼器(Encoder)以及解碼器(Decoder),編碼器主要將高維的輸入資料,例如圖片、音訊或文字等,壓縮成低維的向量,稱為 Dimension reduction,而解碼器主要根據這個低維向量重建出接近原始輸入的資料,目標盡量讓輸出與輸入盡可能相似。 ![image](https://hackmd.io/_uploads/r1q6_iiHgg.png) ### Autoencoder 的應用 1. 語音轉換(Voice Conversion) 將說話者 A 的語音內容轉換為說話者 B 的聲音,過程中利用 Feature disentangle 分離「內容資訊」與「語者特徵」,再將 A 的內容資訊加上 B 的語者特徵。 ![image](https://hackmd.io/_uploads/SJWacsiHle.png) 2. 無監督文本摘要(Unsupervised Summarization) 透過文本自編碼器模型學習語義壓縮與還原能力,再結合對抗訓練或循環架構(如 CycleGAN)加上一個 Discriminator 辨別是否為真人寫的摘要內容,如此就能讓 Encoder 的輸出具有可讀性。 ![image](https://hackmd.io/_uploads/rJSe2oiSxe.png) 3. 異常檢測(Anomaly Detection) 自編碼器可用於只接觸過「正常樣本」的場景中,如機器監測、金融詐騙辨識等。測試資料若無法有效重建,則視為潛在異常。 ![image](https://hackmd.io/_uploads/Sy07hoireg.png) ## 介紹變分自編碼器(Variational Autoencoder, VAE) 變分自編碼器(Variational Autoencoder, VAE)是一種結合了深度學習與概率模型的生成模型,由 Diederik P. Kingma 和 Max Welling 於 2013 年提出,奠基於自編碼器(Autoencoder, AE)的架構,然而,AE 的潛在空間通常是不連續或不規則的,難以直接用於生成新樣本。 VAE 的創新在於將潛在空間的表示從固定的向量轉變為概率分佈,具體而言,通常假設潛在向量服從高斯分佈,編碼器不再輸出單一向量,而是生成均值(Mean)和方差(Variance),描述數據在潛在空間的概率分佈,如下圖所示,從這個由編碼器定義的潛在分佈 q(z∣x)(其中 x 是輸入數據)中進行採樣,得到一個潛在向量 z,這個採樣過程引入了隨機性,接著解碼器 p(x∣z) 會接收這個採樣得到的潛在向量 z,並嘗試重建出原始的輸入數據 x,這一特性使VAE成為生成模型的強大工具。 ![image](https://hackmd.io/_uploads/SJ3OJqPlgg.png) ## VAE 訓練過程以及方式 AE的訓練目標函數包含兩個主要部分: 1. 重建損失(Reconstruction Loss): 衡量解碼器輸出的重建數據與原始輸入數據之間的差異,例如使用均方誤差(MSE)或交叉熵(Cross-Entropy),確保模型能夠盡可能準確地還原輸入,學習到數據的有效表徵。 2. KL 散度(Kullback-Leibler Divergence): 衡量編碼器產生的潛在分佈 q(z∣x) 與一個預先設定的先驗分佈 p(z)(通常是標準正態分佈,即均值為 0、方差為 1 的高斯分佈)之間的差異,確保編碼器學習到的潛在分佈盡可能接近標準正態分佈,使得整個潛在空間變得更加規整、平滑且連續。 通過最小化這兩部分損失的總和,VAE不僅學會了如何壓縮和重建數據,更重要的是學會了一個結構良好、適合生成新數據的潛在空間,這使得VAE成為一個強大的生成工具,能夠創造出與訓練數據風格類似但內容全新的圖像、聲音或其他類型的數據。 ## VAE 在 Deepfake 技術中的應用 在 Deepfake 的應用中,訓練過程通常涉及兩個人臉數據集,例如人臉 A和人臉 B。編碼器 A 被訓練來提取人臉 A 的特徵,並生成對應的潛在向量,而解碼器 B 則被訓練來根據這些潛在向量生成人臉 B 的圖像,這樣的設計使得系統能夠將人臉 A 的表情、動作等特徵遷移到人臉 B 上,實現人臉替換的效果,圖中展示的流程正是這種結構的簡化表示:編碼器A提取特徵後,通過潛在向量傳遞信息,解碼器B生成最終的替換結果。 這種訓練策略背後的關鍵在於,所有的 Encoder 都學習提取「通用臉部動作特徵」,而 Decoder 則學會將這些動作特徵對應回各自人物的長相,一旦訓練完成,我們可以使用任意人物的 Encoder 來輸出 latent vector,並用另一人物的 Decoder 進行臉部生成,如此便能實現臉部交換的 Deepfake 效果。 ![image](https://hackmd.io/_uploads/SJL-U9Dllg.png) :::info 生成對抗網絡(GAN)也是 Deepfake 技術中常用的工具,GAN 由生成器和判別器組成,生成器負責創建假數據,而判別器則判斷數據的真偽,二者通過對抗訓練來提升生成圖像的質量,詳細內容可參考此篇文章[生成式對抗網路 (Generative Adversarial Network, GAN)](https://hackmd.io/@lcaMuWOwR1Ox5o5yeTEupA/B1H-exjHC),與自編碼器相比,GAN 生成的圖像通常更為細膩和逼真,這使得它在高解析度的 Deepfake 視頻製作中更為常見。 然而,自編碼器的優勢在於訓練穩定且結構簡單,特別適合初期的特徵提取和遷移任務,在實際應用中,許多Deepfake系統會結合這兩種技術,先用自編碼器進行特徵映射,再用GAN優化細節,以達到最佳效果。 :::