機器學習2021 — 自編碼器(Autoencoder)

機器學習2021 — 自編碼器(Autoencoder)

機器學習2021 — 自編碼器(Autoencoder)

自編碼器(Auto-Encoder):從古老技術到自監督學習

自編碼器(Auto-Encoder,簡稱 AE)是一種歷史悠久且應用廣泛的類神經網路架構,它在現代深度學習領域,特別是自監督學習(Self-Supervised Learning, SSL)中,佔有重要的地位。自監督學習,可以透過沒有標註的資料去學習,或叫做預先訓練(pre-training),訓練完後的模型就可以再接續其他下游應用。有點像先發動馬達熱機,後續就不用花這麼多時間溫車。

自編碼器的基本架構與運作原理

自編碼器的核心功能是將輸入資料壓縮成一個低維度表示,然後再將其重建回接近原始輸入的狀態。

核心組成:編碼器與解碼器

自編碼器由兩個主要的網路組成:

  1. 編碼器(Encoder):負責讀取輸入資料(例如一張圖片或一段語音),並將其轉換成一個向量。這個輸出的向量有多種稱呼,包括 Embedding、Representation(表示)、或是 Code(編碼)。

  2. 解碼器(Decoder):接收 Encoder 輸出的向量作為輸入,並試圖產生一張重建後的圖片或還原原始資料。Decoder 的網路架構可能類似於生成對抗網路(GAN)中的 Generator。

訓練目標:重建與相似性

自編碼器的訓練目標是希望 Encoder 的輸入與 Decoder 的輸出盡可能地接近。

• 如果將圖片視為一個很長的向量,訓練過程就是希望輸入向量與輸出向量之間的距離越接近越好。

• 這種將資料壓縮成向量後再重建回原來的圖片的過程,通常稱為重建(Reconstruction)。

• AE 的概念與 Cycle GAN 類似,兩者都希望資料經過兩次轉換後,能與原始輸入接近。

自監督學習與無需標註的訓練

自編碼器可以被視為 Self-Supervised Learning(自監督學習)的一種 Pre-Train(預訓練)方法。

• 訓練特點: AE 的訓練完全不需要任何標註資料(Label Data)。使用者只需要收集大量的未標註資料(例如大量圖片或文章),就可以進行訓練。因此,它是一種無監督學習(Unsupervised Learning)的方法。

• 與 SSL 的關係: 雖然 Auto-Encoder 在 2006 年就已經存在,比 Self-Supervised Learning 這個詞彙出現得更早(2019 年),但從不需要標註資料訓練的角度來看,AE 可被視為 SSL 的一種方法,概念上與 BERT 的填空題或預測下一個 Token 等任務是類似的。

降維與瓶頸(Bottleneck)

自編碼器在壓縮資料時,實現了降維(Dimension Reduction)的功能。

• 高維到低維: 通常 Encoder 的輸入是一個維度非常高的向量(例如 100×100 的 RGB 圖片是三萬維的向量),而 Encoder 的輸出(Embedding)則被設定為一個維度非常低的向量(例如 10 維或 100 維)。

• 瓶頸: 由於輸入端寬、輸出端也寬,但中間 Encoder 的輸出部分特別窄,這個部分因此被稱為瓶頸(Bottleneck)。Encoder 的作用就是把高維度的東西轉成低維度的東西。

運作成功的基礎

自編碼器能夠成功地將高維度資料壓縮和還原,是因為資料本身的變化是有限的。

• 化繁為簡: 雖然原始資料(例如圖片的像素)表面上可能非常複雜,但實際上,其變化的類型是有限的。Encoder 的作用就是化繁為簡。

• 有限變化: 以圖片為例,並非所有 3×3 的矩陣都是實際的圖片。Encoder 找到了描述這些有限變化的方法,即使是用較少的維度(例如 2 維)也能描述原始資料(例如 3×3 的 9 個數值),這是因為其變化實際上是受限的。

自編碼器的常見變形與進階概念

  1. 去噪自編碼器(De-Noising Auto-Encoder)

去噪自編碼器是一種常見的變形。

• 原理: 將雜訊加入到原始輸入圖片後,再通過 Encoder 和 Decoder,目標是還原未加雜訊的原始圖片。

• 學習任務: 這要求 Encoder 與 Decoder 必須學會將雜訊去除。

• 應用實例: BERT 模型可以被視為一個 De-Noising Auto-Encoder。其中,Masking(遮蔽)相當於雜訊,BERT 模型是 Encoder,其輸出是 Embedding,而後續的解碼模型(不一定是 Linear 的)負責還原被遮蔽(填空)的原來的句子。

  1. 特徵解耦(Feature Disentanglement)

特徵解耦旨在解析 Embedding 向量中糾纏在一起的資訊。

• 目標: 雖然 Encoder 的輸出向量包含了輸入資料(如圖片或語音)的所有重要資訊(例如語音的內容、語者的資訊),但這些資訊通常是混雜在一起的。特徵解耦的目標是知道 Embedding 的哪些維度代表了哪些特定的資訊。

• 應用: 例如在語音處理中,若能解耦語音內容和說話人特徵,就可以實現語者轉換(Voice Conversion),將 A 的內容以 B 的聲音說出,且 A 和 B 不需唸誦相同的句子甚至語言。

  1. 離散潛在表示(Discrete Latent Representation)

傳統的 Embedding 是連續的實數向量(Real Numbers)。離散潛在表示則要求 Embedding 是離散的,例如 Binary(0 或 1)或 One-Hot Vector。

• 優點: 離散表示可以讓 Encoder 的輸出更易於解釋。若強迫 Latent Representation 為 One-Hot Vector,也許可以做到無監督的分類,例如將 0 到 9 的圖片自動分類到 10 種 One-Hot 的 Code 上。

• 著名技術: VQVAE(Vector Quantized Variational Auto-Encoder)是其中最知名的技術,它使用一個可學習的 Codebook,將 Encoder 輸出的連續向量對應到 Codebook 中最相似的離散向量,再丟給 Decoder。

自編碼器的應用

自編碼器在下游任務(Downstream Tasks)中有許多用途。

應用一:資料壓縮與解壓縮

• Encoder 可以作為一種壓縮工具,將高維度的圖片變成低維度的向量。

• Decoder 則可作為解壓縮工具。

• 需要注意的是,這種壓縮是一種 Lossy(失真)的壓縮,就像 JPEG 圖片一樣,因為輸入和輸出無法 100% 完全相同。

應用二:作為生成器(Generator)

• Decoder 可作為 Generator 使用。生成模型(Generative Model)通常需要吃一個向量來產生內容。

• 例如,在 VAE(Variational Auto-Encoder)中,就是將 AE 的 Decoder 拿出來當作 Generator,從一個已知的分布(如 Gaussian Distribution)中取樣一個向量,讓 Decoder 產生一張圖片。

應用三:異常檢測(Anomaly Detection)

異常檢測是在許多場合都有機會應用到的技術。

• 定義: 異常檢測(或稱 Outlier/Novelty Detection)旨在判斷一筆新的資料是否與訓練資料中看過的資料相似。一個資料點是否為「異常」,取決於訓練資料的內容。

• 難點: 異常檢測通常屬於 One Class 分類問題,因為正常的資料很多,而異常的資料(例如詐欺紀錄或網路入侵紀錄)非常少,難以收集,因此不能用一般的二元分類器來處理。

• AE 應用: 拿大量正常的資料來訓練自編碼器。

◦ 正常資料: 如果測試時輸入的也是正常的、訓練時看過的類型,AE 可以順利還原,重建差異(Reconstruction Loss)會很小。

◦ 異常資料: 如果輸入的是異常的、訓練時沒有看過的類型(例如卡通人物圖片),Decoder 會很難還原,輸入與輸出的差異會非常大。

◦ 因此,可以透過檢查重建的結果好壞(Reconstruction Loss)來判斷輸入資料是否為異常狀況。

Comments

Loading comments…

Leave a Comment