<center> <img src = "https://i.imgur.com/N60pkEo.png"> </center> ## Prerequisite ### Unsupervised learning 無監督學習是一種機器學習方法,它不依賴標籤或人工指導,而是通過模型自行發現數據中的結構和模式。 在無監督學習中,算法的目標是從數據中找到隱藏的結構,如群集、主成分、或概率分佈,以便更好地理解數據、降維、特徵提取或生成新的數據樣本。 無監督學習的應用包括聚類、降維、生成模型等。 ### Internal Representation Internal Representation 指的是在機器學習和人工智慧中,系統或模型內部使用的數據表達方式,這種表示方式通常以數值或向量的形式存在,有助於系統理解和處理輸入數據,以實現不同的任務,例如分類、生成或降維。 內部表示應該捕捉到輸入數據的重要特徵和結構,以便有效地完成所需的任務。 ## Goal Autoencoder 是一種神經網絡架構,用於無監督學習和降維,通過將輸入數據壓縮成低維表示並再次還原成原始數據。 ## Background Autoencoder(自編碼器)是一種深度學習模型,主要用於降維、特徵提取和生成數據。 它由兩部分組成: - 編碼器(Encoder) - 解碼器(Decoder) Autoencoder的目標是學習一種壓縮表示,稱為編碼(encoding),將輸入數據轉換成一個低維度的代表,然後再將該代表還原為原始數據。 ![](https://hackmd.io/_uploads/r1OfeJUJT.png) Autoencoder 是一種深度學習模型,主要用於降維、特徵提取和生成數據。它由兩個主要部分組成,分別是編碼器(Encoder)和解碼器(Decoder)。 編碼器的目標是將輸入數據 $\mathbf{x}$ 轉換成壓縮表示 $\mathbf{z}$,這種表示通常比原始數據的維度低。這一過程可以表示為: $$ \mathbf{z} = f(\mathbf{x}) $$ 其中 $f$ 是編碼器的函數。 解碼器的目標是將壓縮表示 $\mathbf{z}$ 還原為與原始數據 $\mathbf{x}$ 尽量相似的數據。這可以表示為: $$ \mathbf{x}' = g(\mathbf{z}) $$ 其中 $g$ 是解碼器的函數。希望 $\mathbf{x}'$ 和 $\mathbf{x}$ 盡可能相似,這樣模型才能正確地學習表示數據。 訓練自編碼器的目標是最小化重建誤差,通常使用均方誤差(MSE)或其他類型的損失函數。通過訓練,自編碼器學會了捕捉輸入數據中的主要特徵,同時降低了維度,這對於數據壓縮和降噪非常有用。 自編碼器還可以用於生成數據,通過在壓縮表示 $\mathbf{z}$ 上加入噪聲,然後使用解碼器生成具有相似特徵的新數據。 --- 其中 AutoEncoder 有以下幾種: 1. **標準自編碼器(Standard Autoencoder)**: 最基本的類型,由編碼器和解碼器組成,用於將輸入數據壓縮成低維度表示並還原它。它們通常用於降維和特徵學習。 2. **變分自編碼器(Variational Autoencoder,VAE)**: VAE是一種生成型自編碼器,它不僅學習壓縮表示,還學習了潛在空間的統計分佈。這使得VAE能夠生成具有類似統計分佈的新數據,並且在生成過程中可以控制數據的特徵。 3. **卷積自編碼器(Convolutional Autoencoder)**: 使用卷積神經網絡(CNN)作為編碼器和解碼器的基礎結構,主要用於處理圖像數據。它們可以有效地捕捉圖像中的空間特徵。 4. **遞歸自編碼器(Recurrent Autoencoder)**: 使用遞歸神經網絡(RNN)或長短期記憶(LSTM)等循環神經網絡來處理序列數據,如時間序列或自然語言文本。它們在序列數據的特徵提取和生成方面非常有用。 5. **去噪自編碼器(Denoising Autoencoder)**: 去噪自編碼器的訓練過程涉及在輸入數據上引入噪聲,然後使用自編碼器恢復原始數據。這有助於自編碼器學習對噪聲魯棒的特徵表示。 6. **稀疏自編碼器(Sparse Autoencoder)**: 稀疏自編碼器強制編碼的表示是稀疏的,這意味著大多數元素為零。這種約束可以幫助自編碼器更好地學習數據中的重要特徵。 7. **疊加自編碼器(Stacked Autoencoder)**: 疊加自編碼器是多個自編碼器層的串聯,每一層都是一個自編碼器。它們可以用於學習更深層次的特徵表示,並在深度學習任務中取得良好的效果。 ## Implementation ## From Scratch [Numpy-Variational-Autoencoder](https://github.com/danielkurniadi/Numpy-Variational-Autoencoder) ## More example [Labelled Faces in the Wild (LFW) Dataset](https://www.kaggle.com/datasets/jessicali9530/lfw-dataset) ## Reference 歡迎更仔細閱讀以下相關內容以了解本篇知識 - [AutoEncoder (一)-認識與理解](https://medium.com/ml-note/autoencoder-%E4%B8%80-%E8%AA%8D%E8%AD%98%E8%88%87%E7%90%86%E8%A7%A3-725854ab25e8) - [重新認識 AutoEncoder,以及訓練 Stacked AutoEncoder 的小技巧](https://medium.com/@elsalin0919/autoencoder-%E6%88%91%E5%B0%8D%E4%B8%8D%E8%B5%B7%E4%BD%A0%E4%B9%8B-%E9%87%8D%E6%96%B0%E8%AA%8D%E8%AD%98autoencoder-%E7%AC%AC%E4%B8%80%E7%AF%87-d970d1ad9971) - [Variational Autoencoders are Beautiful](https://www.compthree.com/blog/autoencoder/)