20251002 筆記,內容可能有錯,請參考來源影片。 [李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J) 今天影片內容 [【機器學習2021】自編碼器 (Auto-encoder) (上)](https://youtu.be/3oHlf8-J3Nc?si=ktd8iDLajN0vfaE4) [【機器學習2021】自編碼器 (Auto-encoder) (下) 領結變聲器與更多應用](https://youtu.be/JZvEzb5PV3U?si=BwCwAmK1tKgntJdd) ### 【機器學習2021】自編碼器 (Auto-encoder) (上) 大綱 **I. Autoencoder 與 Self-Supervised Learning 的關聯** A. Self-Supervised Learning 的整體流程:大量未標註資料 -> 發明任務 -> 訓練模型 -> 微調 (Fine-tuning) 於下游任務。 B. Autoencoder 是 Self-Supervised Learning 的古老任務,不需標註資料。 **II. Autoencoder 的架構與運作原理** A. 架構組成:Encoder (編碼器) 和 Decoder (解碼器)。 B. 訓練目標:重構讓 Decoder 輸出與 Encoder 輸入盡量接近。 C. 核心輸出:Encoder 輸出的向量(通常較短),被稱為 **Code** 或 **Representation** (表徵)。 **III. Autoencoder 的主要應用:維度縮減 (Dimension Reduction)** A. 原理:將高維度輸入(例如圖片,3萬維)壓縮成低維度 Code(例如 100維)。 B. 概念:Encoder 與 Decoder 連接處的窄點稱為 **Bottleneck**。 C. 高維度資料的變化其實是**有限的**,並非佔據所有高維空間。 D. 效益:簡化資料表示後,下游任務所需的訓練資料量將會減少。 **IV. Autoencoder 的變形與歷史回顧** A. **Denoising Autoencoder :** 1. 方法:輸入圖片加入雜訊。 2. 目標:讓模型還原出沒有雜訊的原始圖片。 B. **BERT 與 DAuto-encoder 的關聯**:BERT (遮蓋語言模型) 可視為一種 Denoising Autoencoder,輸入是被遮蓋 (弄壞) 的句子,輸出是還原 (填空) 的結果。 C. 歷史與深度學習:Autoencoder 概念至少在 2006 年就存在。 D. 歷史訓練方式:過去曾有人相信深度網路的每一層都必須**分開訓練**(例如使用 Restricted Boltzmann Machine)。 --- ### 一、 Autoencoder 作為 Self-Supervised Learning 1. **Self-Supervised Learning 的通用流程**:Self-Supervised Learning 仰賴**大批沒有標註的資料**。研究者必須發明一些**不需要標註資料的任務**(例如 BERT 的遮蓋填空題或 GPT 的預測下一個 Token)來讓模型學習。 2. **Autoencoder 的定位**:Autoencoder 可以算作是 Self-Supervised Learning 的一種關聯方法。它是**很古老**的任務,早於 BERT 或 GPT 出現之前約 15 到 20 年就有了。 3. **不需標註資料**:從不需要用 label data 來訓練這個觀點來看,Autoencoder 可以算作是 Self-Supervised 的一種方法。 ### 二、 Autoencoder 的架構與運作 1. **組成網路**:Autoencoder 包含兩個網路: * **Encoder (編碼器)**:將輸入(例如一張圖片)變成一個**向量**。 * **Decoder (解碼器)**:以 Encoder 輸出的向量作為輸入,產生一張**圖片**(輸出)。 2. **訓練目標**:訓練目標是希望 Decoder 的**輸出**跟 Encoder 的**輸入**越接近越好。這也被稱為**重構 (Reconstruction)**。 3. **輸出概念**:Encoder 輸出的這個向量,也稱為 **Representation** (表徵) 或 **Code** (編碼)。 4. **與 CycleGAN 的相似處**:這個「重構」的概念與 CycleGAN 類似,都是希望輸入的圖片經過兩次轉換後,能被**還原**到原來的輸出。 ### 三、 Autoencoder 的應用:維度縮減 (Dimension Reduction) 1. **維度壓縮**:Autoencoder 常見的應用是用於**維度縮減**(Dimension Reduction)。 2. **高維至低維**:原來的圖片(輸入)是一個維度**非常高**的向量(例如一張 100x100 的 RGB 圖片,有 3 萬維)。經過 Encoder 壓縮後,輸出(Code)是一個維度**非常低**的向量(例如 10 維或 100 維)。 3. **Bottleneck (瓶頸)**:由於 Encoder 的輸入是高維,輸出是低維,這中間特別窄的地方被稱為 **Bottleneck**。 4. **工作原理**: * 儘管輸入圖像是高維度的,但圖片的變化其實是**有限的**(呈現出無限,但實際變數有限)。高維空間中隨機採樣的點通常都不是圖片。 * Encoder 的目的就是利用有限的低維度 Code 來描述複雜的高維圖片。 5. **對下游任務的益處**:如果複雜的圖片能用較簡單的方法來表示,那麼在下游任務的訓練中,就可以只需要**比較少的訓練資料**。 ### 四、 Autoencoder 的變形與歷史背景 1. **Denoising Autoencoder**: * 這是一種常見的變形。 * 操作方式:將要輸入給 Encoder 的圖片**加上雜訊**。 * 還原目標:Decoder 必須還原出**沒有加雜訊的原始圖片**。這迫使模型必須學會**把雜訊去除掉**。 2. **BERT 的視角**:BERT 的訓練任務(遮蓋填空題)可以被視為是一種 **Denoising Autoencoder**。輸入的句子是被 Masked (弄壞) 的,模型必須將被蓋住的地方**還原**回來。 3. **歷史與 Restricted Boltzmann Machine**: * Autoencoder 概念非常古老,至少在 2006 年 Hinton 的 paper 中就被提到過。 * 在深度學習早期(約 15 年前),人們相信要訓練很深的網路,**每一層應該分開訓練**,而不是一起訓練。當時使用一種稱為 **Restricted Boltzmann Machine** 的技術來進行分層的預訓練。 * 過去也有人認為 Autoencoder 必須是對稱的(Encoder 與 Decoder 的權重有關係),但這個限制現在較少使用。 4. **BERT 內部結構的類比**:如果一個 BERT 模型有 12 層,我們可以將前六層視為 Encoder,中間第六層的輸出視為 Code,而將後六層視為 Decoder。 ### 【機器學習2021】自編碼器 (Auto-encoder) (下) 領結變聲器與更多應用大綱 **I. Feature Disentanglement** A. Auto-encoder 編碼 (Code/Representation) 包含大量糾纏的資訊(例如內容、說話者、語氣)。 B. Feature Disentanglement 目標:分離 Code 中的資訊,讓特定維度代表特定特徵(例如前 50 維代表內容,後 50 維代表特徵)。 C. 應用案例:**語音轉換 (Voice Conversion)**,不需相同念句或相同語言即可轉換語音特徵。 **II. 離散潛在表徵 (Discrete Latent Representation)** A. 限制 Code 為二元(Binary)或 One-Hot 向量。 B. 好處:增加解釋性,並可能實現**非監督式分類 (Unsupervised Classification)**。 C. **向量量化變分自編碼器 (VQ-VAuto-encoder)**: 1. 方法:Encoder 輸出與一個學習出的 Codebook 進行相似度比較。 2. 結果:Codebook 裡面的每個向量可能對應到語音中的基本發音單元(如音素 Phoneme)。 **III. Code 的極端形式與 Generator 應用** A. Code 轉化為**文字序列**:Code 代表文章的**摘要**(精華/關鍵內容)。 B. 挑戰與解決:Encoder/Decoder 可能發明**暗號**;需引入 **Discriminator**(像 G A N)來強迫 Code 像人類寫的句子。 C. Decoder 作為**生成器 (Generator)**:Decoder 可以從隨機分佈的向量產生新內容。 D. Auto-encoder 作為**資料壓縮**:Encoder 輸出作為有損壓縮(Lossy Compression)的結果。 **IV. 異常檢測 (Anomaly Detection) — 作業應用** A. 異常檢測定義:偵測新資料是否與訓練時看到的資料**相似 (正常)** 或**不相似 (異常)**。 B. 挑戰:異常資料通常難以收集,故屬於**單類別分類** 問題。 C. Auto-encoder 應用原理: 1. 僅用正常資料訓練 Auto-encoder(重構)。 2. 測試時,正常資料重構誤差小;異常資料重構誤差大。 3. 重構誤差大小可作為判斷異常的標準。 --- ### 一、 Feature Disentanglement 1. **Feature Disentanglement 定義**:將一堆原本**糾纏在一起**(Tangled)的東⻄剪開,就是 Disentangle。 2. **Auto-encoder Code 的狀態**:Autoencoder 輸出的向量(Code 或 Representation)包含了輸入資料的所有重要資訊,例如語音訊號中的**內容**(說了什麼)和**說話者特徵**(誰說的)。然而,這些資訊全都**糾纏**在一個向量裡,我們不知道哪些維度代表內容,哪些維度代表特徵。 3. **Feature Disentanglement 目標**:目標是讓 Encoder 輸出一個向量(例如 100 維),其中前 50 維代表一句話的**內容**,後 50 維代表**說話人**的特徵。 4. **應用範例:語音轉換 (Voice Conversion)**: * **定義**:將 A 的聲音轉變成 B 的聲音。 * **舊技術限制**:過去的技術需要 A 和 B 念**一模一樣**的句子來作為標註資料(Supervised Model)。 * **Feature Disentanglement 實現**:利用 Feature Disentanglement 技術,可以從 A 的聲音中提取**內容**部分,從 B 的聲音中提取**說話特徵**部分(即使他們念的句子不同,甚至語言不同)。 * **重組**:將 A 的內容 Code 與 B 的聲音特徵 Code 拼接起來,丟入 Decoder,即可生成 A 的內容由 B 的聲音說出的音檔。 ### 二、 離散潛在表徵 (Discrete Latent Representation) 1. **Code 限制**:可以限制 Code 向量必須是 **Binary** 或是 **One-Hot** 向量。 2. **Binary Code**:好處是每個維度代表一種**特徵的使用或沒有**,使得解讀(解釋性)更容易。例如,第一維是 1 代表是女生,第三維是 1 代表戴眼鏡。 3. **One-Hot Code**:若強迫 Code 必須是 One-Hot(只有一維是 1),則可用於**非監督式分類**。例如,在手寫數字圖像分類中(0到9共十類),若能訓練出 10 維的 One-Hot Code,每個維度可能正好代表一個數字類別。 4. **VQ-VAuto-encoder (Vector Quantized VAuto-encoder)**: * **核心概念**:實現離散潛在表徵(Discrete Latent Representation)。 * **運作方式**:Encoder 輸出的向量與一個**Codebook**(事先訓練出來的一排向量)計算相似度。選出相似度最高的那一個 Codebook 向量,並將其作為 Decoder 的輸入。 * **結果**:這種技術若用於語音上,Codebook 裡面的每個向量可能會學到最基本的發音單位,例如**音素 (Phoneme)**。 ### 三、 Code 的極端形式與 Auto-encoder 潛在能力 1. **Code 為文字序列**:Code 不一定是向量,也可以是**一串文字**。 2. **Sequence-to-Sequence-to-Sequence**:此時 Auto-encoder 結構變為 (Seq-to-Seq Encoder) $\to$ (文字序列 Code) $\to$ (Seq-to-Seq Decoder)。 3. **潛在應用**:如果這串 Code 文字能夠成功還原原來的長篇文章,那麼這串文字就代表了文章的**精華**或**摘要**。 4. **挑戰與 GAN 解決方案**:Encoder 和 Decoder 在訓練時可能發明**人類看不懂的暗號**。解決方案是導入 **Discriminator**(像 G A N),讓 Discriminator 檢查 Encoder 輸出的 Code 是否像人類寫的句子,強迫 Encoder 產生**可解讀**的摘要。 5. **Decoder 作為生成器**:Autoencoder 的 Decoder 部分可以被視為一個 **Generator**。它接受一個向量(例如從高斯分佈中採樣出來的),然後生成一張圖片或一個物件。 6. **資料壓縮**:Encoder 可以被拿來當作一種**有損壓縮 (Lossy Compression)** 的方法。Encoder 將高維度圖片壓縮成低維度的 Code 向量,這個 Code 向量就可以看作是**壓縮後的檔案**。Decoder 則執行**解壓縮**。 ### 四、 異常檢測 (Anomaly Detection) 1. **任務定義**:異常檢測(Anomality Detection, 異**常**檢測)旨在判斷一筆新的資料是否與訓練時看過的資料**相似**(正常)或**不相似**(異常)。 * **同義詞**:有時也被稱為 Outlier Detection 或 Novelty Detection。 2. **應用場景**:欺詐偵測(如信用卡交易)、網路入侵偵測、醫學變異細胞偵測。 3. **One-Class Classification 挑戰**:此問題通常難點在於**異常資料稀少或難以收集**。因此,通常假設我們只有**大量的正常資料**,而沒有或極少異常資料。這是一個**單類別分類**(One-Class Classification)問題。 4. **Auto-encoder 實現異常檢測**: * **訓練**:只使用**正常資料**(例如:真實的人臉照片)來訓練 Autoencoder。 * **檢測原理**: * 輸入正常照片:Auto-encoder 因為看過這類型的照片,所以可以**順利還原**(重構誤差小)。 * 輸入異常照片:例如輸入**動畫人物**的照片,Auto-encoder 因為訓練時沒看過,會**很難還原**。 * **判斷**:計算輸入和輸出之間的**差異**(重構誤差),若差異非常大,則判斷為異常。 5. **後續話題**:提到模型不僅需具備高正確率,還需要有能力抵抗來自人類的**惡意欺騙**(例如垃圾郵件發送者試圖避開分類器)。 [【機器學習2021】01~02 機器學習和深度學習基本概念簡介](https://hackmd.io/@JuitingChen/SyoNXkdslx) [【機器學習2021】03~08 機器學習任務攻略和最佳化技巧](https://hackmd.io/@JuitingChen/BJ6mXy_slg) [【機器學習2021】09~11 CNN 和 Self attention](https://hackmd.io/@JuitingChen/r1ahLgUngl) [【機器學習2021】12~13 Transformer](https://hackmd.io/@JuitingChen/H1tfXy_ige) [【機器學習2021】14~17 GAN](https://hackmd.io/@JuitingChen/S1adiwvhxg) [【機器學習2021】18~21 自監督式學習](https://hackmd.io/@JuitingChen/ryQG7J_sgl) [【機器學習2021】22~23 Auto-encoder](https://hackmd.io/@JuitingChen/r1sLPr92ge) [【機器學習2021】24~25 Adversarial Attack ](https://hackmd.io/@JuitingChen/HJ6jJIq3ge) [【機器學習2021】26~28 Explainable ML 和 Domain Adaptation](https://hackmd.io/@JuitingChen/SJZzQkdslg) [【機器學習2021】29-30 強化學習-1](https://hackmd.io/@JuitingChen/HJYziZR3gx) [【機器學習2021】31~33 強化學習-2](https://hackmd.io/@JuitingChen/Sy5DoWA3xl) [【機器學習2021】34~35 機器終身學習](https://hackmd.io/@JuitingChen/BytWmyuilg) [【機器學習2021】36~37 神經網路壓縮 ](https://hackmd.io/@JuitingChen/Bk7-m1_jlx) [【機器學習2021】37~40 Meta Learning](https://hackmd.io/@JuitingChen/SkkC6rT2gl)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up