什麼是 自編碼器(Autoencoder)?

自編碼器是一種神經網路,旨在學習輸入數據的壓縮表示(編碼),然後從該壓縮表示重建原始數據(解碼)。

核心概念

自編碼器(Autoencoder)是一種無監督學習的神經網路,其核心目標是學習輸入數據的壓縮表示(編碼),然後從這個壓縮表示中重建原始數據。它由兩個主要部分組成:編碼器(Encoder)和解碼器(Decoder)。

  • 編碼器(Encoder): 編碼器的作用是將輸入數據轉換為一個低維的、壓縮的表示,稱為編碼(Code)或隱藏表示(Latent Representation)。這個編碼捕捉了輸入數據最重要的特徵。
  • 解碼器(Decoder): 解碼器的作用是將編碼轉換回原始數據的近似值。理想情況下,解碼器的輸出應該盡可能接近原始輸入。

自編碼器的訓練目標是最小化重建誤差(Reconstruction Error),即原始輸入與解碼器輸出之間的差異。通過最小化重建誤差,自編碼器可以學習到輸入數據的有效表示。

自編碼器是一種無監督學習方法,因為它不需要標籤數據。它只需要輸入數據本身,就可以學習到數據的結構和特徵。

運作原理

自編碼器的運作原理可以概括為以下幾個步驟:

  1. 輸入: 自編碼器接收一個輸入 x,例如一張圖片、一段文本或一個時間序列。
  2. 編碼: 編碼器將輸入 x 轉換為一個低維的編碼 z
    • z = encoder(x) 編碼器通常由多個全連接層或卷積層組成,用於提取輸入數據的特徵並降低維度。
  3. 解碼: 解碼器將編碼 z 轉換回原始數據的近似值
    • = decoder(z) 解碼器通常由多個全連接層或反卷積層組成,用於將低維的編碼恢復到原始數據的維度。
  4. 計算重建誤差: 計算原始輸入 x 和解碼器輸出 之間的重建誤差。常用的重建誤差度量包括均方誤差(MSE)和交叉熵。
    • MSE = (1/n) Σ (xi - i)2
    • Cross-Entropy = - Σ xi log(i) + (1 - xi) log(1 - i)
  5. 反向傳播: 使用反向傳播算法,根據重建誤差調整編碼器和解碼器的權重,以最小化重建誤差。

實際應用

自編碼器在許多領域都有廣泛的應用,包括:

  • 降維(Dimensionality Reduction): 自編碼器可以學習到輸入數據的低維表示,可以用於降維,減少數據的儲存空間和計算複雜度。
  • 特徵提取(Feature Extraction): 自編碼器可以學習到輸入數據的有效特徵,可以用於特徵提取,提高機器學習模型的性能。
  • 異常偵測(Anomaly Detection): 自編碼器可以學習到正常數據的分布,對於異常數據,重建誤差會比較大,可以用於異常偵測。
  • 圖像去噪(Image Denoising): 自編碼器可以學習到圖像的結構,可以用於去除圖像中的噪聲。
  • 圖像生成(Image Generation): 變分自編碼器(VAE)是一種特殊的自編碼器,可以用於生成新的圖像。
  • 資料壓縮(Data Compression): 自編碼器可以學習到資料的壓縮表示,可以用於資料壓縮,減少儲存空間。
  • 預訓練(Pre-training): 自編碼器可以用於預訓練深度神經網路,提高模型的性能。

常見誤區

  • 自編碼器只能用於降維: 雖然降維是自編碼器的一個常見應用,但它也可以用於特徵提取、異常偵測、圖像去噪、圖像生成等。
  • 自編碼器的編碼維度必須小於輸入維度: 雖然通常情況下編碼維度小於輸入維度,但也可以使用過完備自編碼器(Overcomplete Autoencoder),其編碼維度大於輸入維度。過完備自編碼器通常需要使用正則化技術,以防止模型學習到恆等函數。
  • 自編碼器是一種監督學習方法: 自編碼器是一種無監督學習方法,它不需要標籤數據。它只需要輸入數據本身,就可以學習到數據的結構和特徵。
  • 自編碼器可以完全重建原始數據: 自編碼器的目標是學習到輸入數據的有效表示,而不是完全重建原始數據。由於編碼過程會丟失一些信息,因此解碼器的輸出通常只是原始數據的近似值。
  • 自編碼器的性能只取決於網路結構: 自編碼器的性能不僅取決於網路結構,還取決於訓練數據、超參數和正則化技術。需要根據具體的任務和數據集進行調整。

相關術語

常見問題

← 回到 自編碼器 快查頁

延伸學習

想看 自編碼器 的完整影片教學?前往 美第奇 AI 學院